(SpringMVC)響應數據和結果視圖:返回值分類

一、字符串

controller 方法返回字符串可以指定邏輯視圖名,通過視圖解析器解析爲物理視圖地址。

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/testString")
    public String testString(Model model){
        //模擬從數據庫查詢出 User 對象
        User user = new User();
        user.setUname("String 對象");
        user.setAge(30);
        user.setBirthday(new Date());
        //model 對象
        model.addAttribute("user",user);
        return "success";
    }
}

在這裏插入圖片描述

二、void

Servlet 原始 API 可以作爲控制器中方法的參數:

@RequestMapping("/testReturnVoid")
public void testReturnVoid(HttpServletRequest request,HttpServletResponse response)
throws Exception {
}

在controller 方法形參上可以定義 request 和 response,使用 request 或 response 指定響應結果:
(1)使用 request 轉向頁面,如下:
request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);2)也可以通過 response 頁面重定向:
response.sendRedirect("testRetrunString")3)也可以通過 response 指定響應結果, 例如響應 json 數據:
	response.setCharacterEncoding("utf-8");
	response.setContentType("application/json;charset=utf-8");
	response.getWriter().write("json 串");

三、ModelAndView

ModelAndView 是 SpringMVC 爲我們提供的一個對象,該對象也可以用作控制器方法的返回值。
該對象中有兩個方法:
在這裏插入圖片描述
在這裏插入圖片描述

 @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(Model model){
        System.out.println("testModelAndView 方法執行了。。。。");
        // 創建ModelAndView對象
        ModelAndView mv = new ModelAndView();
        System.out.println("testModelAndView方法執行了...");
        // 模擬從數據庫中查詢出User對象
        User user = new User();
        user.setUsername("ModelAndView");
        user.setAge(30);
        // 把user對象存儲到mv對象中,也會把user對象存入到request對象
        mv.addObject("user",user);
        // 跳轉到哪個頁面
        mv.setViewName("success");
        return mv;
    }

注意:我們在頁面上上獲取使用的是 requestScope.username 取的,所以返回 ModelAndView 類型時,瀏覽器跳轉只能是請求轉發。
在這裏插入圖片描述

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