Bonjour a tous,
Je débute en Java web et après avoir suivi plusieurs tuto et réussi à faire 2 ou 3 trucs, une question me turlupine !!!
Faut-il faire autant de servlet que l'on a de jsp ou peut-on en faire qu'une ?
Je m'explique :
J'ai réalisé en architecture MVC un petite appli web qui permet d'enregistrer des mots de passes dans une base de donnée (le tout est fait sous NetBean avec glassfish)
J'ai :
- une page index.jsp qui contient 3 formulaires (j'ai pas trouvé mieux pour mettre 3 boutons avec des actions différentes , en y pensant j'aurais pu mettre des simples liens mais je voulais passer par la servlet pour dispatcher) :
- une page avec un formulaire pour saisir l'utilisateur (je passe les en-tete...):
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 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Gestion des utilisateurs</title> <link rel="stylesheet" media="screen" type="text/css" title="style" href="styles.css" /> </head> <body> <div id="en-tete"> <p class="p_entete"> <label>GESTION DES UTILISATEURS</label> </p> </div> <div id="Corps"> <p>Bienvenue sur le site de gestion des utilisateurs de la base de données BDD1</p> <p>Veuillez sélectionner une tâche à réaliser sur la base :</p> <form method="post" action="test/add"> <input type="submit" class="submit" value="Créer un utilisateur" /> </form> <form method="post" action="test/liste"> <input type="submit" class="submit" value="Liste des utilisateurs"/> </form> <form method="post" action="test/del"> <input type="submit" class="submit" value="Supprimer un utilisateur"/> </form> </div> </body> </html>
- la servlet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <form method="post" action="test/ajouter"> <p> <label>Saisir votre login</label> : <input type="text" name="pseudo" maxlength="10" /> </p> <p> <label>Saisir votre mot de passe</label> : <input type="password" name="Passwd" maxlength="10" /> </p> <p> <input type="submit" /> </p> </form>
et le fichier web.xml :
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 package com.test.jdbc; import [...] public class test extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); boolean test; RequestDispatcher rd = null; try { String path=request.getPathInfo(); //Affichage des différentes pages à partir de index.jsp if(path.equals("/add")){ rd = getServletContext().getRequestDispatcher("/CreateUtil.jsp"); }else if (path.equals("/liste")){ rd = getServletContext().getRequestDispatcher("/listeUsers.jsp"); }else if (path.equals("/del")){ rd = getServletContext().getRequestDispatcher("/DelUsers.jsp"); }else if (path.equals("/styles.css")){ rd = getServletContext().getRequestDispatcher("/styles.css"); //Traitement }else if (path.equals("/test/ajouter")){ //rd = getServletContext().getRequestDispatcher("/DelUsers.jsp"); [...] // j'ai enlevé le code de traitement rd = getServletContext().getRequestDispatcher("/AfficheUser.jsp"); [...] } }else{ rd = getServletContext().getRequestDispatcher("/error.jsp"); } rd.forward(request, response); } finally { out.close(); } } [...] //méthodes doGet et doPost }
Jusqu'ici tout fonctionne par contre et ma question est au sujet de l'URL :
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 <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>test</servlet-name> <servlet-class>com.test.jdbc.test</servlet-class> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/test/*</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> </web-app>
la 1ère est : http://localhost:8080/TestJDBC/
quand je clique sur le bouton ajouter dans index.jsp, l'URL devient
http://localhost:8080/TestJDBC/test/add
puis quand je rempli les cases du formulaire et que je valide elle devient :
http://localhost:8080/TestJDBC/test/test/ajouter
La dernière URL ouvre une autre jsp qui contient le nom et le mot de passe qui a été enregistré dans la base.
Si a chaque fois que j'ai une jsp, que je valide et que je passe par la même servlet plusieurs fois comment faire pour pas se retrouver avec une URL du genre http://localhost:8080/TestJDBC/test/...est/test/test/....
Doit on faire plusieurs servlets ? comment fait on à partir de la dernière page pour revenir au sommaire (quel lien je mets ) ? Dois-je modifier le mapping dans web.xml ? en fait je suis complètement perdu donc si vous pouvez m'aider merci d'avance.
Et merci à ceux qui auront lu mon long post...
Partager