java - 我的 Struts.xml 文件无法重定向到我的操作类并给我 404 错误
问题描述
我是 Struts 新手,我尝试在 Struts2 中构建基本应用程序。Web 应用程序给我 404 错误,因为它找不到结果或操作类。下面是各种文件的代码片段。预先感谢您的帮助
索引.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="DemoStrtus" method="post">
<input type="text" name="name">
<input type="submit" value="Submit">
</form>
</body>
</html>
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Basic Struts2</display-name>
<welcome-file-list>
<welcome-file>Index.html</welcome-file>
</welcome-file-list>
<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>
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="demostruts" extends="struts-default" namespace="/">
<action name="demostruts" class="com.demostruts.DemoStrtus" method="execute">
<result name="success">/DemoStrtus.jsp</result>
</action>
</package>
</struts>
DemoStrtus.java(动作类)
package com.demostruts;
public class DemoStrtus{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String execute() throws Exception
{
return "success";
}
}
DemoStrtus.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Output</title>
</head>
<body>
<s:property value="name"/>
</body>
</html>
当我运行项目时。它显示表单。在表格中输入我的姓名后,然后按提交。它给了我404错误。
我的项目浏览器看起来像
我添加的 Struts jar 文件
控制台警告
May 16, 2018 7:36:25 PM com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
WARNING: Could not find action or result: /DemoStruts/DemoStrtus
There is no Action mapped for namespace [/] and action name [DemoStrtus] associated with context path [/DemoStruts]. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:565)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
解决方案
感谢您的帮助和支持错误是我为java设置了错误的环境路径。
推荐阅读
- typescript - 防止模块外部导入,除非通过索引
- node.js - 在猫鼬中填充对象内的数组
- api - Azure 数据工厂 - Prohandel REST API
- c# - 可重复使用的按钮样式,可以改变其背景
- python - 如何处理 WiFi 名称中的重音符号?
- android - Xamarin Forms Dark/Light Mode 主题不适用于 Android 上的 shell 导航选项卡
- eclipse - Pydev 显示用于 Jython 代码分析的“未定义变量”
- python - 搜索关键字之间
标签分隔标签
- mysql - 在 Heroku 托管的 Metabase 应用程序中添加 Google Cloud MySQL 实例(仅使用 SSL)
- html - 如何将标签应用于引导程序中设置的按钮组