一、字符串
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 類型時,瀏覽器跳轉只能是請求轉發。