河南企业网站建设价格,站长工具seo综合查询降级,wordpress正文美化,qq空间登录学习视频#xff1a;孙哥说SpringMVC#xff1a;结合Thymeleaf#xff0c;重塑你的MVC世界#xff01;#xff5c;前所未有的Web开发探索之旅 第五章、SpringMVC控制器开发详解 三
5.1 核心要点 3.流程跳转 5.2 JavaWeb中流程跳转的核心回顾
5.2.1 JavaWeb中流程跳转的核… 学习视频孙哥说SpringMVC结合Thymeleaf重塑你的MVC世界前所未有的Web开发探索之旅 第五章、SpringMVC控制器开发详解 三
5.1 核心要点 3.流程跳转 5.2 JavaWeb中流程跳转的核心回顾
5.2.1 JavaWeb中流程跳转的核心代码 5.2.2 JavaWeb页面跳转方式回顾 5.2.3测试 在web.xml里添加Servlet然后执行 可以看到通过url拼接可以获取传递的数据
5.3 Spring MVC的四种跳转形式
四种跳转指的是在SpringMVC中控制器与JSP或者控制器与控制器之间的跳转。 Controller - - forward — JSPController - - redirect— JSPController - - forward — ControllerController - - redirect— Controller 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中不建议使用SpingMVC中request作用域的处理 代码 # 基于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;
}Model、ModelMap相关细节分析 通过Model、ModelMap进行作用域处理可以解决视图模板技术耦合的问题 因为SpringMVC通过视图解析器区别JSP、FreeMaker再将Model、ModelMap的数据放到request或root里面运行。 SpringMVC中提供Model和ModelMap两种方式处理request作用域他们的区别是什么 虽然两者表现形式以及声明的形参类型都不同但是在运行时SpringMVC会动态提供对应的实现类型名字是BindingAwareModelMap。所以本质上两者相同。 下一章Spring MVC学习随笔-控制器(Controller)开发详解控制器跳转与作用域二视图模板、静态资源访问