返回值分類
1、Sting類型
- controller 方法返回字符串可以指定邏輯視圖名,通過視圖解析器解析爲物理視圖地址。
- controller 方法在提供了 String 類型的返回值之後,默認就是請求轉發。
控制器代碼
@RequestMapping("testSuccess")
public String testSuccess(){
System.out.println("testSuccess成功運行");
return "success";
}
<!--視圖解析器配置-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
通過指定邏輯視圖名,經過視圖解析器解析爲 jsp 物理路徑:/WEB-INF/pages/success.jsp
2、void類型
@RequestMapping(value="/initAdd")
public void initAdd(HttpServletRequest request,HttpServletResponse response) throws
Exception {
System.out.println("請求轉發或者重定向");
response);
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print("你好");
return;
}
3、返回值爲ModelAndView對象
- 若處理器對請求處理過後,不僅要進行跳轉,而且在跳轉過程中還要傳遞數據(或者修改數據),此時使用ModelAndView較爲方便。
@RequestMapping("testModelAndView")
public ModelAndView testModelAndView(){
User user = new User();
user.setUsername("lisi");
user.setName("李四");
user.setAddress("上海");
ModelAndView mv = new ModelAndView();
if(user.getUsername().equals("lisi")){
mv.addObject("user",user);
mv.setViewName("success");
}else {
mv.setViewName("fail");
}
return mv;
}
jsp 代碼
<body>
用戶名:${user.username}<br>
用戶姓名:${user.name}<br>
住址:${user.address}<br>
</body>
SpringMVC提供的提供的轉發和重定向
1、轉發 forward
- 如果用了 formward :則路徑必須寫成實際視圖 url,不能寫邏輯視圖。
@RequestMapping("testforward")
public String testforward(){
System.out.println("testforward成功運行");
return "forward:/WEB-INF/pages/success.jsp";
}
2、重定向
- 如果是重定向到 jsp 頁面,則 jsp 頁面不能寫在 WEB-INF 目錄中,否則無法找到。
@RequestMapping("/testRedirect")
public String testRedirect() {
System.out.println("testRedirect 方法執行了。。。。");
return "redirect:testReturnModelAndView";
}
ResponseBody&&RequestBody 響應/獲取 json 數據
<script type="text/javascript" src="js/jquery.min.js"></script>
<script>
$(function () {
$("#btn").click(function () {
$.ajax({
url:"test/testRequestBody",
contentType:"application/json;charset=UTF-8",
data:'{"username":"hehe","password":"123","age":30}',
dataType:"json",
type:"post",
success:function(data){
alert(data);
alert(data.username);
alert(data.password);
alert(data.age);
}
});
})
})
</script>
使用RequestBodey獲取json數據
@RequestMapping("testRequestBody")
public void testRequestBody(@RequestBody String body){
System.out.println(body);
}
使用RequestBody將json轉換爲javabean對象
@RequestMapping("testRequestBody")
public void testRequestBody(@RequestBody User user){
System.out.println(body);
}
使用ResponseBody將javabean對象轉換爲json數據
@RequestMapping("testRequestBody")
public ResponseBody User testResponseBody(@RequestBody User user){
return user;
}