2013-11-09 19 views
3

我是Struts的新手,我试图运行一个使用Struts的示例登录Web应用程序,但我无法获取结果是由于(javax.servlet.UnavailableException: Missing configuration resource for path /WEB-INF/struts-config.xml)的错误。我在eclipse中配置struts时做了所有的事情。我什至不是什么例外?请任何人能帮助我javax.servlet.UnavailableException:缺少路径/WEB-INF/struts-config.xml的配置资源

我得到的错误是:

javax.servlet.UnavailableException: Missing configuration resource for path /WEB-INF/struts-config.xml 
at org.apache.struts.action.ActionServlet.splitAndResolvePaths(ActionServlet.java:1872) 
at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:683) 
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:356) 
at javax.servlet.GenericServlet.init(GenericServlet.java:212) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1213) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

index.jsp

<html> 
    <body> 


     <form action="login.do"> 
     <tr> 
     <td>Username</td> 
     <td><input type = "text" name = "username" maxlength = "25"></td> 
     </tr> 
     <tr> 
     <td>Password</td> 
     <td><input type = "password" name = "password" minlength = "8" maxlength = "16"></td> 
     </tr> 

     <tr> 
     <td colspan = "2" align = "center"><button type = "submit" name = "submit">Submit</button> 
     <button type = "reset" name = "reset">Reset</button></td> 

     </tr> 


     </form> 
    </body> 
</html> 

LoginForm.java

package com.sample.com; 

import org.apache.struts.action.ActionForm; 

import org.apache.struts.action.Action; 

import org.apache.struts.action.ActionMapping; 

import org.apache.struts.action.ActionForward; 

import javax.servlet.http.HttpServletRequest; 

import javax.servlet.http.HttpServletResponse; 

public class LoginAction extends Action { 

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) 
    { 
     System.out.println("test"); 

    LoginForm login = (LoginForm)form; 

    String uname=login.getUname(); 

    String pass=login.getPass(); 

    if(uname=="admin" && pass =="test") 
    { 
    return mapping.findForward("success"); 

    } 
    else 
    { 
    return mapping.findForward("failure"); 

    } 
    } 
} 

LoginAction.java

package com.sample.com; 

import org.apache.struts.action.ActionForm; 

import org.apache.struts.action.Action; 

import org.apache.struts.action.ActionMapping; 

import org.apache.struts.action.ActionForward; 

import javax.servlet.http.HttpServletRequest; 

import javax.servlet.http.HttpServletResponse; 



public class LoginAction extends Action { 

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) 
    { 

     System.out.println("test"); 

    LoginForm login = (LoginForm)form; 

    String uname=login.getUname(); 

    String pass=login.getPass(); 

    if(uname=="admin" && pass =="test") 
    { 
    return mapping.findForward("success"); 
    } 
    else 
    { 
    return mapping.findForward("failure"); 

    } 

    } 


} 

config-struts.xml

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



<struts-config> 

    <form-beans> 
     <form-bean name="loginRequest" type="com.sample.com.LoginForm"/> 
    </form-beans> 

    <global-forwards> 
     <forward name="success" path="/success.jsp"/> 
    </global-forwards> 

    <action-mappings> 
     <action path="/login" type="com.sample.com.LoginAction" name="loginRequest"> 
      <forward name="success" path="/success.jsp"/> 
      <forward name="failure" path="/failure.jsp"/>   
     </action> 
    </action-mappings> 

</struts-config> 

web.xml

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

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

    <servlet> 
     <servlet-name>action</servlet-name> 
     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
     <init-param> 
      <param-name>config</param-name> 
      <param-value>/WEB-INF/struts-config.xml</param-value> 
     </init-param> 
     <init-param> 
      <param-name>debug</param-name> 
      <param-value>2</param-value> 
     </init-param> 
     <init-param> 
      <param-name>detail</param-name> 
      <param-value>2</param-value> 
     </init-param> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>action</servlet-name> 
     <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 
+0

请分享您的包装结构。 –

+0

你有没有得到任何解决这个错误? – Prince

回答

2

确保struts-config.xml驻留在WEB-INF文件夹中。同样,hibernate.cfg.xml也应该在适当的地方(如果你正在使用它)。

1

您配置了Web应用程序使用struts-config.xml

<init-param> 
    <param-name>config</param-name> 
    <param-value>/WEB-INF/struts-config.xml</param-value> 
</init-param> 

,但有没有在指定的文件夹,例如名称的文件。确保文件在那里存在,或者如果您使用struts配置文件的其他名称,则可以更改此init参数值以反映文件的可用性。如果您为模块分别配置了多个配置文件,则可以使用逗号分隔名称。

+0

我已经放置了struts-config。xml在WEB-INF文件夹中 – user2935193

0

您需要从apache lib文件夹中添加servlet-api.jar。您需要包含struts.xml文件夹中的src文件夹下的java资源。

0

1)你提到你的struts.xml文件名作为配置-struts.xml中但在init-PARAM你写的struts-config.xml中。请正确检查名称。

2)或者也许(常见问题),因为你缺少struts xml文件中的DTD标签。尝试在struts-config.xml中的<struts-config>标记上方添加此代码。

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">