Struts2 Web应用程序中的HTTP状态404

时间:2014-08-21 19:56:05

标签: java eclipse jsp tomcat struts2

这是我的设置:

规格:

  • Tomcat 7.0.55
  • jdk1.8.0_11
  • Eclipse Luna
  • Win 8.1

我在Eclipse中设置了一个名为“Struts2Test”的动态Web项目,其结构如下。注意:我只突出显示与此问题相关的文件夹和文件。

Struts2Test (project name)
 - [Java Resources]
   - [src]
     - [com.struts2action] (package)
         - HelloWorldAction.java
   - [Libraries]
     - [Struts2] (user defined library)
         - antlr-2.7.2.jar
         - bsf-2.3.0.jar
         - commons-beanutils-1.8.0.jar
         - commons-chain-1.2.jar
         - commons-digester-1.8.jar
         - commons-fileupload-1.1.1.jar
         - commons-io-1.1.jar
         - commons-logging-1.0.4.jar
         - commons-validator-1.3.1.jar
         - jstl-1.0.2.jar
         - oro-2.0.8.jar
         - standard-1.0.6.jar
         - struts-core-1.3.10.jar
         - struts-el-1.3.10.jar
         - struts-extras-1.3.10.jar
         - struts-faces-1.3.10.jar
         - struts-mailreader-dao-1.3.10.jar
         - struts-scripting-1.3.10.jar
         - struts-taglib-1.3.10.jar
         - struts-tiles-1.3.10.jar
 - [Web Content]
   - [WEB-INF]
     - [classes]
         - struts.xml
     - web.xml
   - error.jsp
   - index.jsp
   - success.jsp

的web.xml

            <?xml version="1.0" encoding="UTF-8"?>
            <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns="http://java.sun.com/xml/ns/javaee" 
               xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
               xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
               http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
               id="WebApp_ID" version="3.0">

              <display-name>Struts2Test</display-name>

              <welcome-file-list>
                  <welcome-file>index.jsp</welcome-file>
               </welcome-file-list>

               <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>

            </web-app>

struts.xml中

            <?xml version="1.0" encoding="UTF-8"?>
            <!DOCTYPE struts PUBLIC
               "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
               "http://struts.apache.org/dtds/struts-2.0.dtd">
            <struts>


               <package name="helloworld" extends="struts-default">

                    <!--  URL: hello  -->  
                  <action name="hello" 
                        class="com.struts2action.HelloWorldAction" 
                        method="execute">
                        <result name="success">/success.jsp</result>
                        <result name="error">/error.jsp</result>
                  </action>
                  <!-- more actions can be listed here -->

               </package>
               <!-- more packages can be listed here -->

            </struts>

HelloWorldAction.java

    package com.struts2action;

    public class HelloWorldAction {

        public String execute() {
            System.out.println("HelloWorldAction - called");
            return "success";
        }
    }

我运行并编译程序。我打电话给以下人员:

http://localhost:8085/Struts2Test/hello.action

我一直收到以下错误:

HTTP状态404 - /Struts2Test/hello.action

输入状态报告 消息/Struts2Test/hello.action description请求的资源不可用。

Apache Tomcat / 7.0.55

有人可以告诉我配置的问题是什么吗?

3 个答案:

答案 0 :(得分:2)

我通过删除用户定义的库解决了我的问题,并将jar直接添加到WEB-INF / classes文件夹中。请注意,图片上的罐子与我的问题中列出的罐子不同。我只是开始了解Struts2,所以我甚至不确定我是否需要那些罐子。无论哪种方式,感谢大家的帮助和反馈。

enter image description here

答案 1 :(得分:1)

我在Apache Tomcat 6.0上尝试了相同的代码,它在那里运行良好。

在Tomcat7上,您可能需要使用Struts2准备和执行过滤器。

尝试使用以下内容替换过滤器代码,因为现在不推荐使用过滤器调度程序。

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

还有一个问题,你能在控制台上看到你的System out语句吗?

答案 2 :(得分:1)

尝试将jar文件保存在/ WEB-INF / lib