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"
);
}
|