运行Struts 1& Struts 2

时间:2017-06-05 15:53:19

标签: java struts2 struts1

我试图使用Struts1和Struts2来运行应用程序。原因是它正在被迁移,但是有很多Struts1我们想做一点一点点而不是大爆炸...我知道这可以做到

无论如何,我无法获取我的S2过滤器来获取我的URL,并且在访问* .action URL时没有给出任何错误!所有S1页面仍然可以正常工作。我的Web XML包含S2配置...

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.action</url-pattern>
</filter-mapping>

和S1 servlet

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

我还设置了一个简单的TestStruts2Action类来扩展Action,它实际上只有一个syso来证明它已经到达了行动。的XMLConfig&#39;

  <package name="main" extends="struts-default">
      <action name="testStruts2" class="com.myclass.TestStruts2Action">
         <result name="success">test/testStruts2.jsp</result>
      </action>
  </package>

当我点击URL /MyApp/testStruts2.action时,我得到的是应用程序404页面

我的JSP实际上只是一个HelloWorld示例并保存在test / testStruts2.jsp下

有什么想法吗?在启动过程中没有错误或在我点击URL时记录下来我不知道接下来要尝试什么...

尝试添加名称空间

1 个答案:

答案 0 :(得分:1)

好的,我觉得我做错了什么......

我的struts.xml文件放在WEB-INF中的旧struts-config文件旁边,新的过滤器没有读取它。我使用this post来计算出那个,并在web.xml中修改了我的过滤器声明

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  <init-param>
    <param-name>config</param-name>
    <param-value>struts-default.xml,struts-plugin.xml,struts.xml</param-value>
  </init-param>

然而这引起了我的注意

@AleksandrM

&#39;此外,您定义xml文件的顺序也很重要。例如。如果尚未加载struts.xml中的struts-default包(来自struts-default.xml),则无法扩展。&#39;

@AleksandrM您的意思是,如果您移动struts.xml位置,则无法在包声明中扩展struts-default?