SpringMVC控制器的返回值分类
返回字符串
回顾:springmvc.xml配置文件中配置 视图解析器 的作用
SpringMVC控制器的方法返回字符串,通过配置视图解析器,可以直接指定逻辑视图(页面名称,不加后缀)的名称,跳转到指定页面。
返回值 void
返回值是void,则会跳转到 视图解析器配置的前缀+所访问的url+视图解析器配置的后缀
如访问的是:http://localhost:8080/user/get
则执行对应方法后就会跳转到: /WEB-INF/pages/user/get.jsp
@Controller
@RequestMapping(value = "/user")
public class UserController {
/*返回值是void
会跳转到 视图解析器的前缀+URL+后缀 对应的页面
/WEB-INF/pages/user/get.jsp
没有该页面则报404的异常
*/
@RequestMapping(value = "/get")
public void getUser(){
System.out.println("getUser void");
}
}
返回值 ModelAndView对象
ModelAndView对象可以用来调整JSP视图
@Controller
@RequestMapping(value = "/user")
public class UserController
/*
ModelAndView
Model:数据模型,用于存储逻辑数据
View:视图对象,用于存储视图名称
*/
@RequestMapping(value = "/mv")
public ModelAndView mvTest(){
ModelAndView modelAndView = new ModelAndView();
//存储逻辑数据,可在跳转JSP页面获取
modelAndView.addObject("name","张三三");
modelAndView.addObject("age","18");
//存储逻辑试图名,跳转到该页面
modelAndView.setViewName("test");
return modelAndView;
}
}
test.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${name},${age}
</body>
</html>
SpringMVC请求转发和重定向
回顾:在控制器中使用原生的ServletAPI对象实现请求转发与重定向
请求转发
/*请求转发
注意:转发的路径,不经过视图解析器了,所以要写完整的路径
*/
@RequestMapping("/forward")
public String forwardTest() throws Exception {
return "forward:/WEB-INF/pages/test.jsp";
}
/*请求转发
可以通过Model将数据放入到request域对象中
*/
@RequestMapping(value = "/forward2")
public String forward(Model model){
model.addAttribute("name","张三三");
model.addAttribute("age","18");
return "forward:/WEB-INF/pages/test.jsp";
}
重定向
/*重定向
可以通过Model将数据放入到request域对象中,也可不使用。
*/
@RequestMapping(value = "/redirect")
public String redirect(Model model){
model.addAttribute("name","张三三");
System.out.println("hello!");
return "redirect:https://blog.csdn.net/qq_45615417";
}
注:重定向SpringMVC也会把参数带过去
__