当前位置: 首页 > 知识库问答 >
问题:

错误404使用Struts应用程序时出现的问题

经嘉
2023-03-14

几天以来,我在运行Struts网络应用程序时遇到了一些问题。我尝试了StackOverflow中与我的问题相关的几个解决方案,但都不起作用。

网状物xml:

xml prettyprint-override"><display-name>Struts2 Application</display-name>
<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>
<welcome-file-list>
    <welcome-file>Login.jsp</welcome-file>
</welcome-file-list>

struts。xml:

<struts>
    <constant name="struts.enable.DynamicMethodInvocation"
        value="false" />
    <constant name="struts.devMode" value="false" />

    <constant name="struts.custom.i18n.resources"
        value="ApplicationResources" />

    <package name="default" extends="struts-default" namespace="/">

        <action name="login"
            class="net.viralpatel.struts2.LoginAction">
            <result name="success">Welcome.jsp</result>
            <result name="error">Login.jsp</result>

        </action>
    </package>
</struts>

登录。jsp:

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>

<title>Struts 2 - Login Application | ViralPatel.net</title>
</head>

<body>
<h2>Struts 2 - Login Application</h2>
<s:actionerror />
<s:form action="login.action" method="post">

    <s:textfield name="username" key="label.username" size="20" />
    <s:password name="password" key="label.password" size="20" />

    <s:submit method="execute" key="label.login" align="center" />
</s:form>
</body>
</html>

登录。爪哇:

package net.viralpatel.struts2;

public class LoginAction {
    private String username;
    private String password;

    public String execute() {

        if (this.username.equals("admin")
                && this.password.equals("admin123")) {
            return "success";
        } else {
            return "error";
        }
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

我补充说:

  • commons-logging-1.1.3。罐子
  • freemarker-2.3.19。罐子
  • ognl-3.0.6。罐子
  • struts2-core-2.3.15.1。罐子
  • xwork-core-2.3.15.1。罐子

访问URL时出错:

http://localhost:8080/StrutsHelloWorld/

HTTP Status 404 - /StrutsHelloWorld/

type Status report

message /StrutsHelloWorld/

description The requested resource is not available.

Apache Tomcat/7.0.42

我尝试了这个教程。

我的控制台“问题视图”上没有错误。

共有1个答案

茹康裕
2023-03-14

错误404意味着所请求的资源不可用,同样指的是没有映射到请求URL的动作。

FilterDispatcher已弃用,可能无法与当前Struts版本一起使用,请改用StrutsPrepareAndexecuteFilter

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

struts中。xml添加以下内容

<package name="default" extends="struts-default" namespace="/">
   <action name=""><result>/Login.jsp</result></acton> 

这将把你转到登录页面。还考虑使用绝对路径到JSP资源。

在JSP中使用需要重写的表单

<s:form namespace="/" action="login" method="post">

    <s:textfield name="username" key="label.username" size="20" />
    <s:password name="password" key="label.password" size="20" />

    <s:submit key="label.login" align="center" />
</s:form>

action属性中,使用操作名称并提供命名空间,就像您在包配置中所做的那样。

使用方法="执行"是无用的s:提交标记,方法执行默认使用,它将无法工作,因为你已经关闭了DMI在Struts配置。

WEB-INF/lib中的旧库上添加库没有太大帮助,您的应用程序可能无法工作,直到您删除所有低版本库并用高版本替换它们,并添加当前版本的Struts框架所需的新库。

 类似资料:
  • [见底部更新]我试图通过Tomcat启动Spring Web应用程序,但是当我在浏览器中输入urlhttp://localhost:8080/demo-mvc/时,我收到了404错误和一条消息“请求的资源[/demo-mvc/]不可用”。起初,我试图通过NetBeans部署应用程序,它说部署成功,但是在浏览器启动时,我收到了404错误。我检查了Tomcat/webapp目录,不知为什么没有找到应用

  • 我正在构建我的第一个struts2应用程序,并得到错误: HTTP状态404-/Struts2Beginner/Input。jsp 输入状态报告-message/Struts2Beginner/Input。jsp说明请求的资源不可用 ApacheTomcat/7.0.64 关于这个问题有很多帖子,我想我消除了两个常见问题: 我正在使用StrutsPrepareAndExecuteFilter(而不

  • 我想尝试一下在这里的链接描述中提到的选项,一旦我能够移除这个异常。 任何关于如何在Spring4中使用注释处理404的指针都将非常有帮助。 试用以下代码:- 该应用程序可以很好地进行有效的url映射。它是使用spring Boot构建的。PFB应用程序注释类:-

  • 当启动Confluence插件时,我总是得到以下错误: 我已经尝试了几个插件和Windows,Mac和Ubuntu。不幸的是,我总是在启动当前和旧的SDK时遇到这个错误。我已经尝试了Oracle和OpenJdk,都是版本8。结果是一个404页面时调用http://127.0.0.1:1990/confluence 我的环境 Tomcat日志不包含任何错误。。。 你有同样的问题吗,或者你知道解决方法

  • 当我连续发布数据时,我会在C#应用程序上得到发布超时错误,一旦我重新启动应用程序,它会工作几个小时。[注意:由于php需要时间完成任务,所以新的请求都在等待中,它创建队列,等待时间超过2分钟,im出现超时错误]。 我们的两台服务器都使用了最大50%的CPU和RAM使用量 我检查了两个C#代码和PHP代码都工作良好,没有任何问题或bug 提前致谢哥们儿:)

  • null 脚本'C:\src\flutter\packages\flutter_tools\gradle\flutter.gradle'行:838 出了什么问题: 任务“:app:CompileFlutterBuildreLease”执行失败。 null null 应用程序:Build.Gradle