在SpringMVC的请求转发中,我们先有如下代码
@Controller
public class chekController {
@Autowired
private IEmployeeDAO dao;
@RequestMapping("/check")
public String check(Employee e,HttpSession session) {
Employee em = dao.login(e.getUsername(), e.getPassword());
if(em!=null) {
session.setAttribute("USER_IN_SESSION", e);
return "redirect:/list";
}
}
@RequestMapping("/list")
public String list(Model m) {
List<Employee> list = dao.listAll();
m.addAttribute("em",list);
return "employee/list";
}
}
我们知道如果return 语句中这样写return "list"; 表示进入视图解析器添加前缀和后缀找到对应的文件
这是我的视图解析器↑
最后变成/WEB-INF/views/list.jsp
但是如果return 中是请求转发的方式呢?
例如上图的return "redirect:/list";
return中使用redirect方式或者forward 方式(return "forward:/list";) 都不会进入视图解析器中解析,而是通过请求转发的方式进行传输。而这样情况又分两种①return "redirect:/list"; ②return "redirect:/list.jsp";
第一种方式,会重定向controller中@RequestMapping("/list")对应的处理器进行处理(如上图代码中的)
第二种方式,则会进入webapp/根目录下面去寻找一个list.jsp的文件并响应
forward方式同理