SpringMVC中控制器方法可以返回的數據類型

1.返回ModelAndView

    @RequestMapping("/test01.action")
    public ModelAndView test01(){
        ModelAndView mav = new ModelAndView();
        mav.addObject("k1","v1");
        mav.addObject("k2","v2");
        mav.setViewName("my01test01");
        return mav;
    }

2.返回字符串視圖名

    @RequestMapping("/test02.action")
    public String test02(Model model){
        model.addAttribute("k1","v1");
        model.addAttribute("k2","v2");
        return "my01test02";
    }

3."forward:xxx"字符串,實現請求轉發

    @RequestMapping("/test03.action")
    public String test03(){
        return "forward:/index.jsp";
    }

4."redirect:xxx"字符串,實現請求重定向

    @RequestMapping("/test04.action")
    public String test04(){
        return "redirect:/index.jsp";
    }

5.返回void

當控制器方法的返回值類型爲void時,SpringMVC會自動採用默認視圖名作爲視圖名稱使用
所謂的默認視圖名 等於 將當前控制器方法路徑 去除後綴 得到的名稱
/my01/test05.action --> /my01/test05

    @RequestMapping("/test05.action")
    public void test05(){
    }

6.被@ResponseBody修飾的控制器方法返回String類型

被@ResponseBody註解修飾的控制器方法,返回任何數據都會加入到響應的實體內容中被髮送給瀏覽器

可以爲響應數據設置編碼防止亂碼

    @ResponseBody
    @RequestMapping(value="/test06.action",produces = "text/html;charset=utf-8")
    public String test06(HttpServletResponse response){
        return "abc中xyz";
    }

7.被@ResponseBody修飾的控制器方法返回json數據

被@ResponseBody註解修飾的控制器方法,返回任何數據都會加入到響應的實體內容中被髮送給瀏覽器
如果返回的是一個自定義對象,則自定義對象中的數據會轉爲json格式後發送給瀏覽器

@ResponseBody
    @RequestMapping(value="/test07.action")
    public User test07(HttpServletResponse response){
        return new User("zs",19,"bj");
    }

8.其他情況

除了以上案例講解的返回值之外,返回任何數據都會被加到Model中作爲模型數據使用,其值爲返回值,其鍵爲當前方法返回值類型首字母轉小寫之後採用默認視圖(當前控制器方法訪問路徑去後綴)名作爲本次訪問結束後的視圖名稱來使用(對比7沒有@ResponseBody)

    @RequestMapping("/test08.action")
    public User test08(){
        return new User("zl",99,"sh");
    }

 

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