Struts2动作映射导致错误404

时间:2015-01-26 22:36:30

标签: java struts2

我在Glassfish 4容器上运行Struts2应用程序。该应用程序由一个操作类SampleAction

组成
package com.mysample.action;
public class SampleAction {

 public String execute() {
    return "success";
 }
}

struts XML很简单,包括:

     <?xml version="1.0" encoding="UTF-8"?>

     <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
        <package name="default" extends="struts-default">
                <action name="sayHello" class="com.mysample.action.SampleAction">
                        <result name="success">/success.jsp</result>
                        <result name="error">/error.jsp</result>
                </action>
        </package>
</struts>

此项目的web.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

当我转到http://localhost:8080/sample_war_exploded/sayHello.action 时,我收到404错误。找不到

当我去:http://localhost:8080/sample_war_exploded/success.jsp - 我获得了成功的页面

为什么我的映射无法正常工作?我希望通过转到* / sayHello.action,我会获得成功页面。

我已尝试重新部署工件,停止+重新启动服务器等。我甚至对“success.jsp”上的内容进行了一些更改,并在重新部署时获取这些更改。映射不正常,我想知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

经过一些实验,我发现了这一点。事实证明,Glassfish允许我部署我的Struts2应用程序而不会抛出任何错误,即使Struts2项目库未正确添加到我的项目中。我将部署容器切换到Tomcat,然后我开始收到错误,表明我缺少配置。然后,我可以添加缺少的配置项并重新部署应用程序。它现在按预期工作。

感谢您的意见/建议。