重定向是将用户从当前处理请求定向到另一个视图(例如 JSP)或处理请求,以前的请求(request)中存放的信息全部失效,并进入一个新的 request 作用域;转发是将用户对当前处理的请求转发给另一个视图或处理请求,以前的 request 中存放的信息不会失效。

转发是服务器行为,重定向是客户端行为。

1)转发过程

客户浏览器发送 http 请求,Web 服务器接受此请求,调用内部的一个方法在容器内部完成请求处理和转发动作,将目标资源发送给客户;在这里转发的路径必须是同一个 Web 容器下的 URL,其不能转向到其他的 Web 路径上,中间传递的是自己的容器内的 request。

在客户浏览器的地址栏中显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。

2)重定向过程

客户浏览器发送 http 请求,Web 服务器接受后发送 302 状态码响应及对应新的 location 给客户浏览器,客户浏览器发现是 302 响应,则自动再发送一个新的 http 请求,请求 URL 是新的 location 地址,服务器根据此请求寻找资源并发送给客户。

在这里 location 可以重定向到任意 URL,既然是浏览器重新发出了请求,那么就没有什么 request 传递的概念了。在客户浏览器的地址栏中显示的是其重定向的路径,客户可以观察到地址的变化。重定向行为是浏览器做了至少两次的访问请求。

在 Spring MVC 框架中,控制器类中处理方法的 return 语句默认就是转发实现,只不过实现的是转发到视图。示例代码如下:

@RequestMapping("/register")
public String register() {return "register";  //转发到register.jsp
}

在 Spring MVC 框架中,重定向与转发的示例代码如下:

package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/index")
public class IndexController {@RequestMapping("/login")public String login() {//转发到一个请求方法(同一个控制器类可以省略/index/)return "forward:/index/isLogin";}@RequestMapping("/isLogin")public String isLogin() {//重定向到一个请求方法return "redirect:/index/isRegister";}@RequestMapping("/isRegister")public String isRegister() {//转发到一个视图return "register";}
}

在 Spring MVC 框架中,不管是重定向或转发,都需要符合视图解析器的配置,如果直接转发到一个不需要 DispatcherServlet 的资源,例如:

return "forward:/html/my.html";

则需要使用 mvc:resources 配置:

<mvc:resources location="/html/" mapping="/html/**" />

Spring MVC的转发与重定向相关推荐

  1. Spring MVC的转发和重定向

    1.可以采取servlet+JSP的方式进行转发和重定向 2.MVC提供了返回String类型的方式进行转发(可以配合配置文件为返回的String添加前缀和后缀)MVC默认转发 重定向:需要在返回值前 ...

  2. springmvc重定向到另一个项目_spring mvc的转发与重定向

    转发与重定向 spring mvc底层其实就是一个servlet,因此在spring mvc中也存在转发和重定向的概念.对于转发的页面,可以是在WEB-INF目录下的页面:而重定向的页面,是不能在WE ...

  3. 【Java学习路线之JavaWeb】Spring MVC框架入门教程

    文章目录 读者 阅读条件 MVC设计模式简介 JSP+JavaBean Servlet+JSP+JavaBean MVC优缺点 优点 缺点 Spring MVC是什么 Spring MVC优点 第一个 ...

  4. Spring MVC重定向和转发及异常处理

    SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器. 对 ...

  5. 2017.3.31 spring mvc教程(六)转发、重定向、ajax请求

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  6. Spring MVC重定向和转发

    技术交流群:233513714 转发和重定向 开始Java EE时,可能会对转发(forward)和重定向(redirect)这个两个概念不清楚.本文先通过代码实例和运行结果图片感性 认识二者的区别, ...

  7. spring mvc controller间跳转 重定向 传参

    spring mvc controller间跳转 重定向 传参 1. 需求背景     需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形 ...

  8. Spring MVC中redirect重定向3种方式(带参数)

    Spring MVC中做form表单功能提交时,防止用户客户端后退或者刷新时重复提交问题,需要在服务端进行重定向跳转,其中redirect是直接跳转到其他页面,有以下3种方法进行重定向. redire ...

  9. Spring MVC页面重定向

    以下示例显示如何编写一个简单的基于Web的重定向应用程序,这个应用程序使用重定向将http请求传输到另一个页面.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framewor ...

最新文章

  1. 走出回归测试困境,爱奇艺精准测试体系建设
  2. redis批量删除key
  3. 在一个IIS上同时运行两个版本ASP.NET报错的
  4. 权限控制相关数据表分析和创建
  5. C# 调用 Microsoft.VisualBasic.Collection
  6. mysql安装使用--2 用户管理
  7. 快速实现一个室内空气质量检测仪
  8. 恐怖地狱火恶魔叉404模板下载
  9. iOS:Covert p12 back to CSR
  10. HTTP之缓存 Cache-Control
  11. MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验...
  12. oracle语句优化积累
  13. 预测算法模型(灰色预测和BP神经网络)
  14. MATLAB导数计算
  15. 如何自动翻译字幕文件(机翻)
  16. 国家信息安全证书体系解读(nisp,cisp)
  17. 百度竞价如何过滤无效点击
  18. 实时渲染3D动画创作大赛
  19. VC++6.0 win32 控制台应用程序 简单应用 附代码
  20. Image 图像转化为 PDF 文件

热门文章

  1. java web集成ldap_关于Java LDAP登录集成
  2. Windows Server 版本信息及支持期 Win10系统各版本服务起止日期。
  3. vSphere 6.5 Upgrade Considerations Part-2 (vSphere 6.5升级注意事项第2部分)
  4. Java基础学习总结(39)——Log4j 1使用教程
  5. 雷军定AI+IoT为小米核心战略,牵手宜家推进生态布局
  6. Linux中同步MySQL
  7. OpenSuse13.2 安装GMT 5.4.2
  8. Postman离线安装包
  9. 把UltraEdit改造成VC
  10. 吃的苦中苦,方为人上人!