404 在 Tomcat 上通过 eclipse 运行项目时

问题描述 投票:0回答:6

我有一个具有以下目录结构的 Struts 2 项目。但是当我尝试在 Tomcat 7 上使用 Eclipse 运行这个项目时,它给了我 404 错误。

Struts.xml

<?xml version="1.0" encoding="UTF-8"?>

<struts>
  <action name="login" class="com.actions.LoginAction" method="execute">
     <result name="success">/jsp/login.jsp</result>  
  </action>
</struts>

login.jsp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Page</title>
</head>
<body>
  <s:form action="login" method="post">
  Login name : <input type="text" value="name"/>
  </s:form>
</body>
</html>

在路径

http://localhost:8080/StrutsPro/jsp/login.jsp
上运行时,会出现 HTTP 404 错误。

java struts2 struts http-status-code-404 web-project
6个回答
1
投票

改为检查 web.xml。

否则将所有 .jsp 文件放在 WebContent 文件夹中


0
投票

根据您的代码结构,您的项目屋顶文件夹中没有 index.jsp/html。在运行服务器时,默认情况下它会首先找到 index.html/jsp。如果它不可用,它将返回 404 错误。要解决此问题,您可以在 web.xml 文件中添加以下行,

<welcome-file-list>
<welcome-file>/jsp/login.jsp</welcome-file>
</welcome-file-list>

保存所有更改并运行服务器。如果问题再次存在,您必须检查 Struts 配置文件和构建路径。


0
投票

你的项目真奇怪

顺便说一句,你必须:

  • 在你的

    struts.xml
    中声明一个<package>;动作不要直接进入
    <struts>
    元素;

  • 给那个包"/StrutsPro"命名空间;

  • 在您的 LoginAction 中声明一种检查用户凭据的方法(然后

    execute()
    将打开 JSP 页面以供用户填写,例如
    tryToLogin()
    将接收来自 POST 的数据并尝试根据数据库验证它们);或者,您可以使用两种方法指定两个不同的 Action 而不是一个 Action,这取决于您;

  • 在您的

    <s:submit />
    中放置一个
    <s:form>
    按钮,以将数据发送到登录方法/操作;

  • 调用指向您的操作的 url,而不是您的 JSP。 JSP就是视图,它总是由控制器返回,在Struts2中就是Action。您运行 Action,Action 会为您提供已评估的 JSP。你不运行 JSP.

例如,您应该调用:

http://localhost:8080/StrutsPro/login.action
http://localhost:8080/StrutsPro/login.do
,根据您在 web.xml 中给 Actions 的扩展名


0
投票

试试这个答案:

登录.jsp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Page</title>
</head>
<body>
  <s:form action="login" method="post">
           Login name : <s:textfield name="name"/> 
           <s:submit value="Click Me" name="Click Me"></s:submit>
  </s:form>
</body>
</html>

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="default" namespace="/" extends="struts-default">
<action name="login"  class="com.actions.LoginAction">
<result name="success">/jsp/login.jsp</result>  
</action>
</package>
</struts> 

LoginAction.java

private String name;

//Create setter and getter methods for NAME.

public String execute(){
  return SUCCESS;
}

您可以保存所有更改并重新启动服务器。要访问您输入网址的页面

http://localhost:8080/StrutsPro/login.action

希望这对你有帮助。


0
投票

我是 struts 的新手,我遇到了同样的错误。与 404 一起,在控制台中,它有 UnableToLodaConfiguration 错误,尽管我已经放置了正确的 struts.xml 配置。有人建议我将我的工作区从 Desktop 迁移到 C:\,令人惊讶的是它奏效了。


0
投票

404 状态代码实际上意味着给定 url 的资源不可用。

要从服务器请求资源,请确保其有效且可编译,并在文档中包含 taglib 定义

<%@ taglib prefix="s" uri="/struts-tags" %>

您不应该直接在 URL 中访问 JSP 页面。使用 action configuration 返回调度程序结果。

<action name="UnderConstruction">
    <result>/UnderConstruction.jsp</result>
</action>
© www.soinside.com 2019 - 2024. All rights reserved.