摘要
之前项目1.0使用structs/spring,现在升级2.0是基于SpringMVC/Spring框架来开发的,在开发的过程中经常需要在后台将一个请求重定向到另一个url,原先通过structs中的配置redirect很容易带参数到新的url中,在SpringMVC中是通过URL模板和flash属性两种方式实现重定向的,下面主要跟踪源码来观察找一下SpringMVC是如何实现这两种方式的重定向。其中:RedirectAttributes是SpringMVC3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的。
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。相较于Struts,其有如下优势:
- 易用性:SpringMVC上手简单,并且可以与Spring无缝结合,毕竟都是一个公司的产品,学习起来也比较简单,比如从前端给对象填充值,他的处理就比Struts2简单多了,再比如对Restful风格的URL的支持,这些SpringMVC都比Struts2做的好N倍。
- 安全性:Struts2几乎每年都会出漏洞补丁,其中有些是较致命的。而Spring MVC到目前为止还没有发现比较严重的漏洞。
- 可扩展性:Spring MVC依靠Spring这颗大树,Spring的实力我想大家不用怀疑吧,包括版本的更新、迭代这些都是经过历史见证的
基于以上,Spring MVC逐步成为开发主流框架。
一、源码跟踪图示
在使用Spring MVC过程中,如果需要重定向请求且带参数(简单类型或复杂对象类型),目前网上没有较全的说明,且分散较散,基于此,本人通过解读Spring MVC源码查找该问题的解决方案,并在本篇中给予详尽说明。Spring MVC接收到请求之后,通过doDispatch 来进行处理,下图为其处理流程图:
Spring MVC请求处理流程图
解析关键步骤如下:
(1)、当请求进入dispatcherServlet时,会通过handlerMapping查找对应的handler(controlle