Bonjour à tous,
Je découvre la programmation en java à l aide des jsp. Abordant le chapitre Struts, je rencontre un problème pour leurs utilisations.
Quand je cherche à acceder à ma jsp principal l'erreur suivante s'affiche.
Je cherche depuis bientôt 2 jours mais je n ai pas trouvé de solutions pour résoudre mon problème.org.apache.jasper.JasperException: Cannot retrieve mapping for action: "/enregistrement"
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Voici les différents fichiers de mon application:
struts-config.xml:
web.xml
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans> <form-bean name="EnregistrementForm" type="monapp.EnregistrementForm"/> </form-beans> <action-mappings> <action path="/monstruts" type="monapp.EnregistrementAction" name="EnregistrementForm" input="/enregistrement.jsp"> <forward name="ok" path="/ok.html"/> <forward name="echec" path="/echec.html"/> </action> </action-mappings> </struts-config>
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>JavaBeans</display-name> <description> Dcouverte des JavaBeans </description> <!-- Action Servlet Configuration --> <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> <load-on-startup>1</load-on-startup> </servlet> <!-- Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- Struts Tag Library Descriptors --> <taglib> <taglib-uri>/WEB-INF/tld/struts-bean.tld</taglib-uri> <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/tld/struts-html.tld</taglib-uri> <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/tld/struts-logic.tld</taglib-uri> <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location> </taglib> </web-app>
Ces 2 fichiers se trouvent sous WEB-INF.
Ensuite j ai 2 classes java:
EnregistrementForm.java :
et EnregistrementAction.java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package monapp; import org.apache.struts.action.*; public class EnregistrementForm extends ActionForm { String Nom; String Pass; String PassConfirm; String getNom(){return Nom;} String getPass(){return Pass;} String getPassConfirm(){return PassConfirm;} public void setNom(String Nom){this.Nom = Nom;} public void setPass(String Pass){this.Pass = Pass;} public void setPassConfirm(String PassConfirm){this.PassConfirm = PassConfirm;} }
Ces 2 classes se trouvent sous le package monapp.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 package monapp; import org.apache.struts.action.*; import javax.servlet.http.*; import java.sql.*; import java.io.*; //EnregistrementAction hrite de Struts Action public class EnregistrementAction extends Action{ //La mthode perform vient de Struts 1.0, remplace par la mthode exectue //(gestion d'exception supplmentaire) de Struts 1.1 public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res){ //Casting de EnregistrementForm en tant qu'objet form EnregistrementForm rf = (EnregistrementForm) form; String nom = rf.getNom(); String pass = rf.getPass(); String passConfirm = rf.getPassConfirm(); //Implmentation de la logique mtier (vrification que les 2 mots de passes sont identiques et insertion dans la base de donnes) if(pass.equals(passConfirm)){ //Chargement du pilote JDBC try{Class.forName("org.gjt.mm.mysql.Driver");} catch(java.lang.ClassNotFoundException e){ System.out.println("Pilote JDBC non trouv!"); } try{ //connexion la base de donnes String url = "jdbc:mysql://localhost/madb?user=root&password=mysqlweb"; Connection con; con = DriverManager.getConnection(url); //Prparation et excution de la requte sql PreparedStatement p = con.prepareStatement("insert into matable(nom, pass) values (?,?)"); p.setString(1, nom); p.setString(2, pass); ResultSet r = p.executeQuery(); p.close(); }//fin du try connexion la base // Renvoie l'exception en cas d'erreur base ou sql catch(SQLException ex){ System.out.println("Erreur base de donnes"); System.out.println("Message: "+ ex.getMessage()); System.out.println("Mesasge: "+ ex.getSQLState()); System.out.println("Message: "+ ex.getErrorCode()); } //Appel de l'objet ActionMapping pour envoyer vers le fichier ok.html return mapping.findForward("ok"); } else{ //Appel ActionMapping pour envoyer vers le fichier echec.html si le mot de passe de confirmation n'est pas le mme return mapping.findForward("echec"); } } }
Et pour finir 1 fichier jsp pour la saisie de l'information et 2 pages html pour retourner le résultat de l'opération.
enregistrement.jsp :
ok.html :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %> <html:form action="enregistrement"> Nom:<html:text property="nom"/><br> Entrez le mot de passe:<html:password property="pass"/><br> Entrez le mot de passe nouveau:<html:password property="passConfirm"/><br> <html:submit value="Enregistrement"/> </html:form>
et echec.html :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9<html> <head> <title>Ok</title> </head> <body> Enregistrement réussi ! <br><a href="enregistrement.jsp">Enregistrer un autre membre</a> </body> </html>
J'utilise les librairies struts 1.3.8 donc je ne sais pas si tous mes DOCTYPE sont corrects enfin il me semble.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <html> <head> <title>Echec</title> </head> <body> Echec de l'enregistrement <br><a href="enregistrement.jsp">Enregistrer un autre membre</a> </body> </html>
Merci aux bonnes âmes qui se pencheront sur mon problème.
Partager