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