我创建了一个简单的struts2项目。
首先,我将此添加到web.xml
<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.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" 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>pos</display-name>
<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>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
其次,我创建了struts.xml
到src
<?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="index" class="nerdy.action.IndexAction" method="index">
<result name="success">/index/index.jsp</result>
</action>
</package>
</struts>
最后,我在src中创建了包和类,并将Struts2的jar复制到lib
package nerdy.action;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class IndexAction extends ActionSupport {
public String index() {
return "success";
}
}
我运行服务器并尝试了这些网址
本地主机:8080 / POS / index.action
本地主机:8080 / index.action
本地主机:8080 / POS /的indexAction
本地主机:8080 / POS /索引
本地主机:8080 / POS /动作
但是所有显示404:请求的资源不可用。
我检查了所有名称是否匹配,并且在build\classes
中编译了类,而index.jsp在WebContent/index/
我的配置中是否还有错误?为什么URL应该是“index.action”?哪个xml配置了这种模式?
这是我完整的日食项目:157.7.141.139/pos.7z(http)
答案 0 :(得分:0)
请将所有必需的库添加到WEB-INF / lib文件夹,清理项目。
按照图片进行参考,
答案 1 :(得分:0)
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>user.actions</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
像这样更改你的web.xml。它在2.3.16.1版本中对我有用。
public String index() {
return "success";
}
用
代替上面的代码public String execute() {
return "success";
}
答案 2 :(得分:0)
我遇到了同样的问题。删除所有jar文件并尝试从http://archive.apache.org/dist/struts/binaries/下载struts 2.3.1.1,然后使用相同的JAR文件。它肯定适用于您的过滤器配置。
答案 3 :(得分:0)
我遇到了同样的问题,因为我正在使用外部JRE。
请检查您是否使用内部JRE。 内部JRE位于JDK内部。
项目中的SO,
转到构建路径
- &GT;配置
- &GT;库
- &gt;已安装的JRE
- &gt;给出jdk的路径,如图
所示- &GT;完成
刷新项目。