【问题标题】:HTTP Status 404 in Struts2 web applicationStruts2 Web 应用程序中的 HTTP 状态 404
【发布时间】:2014-10-15 14:09:28
【问题描述】:

这是我的设置:

规格:

  • Tomcat 7.0.55
  • jdk1.8.0_11
  • 日食月神
  • 赢 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 描述 请求的资源不可用。

Apache Tomcat/7.0.55

谁能告诉我我的配置有什么问题?

【问题讨论】:

  • 我很困惑;您说的是 Struts 2,但您显示的所有库都是针对 Struts 1 的。GXP 问题是因为您部署了 GXP 插件 jar,但没有部署它的依赖项;你应该只部署你实际使用的插件。
  • @Dave Newton - 好点。你是绝对正确的,戴夫。我写下了不正确的罐子版本。但是,我使用的是用户定义库中的 Struts2 jar。 GXP 绝对是问题的一部分。

标签: java eclipse jsp tomcat struts2


【解决方案1】:

我已经通过删除用户定义的库解决了我的问题,并将罐子直接添加到 WEB-INF/classes 文件夹中。请注意,图片上的罐子与我的问题中列出的罐子不同。我才刚刚开始了解 Struts2,所以我什至不确定我是否需要所有这些 jars。不管怎样,感谢大家的帮助和反馈。

【讨论】:

  • 我遇到了同样的问题,更改了文件夹和文件结构,如上图所示,但这对我没有帮助。我的 Struts2 版本是 struts-2.5.10.1、xwork-core-x.y.jar 和 common-logging-api.x.y.jar,从这个版本中消失了。你认为是因为这个吗?
【解决方案2】:

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

在 Tomcat7 上,您可能需要使用 Struts2 Prepare and Execute Filter。

尝试使用以下内容替换您的过滤器代码,因为现在不推荐使用 Filter Dispatcher is97。

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

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

【讨论】:

  • 我发现了我的问题。库依赖问题。 “原因:无法加载 bean:类型:org.apache.struts2.views.gxp.inject.InjectedObjectContainer”我只在我的库中留下了这些 jar,代码开始工作...... commons-fileupload-xyzjar commons-io -xyzjar commons-lang-xyjar commons-logging-xyzjar commons-logging-api-xyjar freemarker-xyzjar javassist-.xy.z.GA ognl-xyzjar struts2-core-xyzjar xwork-core.xyz jar 将过滤器类更改为 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 给我 404 而没有 404,我看不到我的 systout。
  • *edit:在控制台中加载 index.jsp 时,将过滤器类更改为建议值会给我 404 且没有错误。而且我也没有在控制台中看到我的 systout。
  • 通常找不到 404 是因为 1)您重定向的文件不存在。 2) 你的项目代码有错误 3) 依赖没有实现。
  • 你是从 index.jsp 调用你的 hello.action 吗?只需在启动服务器后尝试将 url localhost:8085/Struts2Test/hello.action 放在浏览器中,然后在控制台中是否执行方法打印 sysout 语句。如果您从 index.jsp 调用您的操作,请分享您从 index.jsp 调用操作的代码。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2018-09-17
    • 2020-08-11
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2016-06-11
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多