javax.servlet.UnavailableException:路径/WEB-INF/struts-config.xml缺少配置资源
我是Struts新手,正在尝试使用Struts运行一个示例登录web应用程序,但由于javax.servlet.UnavailableException:路径/WEB-INF/struts-config.xml缺少配置资源,java,jsp,web-applications,struts,Java,Jsp,Web Applications,Struts,我是Struts新手,正在尝试使用Struts运行一个示例登录web应用程序,但由于(javax.servlet.UnavailableException:path/web-INF/Struts config.xml缺少配置资源)错误,我无法获得结果。我已经完成了在eclipse中配置struts的所有工作。我甚至不知道例外是什么?请任何人帮帮我 我收到的错误是: javax.servlet.UnavailableException: Missing configuration resource
(javax.servlet.UnavailableException: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)
<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>
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");
}
}
}
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");
}
}
}
<?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>
<?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>
index.jsp
:
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)
<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>
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");
}
}
}
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");
}
}
}
<?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>
<?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>
LoginAction.java
:
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)
<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>
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");
}
}
}
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");
}
}
}
<?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>
<?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>
配置struts.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)
<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>
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");
}
}
}
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");
}
}
}
<?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>
<?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>
确保
struts config.xml
位于WEB-INF文件夹中。类似地,hibernate.cfg.xml
也应该位于适当的位置(如果您正在使用它)。您已将web应用程序配置为使用struts config.xml
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
配置
/WEB-INF/struts-config.xml
但指定文件夹中没有具有此名称的文件。确保该文件存在,或者如果对struts配置文件使用其他名称,则可以更改此init param值以反映文件可用性。如果每个模块有多个配置文件,可以使用逗号分隔名称 您需要从apache lib文件夹添加servlet-api.jar。您需要将struts.xml文件夹包含在java资源下的src文件夹中。1)您提到的struts.xml文件名是config struts.xml,但在init参数中,您写的是struts config.xml。请正确核对姓名
2) 或者(常见问题)是因为struts xml文件中缺少DTD标记。尝试将此代码添加到struts config.xml中的
标记上方
请分享您的软件包结构。您有没有找到解决此错误的方法?