Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未找到资源错误404_Java_Struts2 - Fatal编程技术网

Java 未找到资源错误404

Java 未找到资源错误404,java,struts2,Java,Struts2,我试图在struts2上运行一个web应用程序示例,但遇到了一个问题。 这是密码 web.xml 当我在tomcat服务器上执行这个项目时,它会很好地显示index.jsp页面。当我按下submit按钮时,会出现一个错误,提示“请求的资源不可用”,并显示一条消息“/test1/abc”。abc是操作的名称,不调用此操作。在发布这个问题之前,我已经搜索了很多。起初我认为我可能缺少一些库,但现在对我来说这似乎不是问题,因为我正在使用maven进行依赖关系管理 <project xmlns="h

我试图在struts2上运行一个web应用程序示例,但遇到了一个问题。 这是密码 web.xml

当我在tomcat服务器上执行这个项目时,它会很好地显示index.jsp页面。当我按下submit按钮时,会出现一个错误,提示“请求的资源不可用”,并显示一条消息“/test1/abc”。abc是操作的名称,不调用此操作。在发布这个问题之前,我已经搜索了很多。起初我认为我可能缺少一些库,但现在对我来说这似乎不是问题,因为我正在使用maven进行依赖关系管理

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>test</groupId>
  <artifactId>test1</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
      </plugin>  
    </plugins>
  </build>
  <dependencies>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.3.16</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
  </dependencies>
</project>

4.0.0
测试
测试1
0.0.1-快照
战争
org.apache.maven.plugins
maven编译器插件
3.1
1.7
1.7
org.apache.struts
struts2型芯
2.3.16
log4j
log4j
1.2.14
提前谢谢。
指向项目结构的链接是

,首先应该在web.xml中使用

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

org.apache.struts2.dispatcher.ng.filter.strutspreadexecutefilter
as
org.apache.struts2.dispatcher.FilterDispatcher
已被弃用


请看一下。

您可以看到索引页,因为它是由web容器Tomcat显示的,并且没有Struts标记(与没有Struts框架的任何其他web项目一样)

浏览器url显示
/test1/
。然后,您通过按下提交按钮发出请求
/test1/abc
,它被struts2过滤,但它在命名空间
/
或默认命名空间中都找不到名为
abc
的操作,并且您没有任何具有该路径的资源,因此您相当地得到了404错误

您可能会说,在默认名称空间中配置了名为
abc
的操作。但是此配置在运行时不可用,并且包名应该是您的包扩展的
struts default

struts.xml
文件应该在类路径上,这意味着在
src
resources
文件夹中。编译时,它会复制到编译器输出文件夹。构建后,它将从编译器输出文件夹复制到
WEB-INF/classes
。这两个文件夹是临时创建的,可以在处理之前删除,因此如果源文件夹中没有
struts.xml
,则在运行应用程序时会丢失此文件


还要注意的是,在结果中使用的webcontent文件夹中没有任何JSP页面

部署的应用程序的文件夹结构是什么?如何在此处显示文件夹结构?由您决定,但您应该显示文件夹的内容。同时发布stacktrace。我已经发布了项目结构,我正在处理另一个项目,因此无法在发布之前发布。这是使用Struts2>2.1.8时要声明的正确筛选器。因为您使用的是2.3.16,所以到此为止。也许,这还不够。你的DTD是混乱的:2.5和3.0混合。。。使用Tomcat支持的一个。另外请阅读:P.S:@njnex:ActionForm与Struts2无关+1对于过滤器,-1对于ActionForm,=0:)您可能是指ActionSupport我将struts.xml文件放在src文件夹中。我已将jsp文件放在web内容文件夹中。操作仍然不起作用,并且我在access之前能够访问它时出现了一个新错误。“HTTP状态500-找不到Struts dispatcher。这通常是由于在没有关联筛选器的情况下使用Struts标记造成的。Struts标记仅在请求通过其servlet筛选器时可用,servlet筛选器会初始化此标记所需的Struts dispatcher。-[未知位置]”这已经是不同的错误,首先,您应该检查
web-INF
中的
web.xml
文件,然后更改筛选器,因为您使用的Struts版本不推荐使用它。我已经更改了筛选器。这是我现在使用的筛选器“org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter”我在谷歌上搜索,发现我必须使用这个过滤器。我的项目结构是否仍然不正确。我正在遵循本教程“”,并且我完全按照它所说的做了,并且更改了你们要求的任何内容。你能帮我在TeamViewer上解决这个问题吗。我愿意与您共享我的计算机您可能映射的筛选器不正确,您可以更新问题。当struts.xml文件位于src文件夹中时,为什么它仍然找不到操作abc?
<?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>
<constant name="struts.devMode" value="true" />
   <package name="helloworld" extends="struts-default namespace="/">

      <action name="abc" 
            class="com.junaid1.struts2.HelloWorldAction" 
            method="execute">
            <result name="success">HelloWorld.jsp</result>
            <result name="error">/oops.jsp</result>
      </action>
   </package>
</struts>
package com.junaid1.struts2;

public class HelloWorldAction{
       private String name;

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

       public String getName() {
          return name;
       }

       public void setName(String name) {
          this.name = name;
       }
    }
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>test</groupId>
  <artifactId>test1</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
      </plugin>  
    </plugins>
  </build>
  <dependencies>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.3.16</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
  </dependencies>
</project>
<filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>