




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
主講人:吳佳云延遲符基于SpringMVC注解分析SpringMVC入門與核心類1一個簡單的基于注解的Controller@Controller//<——①
@RequestMapping("/forum")
publicclassBasicController{
@RequestMapping//<——②
publicvoidlistAllBoard(){
System.out.println("calllistAllBoardmethod.");
}
}在①處使用了兩個注解,分別是@Controller和@RequestMapping注解。@Controller注解讓BasicController成為一個Bean。@RequestMapping注解讓BasicController具備SpringMVCController功能。BasicController.java1一個簡單的基于注解的Controller<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--配置初始化參數(shù),讀取spring-mvc.xml配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!--配置項目啟動時立即加載該servlet-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern><!--配置“/”:攔截所有請求-->
</servlet-mapping>web.xml1一個簡單的基于注解的Controller
<!--配置SpringMVC要掃描的包-->
<context:component-scanbase-package="com.my.ccit.controller"/>
<!--配置視圖解析器-->
<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">
<propertyname="prefix"value="/WEB-INF/pages/"/>
<propertyname="suffix"value=".jsp"/>
</bean>spring-mvc.xml1一個簡單的基于注解的Controller測試2一個Controller處理多個URL請求@Controller
@RequestMapping("/fornum")
publicclassBasicForumController{
@RequestMapping("/listAllBoard")//<——①
publicvoidlistAllBoard(){
System.out.println("calllistAllBoardmethod.");
}
@RequestMapping("/listBoardTopic")//<——②
publicvoidlistBoardTopic(inttopicId){
System.out.println("calllistBoardTopicmethod.");
}
}上面代碼分別在①和②處為listAllBoard()和listBoardTopic()方法標(biāo)注了@RequestMapping注解,這樣/fornum/listAllBoard的URL請求將由listAllBoard()負(fù)責(zé)處理,而/fornum/listBoardTopic?topicId=1的URL請求則由listBoardTopic()方法處理。3一個Controller對應(yīng)一個URL,由請求參數(shù)決定請求處理方法@Controller
@RequestMapping("/fornum")//<——①指定控制器對應(yīng)URL請求
publicclassBasicForumController{
//<—②如果URL請求中包括"method=listAllBoard"的參數(shù),由本方法進(jìn)行處理
@RequestMapping(params="method=listAllBoard")
publicvoidlistAllBoard(){
System.out.println("calllistAllBoardmethod.");
}
//<——③如果URL請求中包括"method=listBoardTopic"的參數(shù),由本方法進(jìn)行處理
@RequestMapping(params="method=listBoardTopic")
publicvoidlistBoardTopic(inttopicId){
System.out.println("calllistBoardTopicmethod.");
}
}在①定義處標(biāo)注的@RequestMapping讓Controller處理所有包含/fornum的URL請求,在②和③處標(biāo)注的@RequestMapping可以很容易通過URL參數(shù)指定Controller的處理方法了。4讓請求處理方法處理特定的HTTP請求方法這樣只有當(dāng)/fornum?method=createTopic請求以HTTPPOST方式提交時,createTopic()方法才會進(jìn)行處理。除了使用@RequestMapping注解的method屬性,來限定當(dāng)前方法匹配哪種類型的請求方式以外,還可以使用組合注解完成客戶端請求方式的限定。常用的組合注解有:@GetMapping:匹配GET方式的請求。@PostMapping:匹配POST方式的請求。@PutMapping:匹配PUT方式的請求。@DeleteMapping:匹配DELETE方式的請求。@PatchMapping:匹配PATCH方式的請求。@Controller
@RequestMapping("/fornum")
publicclassBasicForumController{
@RequestMapping(params="method=createTopic",method=
RequestMethod.POST)
publicStringcreateTopic(){
System.out.println("callcreateTopicmethod.");
return"createTopic";
}
}4讓請求處理方法處理特定的HTTP請求方法@Controller
@RequestMapping("/fornum")
publicclassBasicForumController{
@PostMapping(params="method=createTopic")
publicStringcreateTopic(){
System.out.println("callcreateTopicmethod.");
return"createTopic";
}
}@PostMapping是@RequestMapping(method=RequestMethod.POST)的縮寫,使用組合注解替代@RequestMapping注解,可以省略method屬性,從而簡化代碼。5按參數(shù)名綁定URL參數(shù)@RequestMapping(params="method=listBoardTopic")
//<——①topicId入?yún)⑹侨绾谓壎║RL請求參數(shù)的?
publicvoidlistBoardTopic(inttopicId){
System.out.println("calllistBoardTopicmethod.");
}當(dāng)發(fā)送http://localhost/fornum?method=listBoardTopic&topicId=10的URL請求時,Spring不但讓listBoardTopic()方法處理這個請求,而且還將topicId請求參數(shù)在類型轉(zhuǎn)換后綁定到listBoardTopic()方法的topicId形參上。請求處理方法入?yún)⒌念愋涂梢允荍ava基本數(shù)據(jù)類型或String類型,這時方法入?yún)磪?shù)名匹配的原則綁定到URL請求參數(shù),同時還自動完成String類型的URL請求參數(shù)到請求處理方法參數(shù)類型的轉(zhuǎn)換。6請求處理方法的入?yún)⑹且粋€JavaBean這時,如果使用以下URL請求:http://localhost:8888/fornum/list?method=listBoardTopic&topicId=1&userId=10&userName=tom,topicIdURL參數(shù)將綁定到topicId入?yún)⑸?,而userId和userNameURL參數(shù)將綁定到user對象的userId和userName屬性中。和URL請求中不允許沒有topicId參數(shù)不同,雖然User的userId屬性的類型是基本數(shù)據(jù)類型,但如果URL中不存在userId參數(shù),Spring也不會報錯,此時user.userId值為0。如果User對象擁有一個dept.deptId的級聯(lián)屬性,那么它將和dept.deptIdURL參數(shù)綁定。@RequestMapping(value="/list",params="method=listBoardTopic")
publicvoidlistBoardTopic(inttopicId,Useruser){
System.out.println("topicId:"+topicId);
System.out.println("user:"+user);
System.out.println("calllistBoardTopicmethod.");
}@Data
publicclassUser{
privateintuserId;
privateStringuserName;
}7通過注解指定綁定的URL參數(shù)由于對listBoardTopic()請求處理方法的topicId入?yún)?biāo)注了@RequestParam("id")注解,所以它將和id的URL參數(shù)綁定。@RequestMapping(value="/list",params="method=listBoardTopic")
publicvoidlistBoardTopic(@RequestParam("id")inttopicId,Useruser){
System.out.println("topicId:"+topicId);
System.out.println("user:"+user);
System.out.println("calllistBoardTopicmethod.");
}8通過注解映射URL綁定的占位符瀏覽器中訪問:http://localhost:8888/fornum/list/1?method=listBoardTopic&userId=10&userName=tom,此時路徑上的1將綁定到topicId入?yún)⑸?。@RequestMapping(value="/list/{id}",params="method=listBoardTopic")
publicvoidlistBoardTopic(@PathVariable("id")inttopicId,Useruser){
System.out.println("topicId:"+topicId);
System.out.println("user:"+user);
System.out.println("calllistBoardTopicmethod.");
}通過@PathVariable可以將URL中占位符參數(shù)綁定到控制器處理方法的入?yún)⒅?,即URL中的{xxx}占位符可以通過@PathVariable(“xxx”)綁定到操作方法的入?yún)⒅小?ModelAttribute注解@ModelAttribute是SpringMVC中的一個非常有用的注解,它主要被用來綁定請求參數(shù)到對象上,然后將這個對象添加到模型(Model)中。@ModelAttribute注解的主要作用:綁定請求參數(shù)到對象添加到model中用于數(shù)據(jù)預(yù)處理9ModelAttribute注解1綁定請求參數(shù)到對象@RequestMapping(value="/list",params="method=listBoardTopic")
publicvoidlistBoardTopic(@ModelAttribute("user")Useruser){
System.out.println("user:"+user);
System.out.println("calllistBoardTopicmethod.");
}當(dāng)請求到達(dá)控制器方法時,SpringMVC會嘗試將請求參數(shù)綁定到帶有@ModelAttribute注解的方法參數(shù)或?qū)ο蟮膶傩陨?,代碼如下所示。瀏覽器中訪問http://localhost:8888/fornum/list?method=listBoardTopic&userId=10&userName=tom,此時路徑上請求參數(shù)userId=10和userName=tom將被綁定到user入?yún)⑾鄳?yīng)的屬性上。9ModelAttribute注解2添加到model中帶有@ModelAttribute注解的對象會被添加到model中,這樣它就可以在視圖中被訪問。這意味著你可以在視圖中直接使用該對象,而無需在控制器方法中顯式地將它添加到model中,代碼如下所示。@RequestMapping(value="/list/showuser",params="method=listBoardTopic")
publicStringlistBoardTopic(@ModelAttribute("user")Useruser){
System.out.println("user:"+user);
System.out.println("calllistBoardTopicmethod.");
return"userInfo";
}9ModelAttribute注解2添加到model中<form>
<div>
<labelfor="uid">用戶ID:</label>
<inputtype="text"id="uid"name="userId"value="${user.userId}"/>
</div>
<div>
<labelfor="uname">用戶名:</label>
<inputtype="text"id="uname"name="userName"value="${user.userName}"/>
</div>
</form>userInfo.jsp瀏覽器中訪問http://localhost:8888/fornum/list/showuser?method=listBoardTopic&userId=10&userName=tom,頁面如圖所示,說明帶有@ModelAttribute注解的user對象成功被添加到model中。9ModelAttribute注解3用于數(shù)據(jù)預(yù)處理可以使用@ModelAttribute注解在控制器方法之前執(zhí)行一些預(yù)處理操作,比如從數(shù)據(jù)庫加載數(shù)據(jù)或執(zhí)行其他邏輯。這通常用于填充表單的默認(rèn)值或進(jìn)行其他初始化操作。@ModelAttribute("user")
publicUserpopulateUser(){
Useruser=newUser(222,"wangwu");
returnuser;
}
@RequestMapping("/test")
publicvoidtest(Useruser){
System.out.println(user);
}瀏覽器中訪問http://localhost:8888/fornum/test,控制臺輸出,如圖所示,說明@ModelAttribute("user")數(shù)據(jù)預(yù)處理成功。10@SessionAttribute注解@SessionAttributes(“user”)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河道垃圾清理施工方案
- 外墻保溫真石漆勞務(wù)分包合同
- 房屋居間租賃服務(wù)合同
- 嘉興拆煙囪施工方案
- 合同協(xié)議生產(chǎn)合同
- 心理學(xué)認(rèn)知過程與個性發(fā)展題庫
- 人力資源行業(yè)數(shù)據(jù)統(tǒng)計表一覽(按職位類型)
- 個人學(xué)習(xí)成長記錄表
- 吉林壓花地坪施工方案
- 建筑勞務(wù)木工班組合同
- Unit 2 Special Days(說課稿)2023-2024學(xué)年人教新起點(diǎn)版英語五年級下冊
- 腦室鏡手術(shù)配合
- 2024年湖南省中考數(shù)學(xué)試卷含答案
- 濃香白酒采購合同范例
- GB/T 11981-2024建筑用輕鋼龍骨
- 藥店信息化管理制度
- 2023年山東省德州市中考化學(xué)試題
- 全媒體運(yùn)營師試題庫(含答案)
- DB11T 1832.10-2022 建筑工程施工工藝規(guī)程 第10部分:裝飾裝修工程
- 氣胸完整版本
- 湘教版六年級下冊全部美術(shù)教案課程
評論
0/150
提交評論