學(xué)習(xí)視頻:孫哥說(shuō)SpringMVC:結(jié)合Thymeleaf,重塑你的MVC世界?。八从械腤eb開(kāi)發(fā)探索之旅
第五章、SpringMVC控制器開(kāi)發(fā)詳解 三
5.1 核心要點(diǎn)
3.流程跳轉(zhuǎn)
5.2 JavaWeb中流程跳轉(zhuǎn)的核心回顧
5.2.1 JavaWeb中流程跳轉(zhuǎn)的核心代碼
5.2.2 JavaWeb頁(yè)面跳轉(zhuǎn)方式回顧
5.2.3測(cè)試
在web.xml里添加Servlet然后執(zhí)行
可以看到通過(guò)url拼接可以獲取傳遞的數(shù)據(jù)
5.3 Spring MVC的四種跳轉(zhuǎn)形式
-
四種跳轉(zhuǎn)指的是:在SpringMVC中控制器與JSP或者控制器與控制器之間的跳轉(zhuǎn)。
- Controller - - forward —> JSP
- Controller - - redirect—> JSP
- Controller - - forward —> Controller
- Controller - - redirect—> Controller
- SpringMVC的四種跳轉(zhuǎn),底層上就是對(duì)Servlet跳轉(zhuǎn)的封裝。
- 默認(rèn)情況下SpringMVC中控制器通過(guò)視圖解析器跳轉(zhuǎn)到JSP頁(yè)面,通過(guò)的是forward形式。
5.3.1 控制器forward頁(yè)面
-
編碼
// 方式1 結(jié)合ViewResolver進(jìn)行拼接成完整頁(yè)面,并進(jìn)行forward跳轉(zhuǎn) @RequestMapping("view1") public String view1() { System.out.println("ViewController.view1"); **return "result";** } // 方式2 使用forward關(guān)鍵字,視圖解析器的拼接會(huì)失效,必須寫(xiě)完整路徑 @RequestMapping("view1") public String view1() { System.out.println("ViewController.view1"); **return "forward:/result1.jsp";** }
5.3.2 控制器redirect頁(yè)面
-
編碼
// 使用了redirect關(guān)鍵字,視圖解析器的拼接會(huì)失效,也要寫(xiě)完整路徑 @RequestMapping("view3") public String view3() { System.out.println("ViewController.view1"); **return "redirect:/result.jsp";** }
5.3.3 forward控制器相互跳轉(zhuǎn)
-
是否存在控制器間相互跳轉(zhuǎn)的需求
是的,例如下圖邏輯,登錄后進(jìn)入展示信息的頁(yè)面,登錄邏輯和展示信息邏輯屬于兩個(gè)不同的Controller,所以控制器間需要相互跳轉(zhuǎn)
-
編碼
@Controller @RequestMapping("forwardController") public class ForwardController { @RequestMapping("forward1") public String forward1() { System.out.println("ForwardController.forward1"); return "forward:/forwardController/forward2"; } @RequestMapping("/forward2") public String forward2() { System.out.println("ForwardController.forward2"); return "result"; } } // 執(zhí)行后控制臺(tái)輸出結(jié)果與預(yù)期一致
5.3.4 redirect控制器相互跳轉(zhuǎn)
-
編碼
@Controller @RequestMapping("redirectController") public class RedirectController { @RequestMapping("redirect1") public String redirect1() { System.out.println("RedirectController.redirect1"); return "redirect:/redirectController/redirect2"; } @RequestMapping("/redirect2") public String redirect2() { System.out.println("RedirectController.redirect2"); return "result"; } } // 執(zhí)行后控制臺(tái)輸出結(jié)果與預(yù)期一致
5.4 Web作用域處理
5.4.1 JavaWeb中作用域回顧
- 三種作用域及其使用場(chǎng)景回顧

5.4.2 SpringMVC中作用域處理
- 基本使用方式及其存在的問(wèn)題
```java
@RequestMapping("view1")
public String view1(HttpServletRequest request) {
System.out.println("View2Controller.view2");
request.setAttribute("name","xiaojr");
return "result1";
}
// 在result1.jsp中通過(guò)${name}獲取
//存在問(wèn)題:與ServletAPI耦合,同時(shí)與視圖模板技術(shù)(jsp、ftl)耦合,在SpringMVC中不建議使用
```
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-747846.html
下一章:Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開(kāi)發(fā)詳解:控制器跳轉(zhuǎn)與作用域(二)視圖模板、靜態(tài)資源訪問(wèn)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-747846.html
到了這里,關(guān)于Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開(kāi)發(fā)詳解:控制器跳轉(zhuǎn)與作用域(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!