spring MVC的轉發和重定向


文獻參考


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沖定向時會有中文參數亂碼,一直也沒找到解決辦法.

等找到了再補上吧.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM