我有一个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,为什么?
答案 0 :(得分:1)
检查web.xml。
否则将所有.jsp文件放在WebContent文件夹
中答案 1 :(得分:0)
根据您的代码结构,您的项目屋顶文件夹中没有index.jsp / html。运行服务器时,默认情况下会首先找到index.html / jsp。如果它不可用,它将返回404错误。要解决此问题,您可以在web.xml文件中添加以下行
<welcome-file-list>
<welcome-file>/jsp/login.jsp</welcome-file>
</welcome-file-list>
保存所有更改并运行服务器。如果问题再次存在,则必须检查Struts配置文件和构建路径。
答案 2 :(得分:0)
你的项目真的很奇怪。
顺便说一句:
在 struts.xml 中声明<package>
;操作不会直接进入<struts>
元素;
为该程序包提供“/ StrutsPro”命名空间;
声明用于检查 LoginAction 中的用户凭据的方法(然后execute()
将打开要由用户填充的JSP页面,tryToLogin()
,例如,将接收来自POST的数据并尝试针对数据库验证它们;或者,您可以使用两种方法指定两个不同的操作而不是一个操作,这取决于您;
在<s:submit />
内放置一个<s:form>
按钮,将数据发送到登录方法/操作;
调用指向你的Action的url,而不是你的JSP。 JSP是视图,它总是由控制器返回,在Struts2中是Action。您运行Action,Action为您提供已评估的JSP。您不运行JSP。
例如,根据您在 web.xml
中为操作提供的扩展程序,您应致电:http://localhost:8080/StrutsPro/login.action
或http://localhost:8080/StrutsPro/login.do
答案 3 :(得分:0)
试试这个答案:
<强>的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 : <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
希望这会对你有所帮助。
答案 4 :(得分:0)
404状态代码实际上意味着给定网址的资源不可用。
要从服务器请求资源,请确保该文档中包含taglib definitions的有效且可编译。
<%@ taglib prefix="s" uri="/struts-tags" %>
您不应直接在URL中访问JSP页面。使用返回调度程序结果的action configuration。
<action name="UnderConstruction"> <result>/UnderConstruction.jsp</result> </action>
答案 5 :(得分:0)
我是struts的新手,我遇到了同样的错误。与404一起,在控制台中,它有UnableToLodaConfiguration错误,尽管我已经放置了正确的struts.xml配置。有人建议我将我的工作区从桌面重新定位到C:\并且令人惊讶的是它有效。