2013-08-24 57 views
4

自从几天以来,我遇到了一些运行Struts Web应用程序的问题。我尝试了几个与我的问题有关的StackOverflow解决方案,但都没有成功。使用Struts应用程序出现404错误问题

的web.xml

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

的Login.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> 

LoginAction.java

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

利布斯我已经加入

1.commons-logging-1.1.3.jar 
2. freemarker-2.3.19.jar 
3. ognl-3.0.6.jar 
4. struts2-core-2.3.15.1.jar 
5. xwork-core-2.3.15.1.jar 

错误访问网址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 

我想这http://java.dzone.com/articles/struts2-tutorial-part-27

有我的控制台上没有错误,问题观点。如果有人能帮助我,我会很高兴。

+0

Netbeans Web应用程序错误不显示在“控制台”中,而是显示在服务器的单独窗口中。 做一个简单的jsp/html-servlet代码工作吗? (只是为了检查是否有什么工作)。 其次,一旦我面临着Eclipse IDE的一个问题,即 *如果我运行该文件“它的工作 *,但“跑项目”失败(不部署) –

+0

考虑使用Maven或相似来管理你的依赖,你错过一些。检查你的启动日志。 –

+1

https://github.com/coding-idiot/Struts2-Examples - 它包含一些maven以及非maven netbeans项目,如果你需要它启动的话。请使用最新版本的struts2。您的代码已被弃用 –

回答

2

错误404意味着您请求的资源不可用,相同的引用的行为没有映射到请求URL。

FilterDispatcher已弃用,可能不适用于当前的Struts版本,请改用StrutsPrepareAndExcecuteFilter

<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属性中使用的动作名称,并提供namespace你在程序包配置所做的形式。

s:submit标记中使用method="execute"是无用的,默认情况下使用execute方法,并且它不起作用,因为您已经在Struts配置中关闭了DMI。

添加库比在WEB-INF/lib老库没有帮助这么多,你的应用程序可能会无法正常工作,直到你删除并替换具有更高版本的所有低版本库,并通过添加所需的新库当前版本的Struts框架。

+1

使用StrutsPrepareAndExcecuteFilter –

相关问题