文獻參考
http://www.monkey1024.com/framework/1288
http://www.cnblogs.com/dssjustdoit/articles/9387847.html
http://www.cnblogs.com/dssjustdoit/articles/9389087.html
http://www.cnblogs.com/dssjustdoit/articles/9390395.html
http://www.cnblogs.com/dssjustdoit/articles/9392477.html
http://www.cnblogs.com/dssjustdoit/articles/9395355.html
http://www.cnblogs.com/dssjustdoit/articles/9396743.html
http://www.cnblogs.com/dssjustdoit/articles/9402438.html
介紹
spring mvc底層其實就是一個servlet,因此在spring mvc中也存在轉發和重定向的概念。對於轉發的頁面,可以是在WEB-INF目錄下的頁面;而重定向的頁面,是不能在WEB-INF目錄下的。因為重定向相當於用戶再次發出一次請求,而用戶是不能直接訪問WEB-INF目錄下的資源的。
根據索要跳轉的的資源,可以分為跳轉到jsp頁面和跳轉到其他controller。
NOTE 1:轉發:操作是由servlet之間完成的,Request的數據可以共享.一個請求,一個響應.
NOTE 2 重定向:重定向的操作是由用戶完成的,當第一個請求發送過去,服務器產生響應,然后由用戶來進行第二次請求,,服務器再次做出回應,這邊是重定向.
應用
1.返回ModelAndView時的請求轉發
package com.dss.controller; /* * spring MVC 的重定向和轉發 * */ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class ForwardRedirectController { /* * 返回ModelAndView對象的轉發 * */ @RequestMapping("/forwardMAV.do") public ModelAndView forwardMAV() throws Exception{ ModelAndView mv = new ModelAndView(); mv.addObject("type","返回ModelAndView對象的轉發"); //默認使用轉發來進行跳轉 //mv.setViewName("/result"); mv.setViewName("forward:redirect.do"); return mv; } /* * 被跳轉的controller * */ @RequestMapping("/redirect.do") public ModelAndView redirect() throws Exception{ ModelAndView mv = new ModelAndView(); mv.addObject("content","返回跳轉的controller"); mv.setViewName("result"); return mv; } }
在這里,也只改動了controller和jsp的內容,其他的配置文件請參考上面的鏈接(哈哈,自己找吧)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> ${type} <br> ${content } </body> </html>
訪問結果:
注:從一個controller跳轉到另一個controller.
2.ModelAndView的重定向
ForwardRedirectController.java
package com.dss.controller; /* * spring MVC 的重定向和轉發 * */ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class ForwardRedirectController { /* * 返回ModelAndView對象的轉發 * */ @RequestMapping("/forwardMAV.do") public ModelAndView forwardMAV() throws Exception{ ModelAndView mv = new ModelAndView(); mv.addObject("type","返回ModelAndView對象的轉發"); //默認使用轉發來進行跳轉 //mv.setViewName("/result"); mv.setViewName("forward:redirect.do"); return mv; } /* * ModelAndView的重定向 * * */ @RequestMapping("/redirectMAV.do") public ModelAndView redirectMAV() throws Exception{ ModelAndView mv = new ModelAndView(); mv.addObject("type","the redirect of the ModelAndView"); mv.setViewName("redirect:/jsp/result.jsp"); return mv; } }
result.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> ${param.type} </body> </html>
重定向:
重定向成功了,但是,這樣存在這一個問題,ModelAndView沖定向時會有中文參數亂碼,一直也沒找到解決辦法.
等找到了再補上吧.