文章目錄
- 不使用注解修飾
- ModelAndView
- void
- String(推薦)
- 使用注解修飾
- ResponseBody注解
- 常用的HttpMessageConverter
不使用注解修飾
ModelAndView
Controller方法中定義ModelAndView對象并返回,對象中可添加model數據、指定view。
void
在Controller方法形參上可以定義request和response,使用 request 或 response 指定響應結果:
void service(HttpServletRequest request,HttpServletResponse response){}
- 1、使用request轉發向頁面,如下:
request.getRequestDispatcher("頁面路徑").forward(request, response);
- 2、也可以通過response頁面重定向:
response.sendRedirect("url")
- 3、也可以通過response指定響應結果,例如響應json數據如下:
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");
String(推薦)
- 邏輯視圖名
return "item/item-list";
- redirect重定向
return "redirect:testRedirect";
redirect:
相當于“ response.sendRedirect() ”
瀏覽器URL發生改變
Request域不能共享
- forward轉發
return “forward:testForward";
forward:
相當于“ request.getRequestDispatcher().forward(request,response) ”
瀏覽器URL不發送改變
Request 域可以共享
使用注解修飾
ResponseBody注解
- ResponseBody注解的作用:
一、ResponseBody注解可以針對Controller返回值類型,使用內置的9種HttpMessageConverter進行匹配,找到合適的HttpMessageConverter進行處理。
二、HttpMessageConverter處理邏輯分為三步:
(0、數據轉換,比如Java對象轉Json字符串)
1、指定HttpServletResponse的ContentType值。
2、將轉換之后的數據放到HttpServletResponse對象的響應體返回到頁面
- @RequestBody注解的作用和@ResponseBody注解正好相反,它是處理請求參數的http消息轉換的。
常用的HttpMessageConverter
- MappingJacksonHttpMessageConverter
作用:處理POJO類型返回值
默認使用MappingJackson的JSON處理能力,將后臺返回的Java對象(POJO類型),轉為JSON格式輸出到
頁面
將響應體的Content-Type設置為application/json;charset=utf-8
調用response.getWriter()方法將json格式的字符串寫回給調用者。
- StringHttpMessageConverter
作用:處理String類型返回值
將響應體的Content-Type設置為text/plain;charset=utf-8
調用response.getWriter()方法將String類型的字符串寫回給調用者。