如果打算讲一个已经存在的struts应用迁移到Spring mvc,你会发现你需要将一struts的action导向到一个Spring MVC的controller,用Spring view输出struts action是非常糟糕的行为,如果你的struts应用已经实现了大量的逻辑而且用spring mvc重新实现非常困难或者会耗费大量时间,你可以考虑使用本文的方案,但你必须明白,这只能是个权宜之计
Struts-config.xml采用如下方式配置action
<
action
path
="/fwd"
type ="com.appress.web.actions.CustomerAction"
validate ="false"
<forward name ="success" path ="/index.mvc" />
</ action >
type ="com.appress.web.actions.CustomerAction"
validate ="false"
<forward name ="success" path ="/index.mvc" />
</ action >
CustomerAction中实现转发 return mapping.findForward("success")
Spring mvc配置文件
<
bean
id
="videResolver"
class ="org.springframeworl.web.servlet.view.ResourceBundleViewResolver" ?
<property name ="basename" >
< value > views </ value >
</ property >
</ bean >
< bean id ="publicUrlMapping"
class ="org.springframeworl.web.servlet.handler.SimpleUrlHandlerMapping" >
< property name ="mappings" >
< props >
< prop key ="/index.mvc" > indexController </ prop >
</ props >
</ property >
</ bean >
< bean id ="indexController"
class ="com.appress.controller.IndexController" >
< property name ="methodNameResolver" >
< ref local ="indexMethodNameResolver" />
</ property >
</ bean >
< bean id ="indexMethodNameResolver"
class ="org,springframework.web.servlet.mvc.multiaction,PropertiesMethodNameResolver" >
< property name ="mappings" >
< props >
< prop key ="/index.mvc" > handleIndex </ prop >
< props >
</ property >
</ bean >
class ="org.springframeworl.web.servlet.view.ResourceBundleViewResolver" ?
<property name ="basename" >
< value > views </ value >
</ property >
</ bean >
< bean id ="publicUrlMapping"
class ="org.springframeworl.web.servlet.handler.SimpleUrlHandlerMapping" >
< property name ="mappings" >
< props >
< prop key ="/index.mvc" > indexController </ prop >
</ props >
</ property >
</ bean >
< bean id ="indexController"
class ="com.appress.controller.IndexController" >
< property name ="methodNameResolver" >
< ref local ="indexMethodNameResolver" />
</ property >
</ bean >
< bean id ="indexMethodNameResolver"
class ="org,springframework.web.servlet.mvc.multiaction,PropertiesMethodNameResolver" >
< property name ="mappings" >
< props >
< prop key ="/index.mvc" > handleIndex </ prop >
< props >
</ property >
</ bean >
当我们请求 /fwd.do时候,会自动转发到 /index.mvc spring前段控制器解析这个请求,并定位到IndexController的handlerIndex方法进行执行,indexControler可以从request中获得struts action传递的数据,然后通过自身的ModelAndView进行下一步传递