一:提交數據(頁面---> controller)
1:頁面傳輸至後臺的域名稱(name=kevin)需要和後臺controller處理方法的參數一致。
請求地址:/hello.do?name=kevin
@RequestMapping("/hello.do")
public String hello(String name){
System.out.println("參數name:"+name);
return "index.jsp";
}
2:頁面域名稱和後臺controller處理方法的入參不一致。
使用@RequestParam("uname")
請求地址:/hello.do?uname=ukevin
@RequestMapping("/hello.do")
public String hello(@RequestParam("uname")String name){
System.out.println("參數name:"+name);
return "index.jsp";
}
3:頁面傳遞一個對象時。域名稱要和對象的屬性一致。controller的參數就寫對象即可。
請求地址:/hello.do?uname=ukevin
DTO:User的屬性
private String name;
private int age;
@RequestMapping("/hello.do")
public String hello(User user){
System.out.println(user.toString());
return "index.jsp";
}
二:返回數據(後端--->前端)
1:通過ModelAndView展示至前端。(必須要視圖解析器)
視圖解析器配置:
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<!-- 將視圖名 渲染後視圖的前綴 -->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!-- 渲染後視圖的後綴 -->
<property name="suffix" value=".jsp"/>
<!-- 例:視圖名爲:hello 渲染後:/WEB-INF/jsp/hello.jsp 該頁面-->
</bean>
@RequestMapping(value="/hello.do")
public ModelAndView hello(){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "來了,老弟");
return mv;
}
2:通過ModelMap來實現(不需要視圖解析器)
@RequestMapping("/hello.do")
public String hello(ModelMap map){
return "index.jsp";
}
@RequestMapping("/hello.do")
public String hello(@RequestParam("uname")String name,ModelMap model){
System.out.println("參數name:"+name);
//等同於 request.setAttribute("name",name) 頁面可以直接獲取name的值。
model.addAttribute("name",name);
return "index.jsp";
}
三:ModelAndView和ModelMap的區別
相同:都可以將數據封裝顯示至表示層頁面。
不同:ModelAndView可以指定跳轉的視圖,ModelMap不能。(返回頁面有return 決定)
ModelAndView需要視圖解析器,ModelMap不需要。