D'État HTTP 404 - aucune Action n'est mappé pour l'espace de noms [/] et le nom d'action sur [connexion] associé avec le chemin de contexte [/struts2]
J'ai appris la théorie de Struts2 et maintenant la pratique. Confrontés à des problèmes lors de l'exécution du projet.J'ai cherché dans Google dans de nombreuses façons, mais ne pouvait pas trouver de résultat.S'il vous plaît aider moi. Ci-dessous est le code.S'il vous plaît aidez-moi les amis...
Structure de projet:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>struts2</display-name>
<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>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="resources" value="ApplicationResources" />
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default">
<action name="login" class="com.practice.structs.actions.LoginAction"
method="validateUser">
<result name="success">pages/homepage.jsp</result>
<result name="error">pages/login.jsp</result>
</action>
</package>
LoginAction.java
package com.practice.structs.actions;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private String userName;
private String password;
public String validateUser(){
if(this.userName.equalsIgnoreCase("abc") && this.password.equalsIgnoreCase("abc"))
{
return "success";
}else{
addActionError(getText("error.login"));
return "error";
}
}
/**
* @return the userName
*/
public String getUserName() {
return userName;
}
/**
* @param userName the userName to set
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}
}
de connexion.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Login page</title>
</head>
<body>
<H1><I>Login Page</I></H1>
<s:actionerror />
<s:form action="login.action" method="post">
<s:textfield name="uname" 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>
page d'accueil.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Home Page</title>
</head>
<body>
<H2><I>Welcome</I></H2>
</body>
</html>
Vous devez vous connecter pour publier un commentaire.
modifier votre code comme ceci
votre nom d'action en forme est l'action.de connexion et de struts.xml est de vous connecter à la fois doit être la même et aussi pour ajouter de l'espace de noms
Je sais que cette question est un peu dépassé, mais j'ai aussi pensé qu'il vaut la peine de mentionner, à ceux qui se trouvent à l'extrémité d'achoppement sur ce post encore et encore l'expérience de la question; en supposant que vous êtes sûr à 100% que votre mappages sont corrects et que votre web.xml contient le filtre approprié, essayez les solutions suivantes:
Comme une aide visuelle, de votre WEB-INF devrait ressembler à ceci:
Si vous ressentez toujours le problème, vérifiez vos jambes de suspension mappages de nouveau, ainsi que votre web.xml
Je n'ai pas assez de points pour répondre de Ryan commentaire, ni le taux de lui, mais ce qu'il dit est une solution valable dans des cas concrets, et je vais vous dire pourquoi.
Parfois les dossiers que vous créez dans un projet ne sont pas prises en tant que ressources de l'application, et vous devez le configurer.
Permettez-moi de m'expliquer avec un exemple pratique qui pourrait avoir eu lieu à certaines contraintes, qui a demandé à ce problème:
Lorsque vous sont en développement avec Eclipse, peut-être vous choisissez un autre explorateur de projet de l'Eclipse par défaut "Explorateur de Projet", comme le "Navigateur", par exemple.
À l'aide de "Navigator", vous pouvez créer des dossiers, mais ce dossiers ne sont pas des ressources du package (comme ils le sont lorsque vous créez des "ressources du package" avec la valeur par défaut "Explorateur de Projet"), de sorte Struts2 ne peut pas trouver "struts.xml" fichier pour configurer les actions.
Donc, le seul dossiers que votre projet processus comme "ensemble de ressources" sont ceux sous WEB-INF comme Eclipse faire dans la "Dynamique de Projets Web" par défaut.
Alors, assurez-vous d'avoir tous les fichiers de configuration dans un "ensemble de ressources".
Dans votre
LoginAction.java
propriétés que vous avez pris sontprivate String userName;
private String password;
Mais vous
login.jsp
vous avez écrit que<s:textfield name="uname" key="label.username" size="20"/>
<s:password name="password" key="label.password" size="20"/>
Changement
<s:textfield name="uname" key="label.username" size="20"/>
à<s:textfield name="userName" key="label.username" size="20"/>
J'espère que cette réponse permet de résoudre votre problème ...
effectuer les changements sur struts.xml fichier, ajouter
namespace="/"
attribut danscomme
<package name="default" namespace="/" extends="struts-default">
Pour résoudre ce problème, j'ai dû créer un dossier classes dans
WEB-INF
et de la place de lastruts.xml
fichier. Puis j'ai placé les.jsp
fichiers dans le dossier web et placé'/'
avant la.jsp
fichiers, par exemple/x.jsp