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