SpringMvc響應資料和結果檢視
阿新 • • 發佈:2020-07-31
響應資料和結果檢視
返回值分類
字串
controller 方法返回字串可以指定邏輯檢視名,通過檢視解析器解析為物理檢視地址。 //指定邏輯檢視名,經過檢視解析器解析為 jsp 物理路徑:/WEB-INF/pages/success.jsp @RequestMapping("/testReturnString") public String testReturnString() { System.out.println("AccountController 的 testReturnString 方法執行了。。。。"); 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 為我們提供的一個物件,該物件也可以用作控制器方法的返回值。
該物件中有兩個方法:
例項程式碼:
//返回值為ModelAndView
@RequestMapping("/test01")
public ModelAndView test01(){
User user = new User();
// user.setUname("張三");
user.setAge(12);
ModelAndView mv=new ModelAndView();
mv.addObject("user",user);
mv.setViewName("ok");
return mv;
}
ok.jsp程式碼:
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>入門成功</h1>
${user.uname}
${user.age}
</body>
</html>
forward轉發
//forward轉發方式
@RequestMapping("/test02")
public String test02(){
System.out.println("forward");
return "forward:/WEB-INF/pages/ok.jsp";
}
需要注意的是,如果用了 formward:則路徑必須寫成實際檢視 url,不能寫邏輯檢視。
它相當於“request.getRequestDispatcher("url").forward(request,response)”。使用請求
轉發,既可以轉發到 jsp,也可以轉發到其他的控制器方法。
Redirect 重定向
@RequestMapping("/test03")
public String test03(){
System.out.println("redirect");
return "redirect:/index.jsp";
}
它相當於“response.sendRedirect(url)”。需要注意的是,如果是重定向到 jsp 頁面,則 jsp 頁面不
能寫在 WEB-INF 目錄中,否則無法找到。
ResponseBody 響應 json 資料
作用:
該註解用於將 Controller 的方法返回的物件,通過 HttpMessageConverter 介面轉換為指定格式的
資料如:json,xml 等,通過 Response 響應給客戶端
需求:
使用@ResponseBody 註解實現將 controller 方法返回物件轉換為 json 響應給客戶端。
前置知識點:
Springmvc 預設用 MappingJacksonHttpMessageConverter 對 json 資料進行轉換,需要加入
jackson 的包。
@RequestMapping("/test04")
public @ResponseBody User test04(@RequestBody User user){
System.out.println("執行");
user.setAge(13);
user.setUsername("張三");
user.setPassword("12346845");
return user;
}
Jsp中的程式碼:
<script src="${pageContext.request.contextPath}/js/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("#open").click(function () {
$.ajax({
url:"${pageContext.request.contextPath}/user/test04",
contentType:"application/json;charset=UTF-8",
data:'{"username":"hehe","password":"123456","age":12}',
type:"post",
dataType:"json",
success:function (data) {
alert(data);
alert(data.username);
alert(data.password);
alert(data.age);
}
});
});
})
結果: