动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

Spring MVC重定向和转发详解

08-20 17:29 61浏览
举报 T字号
  • 大字
  • 中字
  • 小字

Spring MVC请求方式分为转发、重定向两种,是用forward和redirect关键字在controller层进行处理。本文我们就来探讨一下Spring MVC请求方式中的Spring MVC重定向和转发。

HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有很大的区别。我们依次来看看转发和重定向的定义和路径支持。

1.转发

return "index.jsp"; //这种方式默认的就是转发

return "forward:/index.jsp"; //这是全写的方式

路径支持

相对路径:相对于当前浏览器的地址 ../

根路径:以/开始(/代表当前项目)

绝对路径:不支持的——最大的范围就是当前的项目

@Controller

@RequestMapping("MyCno2")  

public class MyCno2 {

@RequestMapping("demo1")

public String  demo1(){

//return "../index.jsp";

return "/index.jsp";//相当于 return "forward:/index.jsp";

 

}

}

在类上面加 @RequestMapping("MyCno2") 是为避免不同类中方法有重名而导致不知道是进入那个类中的方法,加上之后 /MyCno2/demo1就知道是进入MyCno2类下面的demo1方法。

2.重定向

return "redirect:index.jsp";

路径支持

相对路径:支持使用的——相对于当前的浏览器路径

根路径:/ ——代表当前项目

绝对路径:支持的 如: return "redirect:http://www.baidu.com";

@RequestMapping("demo2")

public String  demo2(){

 

//return "redirect:index.jsp";

//return "redirect: ../index.jsp";

return "redirect:/index.jsp";

//return "redirect:http://www.baidu.com";

}

我们来看一下请求转发和重定向的区别

  1. 请求重定向和请求转发都是web开发中资源跳转的方式。
  2. 请求转发是服务器内部的跳转
  3. 地址栏比发生变化只有一个请求相应

4.可以通过request域对跳转目标的请求

5.请求重定向是浏览器自动发起对跳转目标的请求

6.地址栏会发生变化

7.两次请求相应

8.无法通过request域传递对象

下面讲一讲如何在SpringMVC中实现转发和重定向

1.SpringMVC中仍然可以使用传统方式实现转发和重定向

request.getRequestDispatcher(" ").forward(request,response);

response.sendRedirect(" ");

2.SpringMVC中也提供了快捷方式实现转发和重定向

只要在返回视图时,使用如下方式指定即可:

    /**

     * 实现转发

     */

    @RequestMapping("/hello11.action")

    public String hello11(HttpServletRequest request){

        request.setAttribute("name", "cjj");

        return "forward:hello.action";

    }

    

    /**

     * 实现重定向

     */

    @RequestMapping("/hello12.action")

    public String hello12(HttpServletRequest request){

        request.setAttribute("name", "cjj");

        return "redirect:/hello.action";

    }

3.可以利用转发,实现允许用户访问WEB-INF下保存的指定资源

    /**

     * 通过转发 实现 访问到在WEB-INF目录下的资源

     * @throws Exception

     */

    @RequestMapping("/toFile.action")

    public String toFile(String vname){

        if("form".equals(vname)){

            return vname;

        }else{

            return "err";

        }

    }

Spring MVC重定向和转发在Spring MVC框架体系中发挥着不可忽视的作用,然而这也是容易被我们忽视的知识点。为了避免我们对知识的遗漏,推荐观看本站的Spring MVC视频教程,全面系统Spring MVC的知识讲解和解析,让你再无遗漏知识点!

0人推荐
共同学习,写下你的评论
0条评论
携代码的男孩纸
程序员携代码的男孩纸

24篇文章贡献108038字

作者相关文章更多>

推荐相关文章更多>

DOM渲染的详细过程

QCode09-04 14:38

CSS水平和垂直居中技巧大梳理

Code大师09-04 14:50

mui的input框在IOS系统下无法聚焦或点击多次才能聚焦

不写代码你养我啊08-23 11:14

推荐的-视.频播放器以及在线客服

不写代码你养我啊09-17 18:02

谈谈java多线程的三大特性

要学习了06-18 18:13

发评论

举报

0/150

取消