Error 404 when using the Struts application

I have been having problems with the Struts web application since a few days. I tried several solutions from StackOverflow related to my problem, but none of them work.

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

Libs I added

 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 

Error accessing URL 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 

I tried this http://java.dzone.com/articles/struts2-tutorial-part-27

There are no error issues on my console. I would be glad if someone could help me.

+4
source share
1 answer

Error 404 means that the requested resource is unavailable, the same applies to an action that does not match the request URL.

FilterDispatcher deprecated and may not work with the current version of Struts, use 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> 

in struts.xml add the following

 <package name="default" extends="struts-default" namespace="/"> <action name=""><result>/Login.jsp</result></acton> 

this will take you to the login page. Also consider using absolute paths to JSP resources.

In JSP, use a form that needs to be rewritten to

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

In the action attribute, use the name of the action and specify namespace , as it was in the package configuration.

Using method="execute" useless in the s:submit tag, the execute method is used by default, and it will not work because you disabled DMI in the Struts configuration.

Adding libraries on top of old libraries to WEB-INF/lib does not help, and your application probably does not work until you uninstall and replace all libraries of a lower version with a higher version and add new libraries necessary for the current version of the Framework Struts.

+2
source

Source: https://habr.com/ru/post/1498726/


All Articles