Bonjour,
Je vourdrais faire un forward vers une page JSP. (Servlet) --> (JSP)
est - il possible ?
Bonjour,
Je vourdrais faire un forward vers une page JSP. (Servlet) --> (JSP)
est - il possible ?
ben oui
getServletContext().getRequestDispatcher("/page.jsp").forward(request, response);
Dans ma Servlet LoginServlet, je test si le login de l'utilisateur est dans la BD. si ok je stock la session. sinon je forward vers la page login.jsp.
login.jsp
loginServlet.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
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
58
59
60
61
62
63
64
65
66
67
68
69 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>BD AGR</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <P> </P><P></P><P align="center"> <IMG src="../images/db_agr.jpg" alt="DB AGR" border="0" align="middle"> </P><FORM name="FrmLogin" action="/LoginServlet" method="post"> <P> </P><TABLE border="0" align="center"> <TR> <TD> <P align="left"> login </P></TD> <TD> <INPUT type="text" name="login" maxlength="15"> </TD> </TR> <TR> <TD> <P align="left"> Mot de Passe </P></TD> <TD> <INPUT type="password" name="passwd" maxlength="10"> </TD> </TR> <TR> <TD></TD> <TD> <P align="right"> <INPUT type="submit" name="Valider" value="Valider" ></P> </TD> </TR> </TABLE><P></P> <P> </P> <P> </P> <P> </P> </FORM> </body> </html>
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151 package com.ge.health.em.agr.servlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import com.ge.health.em.agr.db.DBManager; public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final Logger logger = Logger.getLogger(LoginServlet.class.getName()); /** * Constructor of the object. */ public LoginServlet() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String login = request.getParameter("login"); String passwd = request.getParameter("passwd"); DBManager db=null; Connection ct=null; Statement st=null; ResultSet rs=null; String query=""; query = "select * from AGR_DEMANDEUR where NOM ='" + login +"'"; try{ db = DBManager.getInstance(); ct = db.getConnection(); st = ct.createStatement(); rs = st.executeQuery(query); while (rs.next()) { HttpSession session = request.getSession(true); session.setAttribute("login",login); if (!(login.equals (null)) && login.equals(rs.getString ("NOM")) && !(passwd.equals (null))){ System.out.println("ok"); System.out.println(rs.getString ("NOM")); getServletContext().getRequestDispatcher("/jsp/index_main.jsp").forward(request, response); //String newURL = "/jsp/agr_consult/agr_search.jsp"; //RequestDispatcher disp = request.getRequestDispatcher("/jsp/index_main.jsp"); //disp.forward(request, response); System.out.println("ok forward"); } else if (!(login.equals(rs.getString ("NOM")) && !(passwd.equals(null)))) { System.out.println("ko"); getServletContext().getRequestDispatcher("/jsp/login.jsp").forward(request, response); //RequestDispatcher disp = request.getRequestDispatcher("/login.jsp"); //disp.forward(request, response); } else { out.println("Compte Inconnu !!"); } } } catch (SQLException sqlEx){ logger.error("SQLException in table Agr_Demandeur LOGIN() : " + sqlEx); } catch (Exception e){ logger.error("Exception in table Agr_Demandeur LOGIN() : " + e); }finally{ try { rs.close(); rs = null; db.finalClose(st, ct); } catch (SQLException sqlEx) { logger.error("SQLException while closing ResultSet OR Connection in insertSQL() : " + sqlEx); } } } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occure */ public void init() throws ServletException { // Put your code here } }
d'où penses tu le probleme ??
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" 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"> <distributable/> <servlet> <servlet-name>DAG_Read</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.DAG_Read</servlet-class> </servlet> <servlet> <servlet-name>User_Consult</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.User_Consult</servlet-class> </servlet> <servlet> <servlet-name>Doc_Template</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.Doc_Template</servlet-class> </servlet> <servlet> <servlet-name>Admin_Global</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.Admin_Global</servlet-class> </servlet> <servlet> <servlet-name>DAG_FileTransfer</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.DAG_FileTransfer</servlet-class> </servlet> <servlet> <servlet-name>Log4J_InitFromDB</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.Log4J_InitFromDB</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>DB_DuplicateAnAgr</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.DB_DuplicateAnAgr</servlet-class> </servlet> <servlet> <servlet-name>DB_ModifyAnAgr</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.DB_ModifyAnAgr</servlet-class> </servlet> <servlet> <servlet-name>DB_DeleteAnAgr</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.DB_DeleteAnAgr</servlet-class> </servlet> <servlet> <servlet-name>DB_MoveAnAgr</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.DB_MoveAnAgr</servlet-class> </servlet> <servlet> <servlet-name>DB_CreateAnAgr</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.DB_CreateAnAgr</servlet-class> </servlet> <servlet> <servlet-name>Export_Oracle2Excel</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.Export_Oracle2Excel</servlet-class> </servlet> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>DAG_Read</servlet-name> <url-pattern>/DAG_Read</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>User_Consult</servlet-name> <url-pattern>/User_Consult</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Doc_Template</servlet-name> <url-pattern>/Doc_Template</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Admin_Global</servlet-name> <url-pattern>/Admin_Global</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>DAG_FileTransfer</servlet-name> <url-pattern>/DAG_FileTransfer</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Log4J_InitFromDB</servlet-name> <url-pattern>/Log4J_InitFromDB</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>DB_DuplicateAnAgr</servlet-name> <url-pattern>/DB_DuplicateAnAgr</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>DB_ModifyAnAgr</servlet-name> <url-pattern>/DB_ModifyAnAgr</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>DB_DeleteAnAgr</servlet-name> <url-pattern>/DB_DeleteAnAgr</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>DB_MoveAnAgr</servlet-name> <url-pattern>/DB_MoveAnAgr</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>DB_CreateAnAgr</servlet-name> <url-pattern>/DB_CreateAnAgr</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Export_Oracle2Excel</servlet-name> <url-pattern>/Export_Oracle2Excel</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/jsp/login.jsp</welcome-file> </welcome-file-list></web-app>
En resultat:
j'ai une page blanche, avec l'URL de ma servlet ds le browser.
c'est bisar,
pourquoi tu mets ton login en session et aprés tu testes s'il est bon..????
En plus ca doit plus tot être HttpSession session = request.getSession() ; et non pas HttpSession session = request.getSession(true) ;
ta mise en session je la ferait plutot une fois que je suis sur que le login est bon... nan? donc dans le if.. A moins que j 'ai mal compris ton code...
oui, tout à fait, il faut tester d'abord et apres faire la mise en session.
Mais ce n'est pas normal de ne pas avoir ma page jsp aprés ?
essaie juste de mettre "/index_main.jsp" dans ton request dispatcher...
Essaie de mettre plutot ton traitement dans la methode doGet()... Moi j'ai un code qui fait a peu pres le meme traitement et ca fonctionne... tiens voilà le code de la servlet si ca peut te servir:
fait pas gaffe a la gestion de la connexion c'est jste une servlet de test... C'est pas le must en codage niveau connexion..
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 package maServlet; import src.*; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.sql.*; /** * Servlet implementation class for Servlet: VerifConnectionSVR * */ public class VerifConnectionSVR extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { /* (non-Java-doc) * @see javax.servlet.http.HttpServlet#HttpServlet() */ public VerifConnectionSVR() { super(); } /* (non-Java-doc) * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String identifiantCh = request.getParameter("identifiant"), motDePasseCh = request.getParameter("motDePasse"); String pathBd,loginBd, pwdBd; boolean isPresent = false; pathBd = getServletContext().getInitParameter("baseDeDonnees"); loginBd = getServletContext().getInitParameter("login"); pwdBd = getServletContext().getInitParameter("pwd"); try{ java.sql.Connection cnx = java.sql.DriverManager.getConnection(pathBd,loginBd,pwdBd); java.sql.Statement requete = cnx.createStatement(); java.sql.ResultSet rs = requete.executeQuery("SELECT * FROM client"); //Parcours du résultat int idClient=0; Client monClient = new Client(); while((rs.next())&&(!isPresent)) { //Login et mot de passe correspond a une entree dans la base de données if((identifiantCh.equals(rs.getString("nom")))&&(motDePasseCh.equals(rs.getString("motDePasse")))){ idClient = rs.getInt("refClient"); isPresent = true; monClient.chargeDepuisBase(rs); } } //On ferme la connexion a la base... rs.close(); requete.close(); cnx.close(); //Je met le client en session HttpSession session = request.getSession() ; session.setAttribute("leClient", monClient) ; System.out.println(((Client)session.getAttribute("leClient")).getNom()); //Je renvoie vers le menu if(isPresent) getServletContext().getRequestDispatcher("/listeMenu.jsp").forward(request,response); else getServletContext().getRequestDispatcher("/index.jsp").forward(request, response); }catch(SQLException e) { //probleme de connexion a la base, on revient sur la page d'acceuil... getServletContext().getRequestDispatcher("/index.jsp").forward(request, response); } } /* (non-Java-doc) * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request,response); } }
j'ai fais un peu exactement comme toi, dans la methode doGet; mais j'ai toujours la page blache, avec un URL "/LoginServlet" dans mon browser.
Faut-il changer le mapping de mon 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142 package com.ge.health.em.agr.servlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import com.ge.health.em.agr.db.DBManager; import com.ge.health.em.agr.doc.Agr_Demandeur; public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final Logger logger = Logger.getLogger(LoginServlet.class.getName()); /** * Constructor of the object. */ public LoginServlet() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String login = request.getParameter("login"); String passwd = request.getParameter("passwd"); DBManager db=null; Connection ct=null; Statement st=null; ResultSet rs=null; String query=""; query = "select * from AGR_DEMANDEUR"; try{ db = DBManager.getInstance(); ct = db.getConnection(); st = ct.createStatement(); rs = st.executeQuery(query); int id_Demandeur = 0; boolean b=false; String nom =""; String prenom =""; while((rs.next()) && !b) { if (login.equals(rs.getString ("NOM")) && !(passwd.equals (null))) { id_Demandeur =rs.getInt("DEMANDEUR_ID"); nom=rs.getString("NOM"); prenom=rs.getString("PRENOM"); b=true; } } rs.close(); st.close(); ct.close(); HttpSession session = request.getSession(); session.setAttribute("nom",nom); if (b) { getServletContext().getRequestDispatcher("/jsp/index_main.jsp").forward(request, response); } else getServletContext().getRequestDispatcher("/login.jsp").forward(request, response); } catch (SQLException sqlEx){ logger.error("SQLException in table Agr_Demandeur LOGIN() : " + sqlEx); } catch (Exception e){ logger.error("Exception in table Agr_Demandeur LOGIN() : " + e); }finally{ try { rs.close(); rs = null; db.finalClose(st, ct); } catch (SQLException sqlEx) { logger.error("SQLException while closing ResultSet OR Connection in insertSQL() : " + sqlEx); } } } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occure */ public void init() throws ServletException { // Put your code here } }
Non je trouve que ton web.xml est correct. De plus j'ai repris ton code de servlet dans eclispeWTP il genere le wb.xml c'est les memes parametres... Ca doit plutot etre au niveau de ton codage... Faut se pencher là dessus...
T'as essayer de redemarrer ton serveur? Apres avoir effectuer tes modifications?
ça pourra IE, je pense.
car, meme si je modifie mon web.xml
par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <welcome-file-list> <welcome-file>/jsp/login.jsp</welcome-file> </welcome-file-list>
et meme si redemarre mon Serveur JBoss, reouvrir une nouvelle fenetre, redeployer mon appli ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <welcome-file-list> <welcome-file>/jsp/index_main.jsp</welcome-file> </welcome-file-list>
j'ai toujours la page "login.jsp"
c'est etrange ça !!
là je te dirai que malheureusement je ne vois pas où se trouve se problème.. C'est franchement bizarre!
Là je dirai que je suis "out" Désolé...
OK
Merci bc de votre aide à moi.
à le prochain pb alors
c'est bon pour le pb du web.xml.
Mais, j'ai toujours la page blanche aprés le forward.
il faut coder ton web.xml:<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.ge.health.em.agr.servlet.LoginServlet</servlet-class>
</servlet>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.ge.health.em.agr.servlet.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/servlet/LoginServlet</url-pattern> </servlet-mapping>><FORM name="FrmLogin" action="/LoginServlet" method="post">car ta method post renvoit vers la methode doGet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <form action="/contextSiteWeb/servlet/LoginServlet" method="post">
Là ca devrait marcher. Je ne pense pas que l'erreur vient des foward qui sont correctes si tu as placer les "ect.jsp" dans le repertoire "/jsp".
C bon ça marche.
Merci BC.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager