关于SpringMVC中redirect 和forward 请求转发URL路径的小问题

在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方式同理

发布了6 篇原创文章 · 获赞 3 · 访问量 792

猜你喜欢

转载自blog.csdn.net/SmileLucki/article/details/105379648