本文介绍: 主要探讨了SpringMVC中的流程跳转和不同形式的控制器之间的跳转方式。首先回顾了JavaWeb中流程跳转的核心代码和页面跳转方式,并展示了在Web.xml中添加Servlet以及执行这些方式的示例。随后,介绍了Spring MVC中的四种跳转形式,包括控制器到JSP页面的forward和redirect,以及控制器之间相互跳转的方式。最后,讨论了SpringMVC中作用域处理的方式,包括使用Model和ModelMap进行作用域处理,避免了与ServletAPI耦合的问题。
第五章、SpringMVC控制器开发详解 三
5.1 核心要点
5.2 JavaWeb中流程跳转的核心回顾
5.2.1 JavaWeb中流程跳转的核心代码
5.2.2 JavaWeb页面跳转方式回顾
5.2.3测试
5.3 Spring MVC的四种跳转形式
- 四种跳转指的是:在SpringMVC中控制器与JSP或者控制器与控制器之间的跳转。
- SpringMVC的四种跳转,底层上就是对Servlet跳转的封装。
- 默认情况下SpringMVC中控制器通过视图解析器跳转到JSP页面,通过的是forward形式。
5.3.1 控制器forward页面
-
// 方式1 结合ViewResolver进行拼接成完整页面,并进行forward跳转 @RequestMapping("view1") public String view1() { System.out.println("ViewController.view1"); **return "result";** } // 方式2 使用forward关键字,视图解析器的拼接会失效,必须写完整路径 @RequestMapping("view1") public String view1() { System.out.println("ViewController.view1"); **return "forward:/result1.jsp";** }
5.3.2 控制器redirect页面
-
编码
// 使用了redirect关键字,视图解析器的拼接会失效,也要写完整路径 @RequestMapping("view3") public String view3() { System.out.println("ViewController.view1"); **return "redirect:/result.jsp";** }
5.3.3 forward控制器相互跳转
-
是的,例如下图逻辑,登录后进入展示信息的页面,登录逻辑和展示信息逻辑属于两个不同的Controller,所以控制器间需要相互跳转
-
编码
@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"; } } // 执行后控制台输出结果与预期一致
5.3.4 redirect控制器相互跳转
-
编码
@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"; } } // 执行后控制台输出结果与预期一致
5.4 Web作用域处理
5.4.1 JavaWeb中作用域回顾
5.4.2 SpringMVC中作用域处理
-
@RequestMapping("view1") public String view1(HttpServletRequest request) { System.out.println("View2Controller.view2"); request.setAttribute("name","xiaojr"); return "result1"; } // 在result1.jsp中通过${name}获取 //存在问题:与ServletAPI耦合,同时与视图模板技术(jsp、ftl)耦合,在SpringMVC中不建议使用
-
-
# 基于Model的方式 @RequestMapping("view2") public String view2(Model model) { // 等同于 request.addAttribute(); model.addAttribute("name", "suns"); return "result1"; } # 基于ModelMap的方式 同上 @RequestMapping("view3") public String view3(ModelMap modelMap) { modelMap.addAttribute("name", "suns2"); return "result1"; }
下一章:Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(二)视图模板、静态资源访问
-
原文地址:https://blog.csdn.net/m0_72770746/article/details/134724474
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_35672.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。