Reputation: 31
I am new to Struts 1, and I am trying to run a sample login web application using Struts 1, but I am unable to get the result due to the error:
javax.servlet.UnavailableException: Missing configuration resource for path /WEB-INF/struts-config.xml
I had done everything in configuring Struts 1 in Eclipse. I even don't know what the exception is?
Please, anyone help me.
The error, I am getting, is:
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>
Upvotes: 3
Views: 20076
Reputation: 377
1) You have mentioned your struts.xml filename as config-struts.xml but in the init-param you wrote as struts-config.xml. Please check the names properly.
2) Or maybe (common issue) because you are missing the DTD tag in your struts xml file. Try to add this code above the <struts-config>
tag in your struts-config.xml.
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
Upvotes: 0
Reputation: 8337
Make sure struts-config.xml
resides in WEB-INF folder. Similarly, hibernate.cfg.xml
should also be at the appropriate place(if you are using it).
Upvotes: 2
Reputation: 11
You need to add the servlet-api.jar from the apache lib folder. You need to include the struts.xml folder in src folder under java resources.
Upvotes: 1
Reputation: 1
You are configured the web application to use struts-config.xml
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
but there's not the file with such name in the specified folder. Make sure the file exist there or if you use another name for the struts configuration file you could change this init param value to reflect the file availability. If you have several configuration files each for the module, you could use a comma to separate names.
Upvotes: 1