javax.servlet.UnavailableException:路径 /WEB-INF/struts-config.xml 缺少配置资源

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

我是 Struts 新手,我正在尝试使用 Struts 运行示例登录 Web 应用程序,但由于

(javax.servlet.UnavailableException: Missing configuration resource for path /WEB-INF/struts-config.xml)
错误,我无法获得结果。我已经在 eclipse 中完成了配置 struts 的所有工作。我什至不知道例外是什么?请任何人帮助我

我遇到的错误是:

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>
java jsp web-applications struts
5个回答
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 参数值以反映文件可用性。如果模块有多个配置文件,则可以使用逗号分隔名称。


1
投票

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


0
投票

1)您提到您的 struts.xml 文件名为 config-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">


0
投票

可能是因为Web资源目录配置错误 enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.