SpringMVC數據傳輸,ModelAndView和ModelMap的區別

一:提交數據(頁面---> 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不需要。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章