我正处于将Struts 2应用程序迁移到spring mvc框架的最初阶段 . 我已经在项目中添加了几个 spring 模块,包括 spring 芯, spring 安全装置,现在我将试图摆脱支柱 spring mvc .
我遇到了困难 - 我正在尝试将我的一些struts动作重新映射到bean . 这是一个例子:
我在struts.xml文件中配置了一个操作:
<package name="default" extends="struts-default">
<result-types>
<result-type name="json" class="org.apache.struts2.json.JSONResult" />
</result-types>
...
<action name="tools" class="com.carfax.pb.dashboard.processing.action.RerunEventsAction" method="getAllRerunEvents">
<result name="success">/WEB-INF/jsp/tools/home.jsp</result>
</action>
...
</package>
所以基本上我有一个tools.home jsp页面,它是上面定义的动作的视图 . 我为这个视图创建了一个控制器类(基本上只是将实现从动作中移除并将其移动到一个groovy控制器类中):
@Controller
@RequestMapping("/tools")
class RerunEventsController {
...
public String getAllRerunEvents() {
...
return ActionSupport.SUCCESS;
}
...
}
现在我想弄清楚如何连接这两个,这就是我遇到困难的地方 .
-
我不知道如何使struts延迟我的struts.xml中定义的映射(我仍然希望支持剩余的struts操作,因为我将逐个将操作移动到控制器中 .
-
我不知道如何正确配置从命名空间到控制器到视图的映射 .
这是我试过的 -
web.xml中:
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/PBDashboard/*</url-pattern>
</servlet-mapping>
servlet.xml中:
// Spring应该自动找到我的控制器,因为它存在于这个包中
<context:component-scan base-package="com.carfax.pb.dashboard.processing.action" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
我的web.xml同时设置了Struts2过滤器和过滤器映射,如下所示:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
当我导航到appname / tools时,我得到一个struts错误,说“没有映射名称空间/动作名称工具的动作”
这显然是正确的,但我觉得我已经 Build 了一个 Spring 天mvc应该选择的映射 .
任何人都可以向我指出一些关于如何正确地做到这一点/甚至更好并指出我的错误的信息吗?
2 回答
如果我是正确的,你的web.xml也应该有/ *上的Struts过滤器 . 然后,您可以将DispatcherServlet映射为默认servlet(/),并使用以下内容排除struts.xml中的迁移操作:
然后,Struts应处理除/ tools之外的每个请求,并将/ tools URL保留为Spring .
我们将看到将struts中的Web应用程序迁移到spring mvc . 我们将逐步完成Spring迁移的Struts . 在这里,我将逐步分享您使用注释将应用程序从Struts迁移到Spring的方法 .
用 spring 库替换struts库 .
对struts进行 spring 迁移的web.xml文件所做的更改
将struts的配置文件替换为spring迁移
JSP更改了struts到spring迁移
Action类更改为struts到spring迁移
对 spring 迁移的struts进行验证更改
最重要的是,在GeekOnJava上定义了六个步骤