spring controller中默认转发、forward转发、redirect转发之间的区别


  1. 默认转发
@RequestMapping("/123")
	public String test(HttpSession session) {
		System.out.println("123");
		return "456";
}

服务器在得到/123的请求后调用test方法,输出123然后寻找456.jsp(这里已经配置了视图,全路径为/WEB-INF/jsp/456.jsp)文件

  1. forward转发
@RequestMapping("/123")
	public String test(HttpSession session) {
		System.out.println("123");
		return "forward:456";
}

@RequestMapping("/456")
	public String test1(HttpSession session) {
		System.out.println("456");
		return "456";
}

服务器得到/123的请求后调用test方法,输出123,但是与默认转发不同的是,forward转发会继续寻找/456的解析而不是寻找456.jsp文件,
如果test1方法不存在则会报404的错误,即使456.jsp文件存在

  1. redirect转发
@RequestMapping("/123")
	public String test(HttpSession session, HttpServletRequest hr) {
		System.out.println("123");
		hr.setAttribute("test", "123");
		session.setAttribute("session", 123);
		return "redirect:456";
	}

@RequestMapping("/456")
public String test1(HttpSession session, HttpServletRequest hr) {
	System.out.println("456");
	System.out.println(hr.getAttribute("123"));
	System.out.println(session.getAttribute("session"));
	return "456";
}

效果和forward转发差不多,但是浏览器的地址会被修改为/456结尾,还有redirect后原来的request中的内容会丢失,session中的内容不会丢失,而forward都不会


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM