1、从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。(对应mvc配置,寻找模型,返回视图。)
2、业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,
3、然后让该ModelAndView返回该Spring MVC框架。框架通过调用配置文件中定义的视图解析器,对该对象进行解析,
4、最后把结果数据显示在指定的页面上。
在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。HandlerMapping是这样一种对象,它能够完成客户请求到Controller之间的映射。在Struts中,这种映射是通过struts-config.xml文件完成的。其中,Spring为Controller接口提供了若干实现,例如Spring默认使用的BeanNameUrlHandlerMapping。还有,SimpleUrlHandlerMapping,CommonsPathMapHandlerMapping。
EL表达式取数位置:
Model、Map、ModelMap以及ModelAndView:初始化由Spring创建以上对象。
${msg }=${requestScope.msg }=<%=request.getAttribute("msg")%>
${user.getName()}=${requestScope.user.getName()}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
@RequestMapping ( "/save.do" ) public ModelAndView save(User user){ System.out.println( "------------------" ); System.out.println( "name=" +user.getName()+ " age=" +user.getAge()); System.out.println( "------------------" ); ModelAndView mv = new ModelAndView( "success" ); mv.addObject( "msg" , "添加成功3" ); mv.addObject( "user" , user); return mv; } //直接在处理方法上声明ModelMap对象 springmvc会将ModelMap中的数据携带到前台 @RequestMapping ( "/show.do" ) public ModelAndView show(ModelMap map){ map.addAttribute( "msg" , "modelMap携带参数" ); return new ModelAndView( "success" ); } //直接在处理方法上声明ModelMap对象 springmvc会将ModelMap中的数据携带到前台 @RequestMapping ( "/show1.do" ) public ModelAndView show1(Model map){ map.addAttribute( "msg" , "modelMap携带参数1" ); return new ModelAndView( "success" ); } //直接在处理方法上声明request对象 @RequestMapping ( "/show2.do" ) public ModelAndView show2(HttpServletRequest req){ req.setAttribute( "msg" , "req携带参数" ); return new ModelAndView( "success" ); }
|