這篇文章帶給大家的內容是關於SpringMVC基礎配置的詳細介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
今天我們來說說SpringMVC的基礎配置。目前越來越多的主流框架都支援註解,同時我們無敵的Spring也支援基於註解的"零配置"。
註解相比XML的優點:它可以充分利用Java的反射機制來取得類別中的結構信息,這些資訊可以有效減少配置的工作,註解和Java程式碼位於一個檔案中,更有利於維護。
注意:必須在Spring2.5版本之後才可以使用註解方式。
註解方式將Bean的定義資訊和Bean的實作類別結合在一起,Spring提供的註解有。
@Component:宣告一個普通的Bean類別
@Repository:宣告一個持久層Dao類別
@Service:宣告一個業務層類別
@Controller:宣告一個控制器類別
這4個註解相信小夥伴們已經非常的熟悉了,廢話就少說了。我們使用註解千萬不要忘了在類別中掃描! ! !
@RequestMapping(非常核心的註解),這個註解是用來指定控制器的請求URL。
在控制器的類別定義:提供初步的映射訊息,為該類別下所有請求方法添加一個前綴。
在控制器類別中的方法定義:提供進一步的映射訊息,提供方法的請求路徑
DispacherServlet截獲請求後,就透過控制器上的@RequestMapping提供的映射資訊確認請求所對應的處理方法。
@Controller @RequestMapping("user") public class UserController { @RequestMapping("/hello") public String hello(){ return "hello"; } }
這時候我們要求的路徑是http://localhost:8080/SpringMvcDemo2/user/hello
@RequestMapping除了映射請求URL請求,還可以使用請求方法,請求參數和請求頭的請求,註解中有幾個參數:
1)value:表示請求的URL
2)method:表示請求的方式(GET/POST)
3)params:表示請求的參數
4)heads:請求頭
他們之間的是與的關係,聯合使用多個請求可以讓請求更加的精確化。
@RequestMapping(value="hello2",method=RequestMethod.POST,params={"username","userpass"},headers="contentType=text/*") public String hello2(){ return "hello"; }
這段程式碼表示,請求的位址是hello請求方式為Post必須帶username,userpass兩個參數,請求頭contentType必須是text/開頭。我們可以寫兩個URL一樣的方法,請求方式一個POST另一個GET當時會嚴格根據設定進行呼叫
#@RequestMapping同時也支援Ant風格的URL,在Ant中支援3種通配符。
? :表示配置一個字元。
*:符合任意字元
**:符合多層路徑
#在SpringMVC中對參數的處理:
@pathVariable:URL範本方式
用來映射URL中的佔位符,映射的變數名稱必須和占位符中的名稱一致,像這種我們的請求位址就會時http://localhost:8080/SpringMvcDemo2/user/testPathVariable/Miya,這個miya就是我們傳過去的參數,在傳統的URL中testPathVariable? username=miya但是這種不利於百度的收錄。
@RequestMapping("/testPathVariable/{username}") public String hello3(@PathVariable("username")String username){ System.out.println("username : " + username); return "hello"; }
@RequestParam:取得請求參數,如果請求參數名字和類型的名字一致我們可以省略吊這個註解,一樣可以接受到值。
@RequestMapping("/textParam") public String hello4(@RequestParam("username")String username,@RequestParam("userpass")String userpass){ System.out.println("userpass : " + userpass); return "hello"; }
@RequestHeader:取得請求頭的參數
在這裡有三個參數,value:指定參數的名稱,required:指定參數是否為必填,defualtValue:指定參數的預設值。
@RequestMapping("/testRequestHeader") public String hello5(@RequestHeader("Accept-Language") String language){ System.out.println("language=" + language); return "hello"; }
@CookieValue:用來取得客戶端Cookie的資訊。
@RequestMapping("/testCookieValue") public String hello6(@CookieValue("JSESSIONID")String sessionid){ System.out.println("sessionid=" + sessionid); return "hello"; }
SpringMVC可以使用ServletAPI作為請求方法的參數
@RequestMapping("/testServletAPI") public String hello7(HttpServletRequest request,HttpServletResponse response,HttpSession session){ //我们可以在这里使用 return "hello"; }
SpringMVC提供了以下幾種處理模型資料的方式。
1)ModelAndView:將處理方法的傳回類型設定為ModelAndView方法體可透過此模型物件新增模型資料。既包含視圖,也包含模型資訊
@RequestMapping("/testModelAndView") public ModelAndView hello8(){ ModelAndView modelAndView = new ModelAndView("hello"); //添加单个值 modelAndView.addObject("h","Hello Spring MVC"); return modelAndView; }
2)Map及形參:當形參為Map,Model,ModelMap時,處理方法返回時, Map中的資料會自動加入模型中。
Spring MVC在內部使用了一個Model介面儲存資料的數據,在呼叫方法前會建立一個隱含的模型物件作為資料模型的儲存容器。若傳入的參數為Map,Model,當ModelMap時,SpringMVC會自動儲存到容器中
@RequestMapping("/testMap") public String hello9(Map<String,Object> map){ map.put("mapdata", "map data"); return "hello"; }
3)@SessionAttributes:将这个模型中的某个属性存储到Session中,以便多个请求之间共享这个属性,只能用来修饰类。在里面的方法如果参数容器中如map里卖弄保存一个与定义的属性名字相同会保存到容器中共享
4)@ModelAttribute:方法形参标记该注解后,形参对象就会放到模型中。
SpringMVC在调用方法之前会逐个调用方法上标注了这个注解的方法。将@ModelAttribute中的属性保存到map中,可在执行表单提交生成对象之前,替换执行方法名相同的参数。
@ModelAttribute public User getUser(){ User user = new User(); System.out.println("调用 getUser 方法"); //默认保存名字为类名首字母小写的user对象到Request中 return user; } @ModelAttribute public void getUserById(Integer id,Map<String,Object> map){ User myuser = new User(); map.put("myuser", myuser); //手动指定user对象的名称,到Request中 System.out.println("调用 getUser 方法"); }
由@SessionAttributs会引发一个很容易轻视的错误当类使用@SessionAttributes修饰,而方法中使用了和SessionAttributes修饰同名的映射参数,确没有添加@ModelAttribute修饰时,则会报错。
以上是SpringMVC基礎配置的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

本文解釋了用於構建分佈式應用程序的Java的遠程方法調用(RMI)。 它詳細介紹了接口定義,實現,註冊表設置和客戶端調用,以解決網絡問題和安全性等挑戰。

本文詳細介紹了用於網絡通信的Java的套接字API,涵蓋了客戶服務器設置,數據處理和關鍵考慮因素,例如資源管理,錯誤處理和安全性。 它還探索了性能優化技術,我

本文詳細介紹了創建自定義Java網絡協議。 它涵蓋協議定義(數據結構,框架,錯誤處理,版本控制),實現(使用插座),數據序列化和最佳實踐(效率,安全性,維護


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能