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