IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Redirection D'une servlet a une autre


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 87
    Points : 48
    Points
    48
    Par défaut Redirection D'une servlet a une autre
    Bonjour
    je sais tres bien qu'il est possible de faire une redirection dune page jsp a une servlet ou le contraire mais j'aimerai bien savoir s ke c possibe de faire la redirection d'un servlet a une autre.
    j'attend vos reponses
    merci beaucoup d'avance

  2. #2
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    aucun problème, dans le code html de ta servlet tu mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out.println("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL='NOM_AUTRE_SERVLET'\">");
    Et ça marche nickel
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    re
    merci bcp Aldian pour ta reponse.g essaye ce ke tu ma demande mais ça marche po je crois que c du a l'instruction:
    String abc = request.getParameter("Matiere"); ki se trouve au debut de la servlet BUT.
    Donc comment envoyer un parametre au moment de la redirection de la servlet source a la servlet but.
    Merci infinimant pour votre aide

  4. #4
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    aucun problème, dans le code html de ta servlet tu mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    out.println("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL='NOM_AUTRE_SERVLET?Matiere="+valMatiere+"'\">");
    Et ça marche nickel
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    RE Aldian
    t un ange lol, jrigole merci bcp pour ton aide.
    g reussit a resoudre le blem de redirection que javais MAIS g po reussit a avoir le resultat ke je cherche.g 2 servlets et une page jsp:
    1-la sevlet "InscriptionResponsable" m'envoie vers "note.jsp" et elle ecrit automatiquement le nom et prenom du 1er etudiant.
    2-je saisie les notes de cet etudiants ds les differents controles puis je clique sur suivant ki menvoie vers la servlet"enregModif".
    3-cette derniere recupere les differents notes et les stocke ds la base et me renvoie vers la servlet "InscriptionResponsable" pour avoir le 2eme etudiant..... juskau dernier etudiant.

    le blem c ke ça marche pour le 1er pour le 2 eme elle stock les meme notes que celle su 1er et pour le 3eme etudiants g cette erreur "java.lang.ArrayIndexOutOfBoundsException: 6
    projet.EnregModifi.doGet(EnregModifi.java:75)"la ligne 75 c int cf=tb[l];

    voila le code de InscriptionResponsable:
    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
     
    package projet;
     
    import java.io.*;
    import java.util.*;
    import java.sql.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
     
    import projet.enseignant.*;
     
    public class InscriptionResponsable extends HttpServlet implements Servlet {
    	private Vector vect=new Vector();
    	int j=0;
    	private Connection con;    
    	private Statement st;
    	public ResultSet rs;
    	int []tb={10,10,10,10,10,50,50};
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    		String abc = request.getParameter("Matiere");
    		if (abc == null){
    			abc = request.getParameter("mat");
    		}
    		final int i=Integer.parseInt(abc);
    		try{
    			Etudiant e = new Etudiant();
    			String Req= "SELECT Etudiant.IdEtudiant, Etudiant.Nom, Etudiant.Prenom, Inscription.IdMatiere "+ 
    		   	   			"FROM   Etudiant JOIN "+
    		   	   			"Inscription on Etudiant.IdEtudiant= Inscription.IdEtudiant "+ 
    		   	   			"WHERE Inscription.IdMatiere='"+ i +"' "+ 
    		   	   			"AND   Inscription.Annee='"+ "2007/2008" +"' ";
     
    			String url = "jdbc:odbc:li";
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    			con = DriverManager.getConnection(url, "sa", "adminadmin");
    			//st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE );
    			st = con.createStatement();
    			rs=st.executeQuery(Req);
    			while(rs.next()){
    				vect.addElement(rs.getInt(1));
    			}
     
    			while(j<vect.size()){
    				int idEtud=Integer.parseInt(String.valueOf(vect.elementAt(j)));
    				e.cherch(i,idEtud);
    				//e.setCompt(j);
    				j++;
    				HttpSession session=request.getSession(true);
    				session.setAttribute("bean3",e);
    				getServletContext().getRequestDispatcher("/note.jsp").forward(request,response);
    				break;
    			}
    		}      
     
    		catch (ClassNotFoundException e) {
    			response.sendRedirect("http://localhost:8080/test/ClassNotFoundException.html");
    		} 
    		catch (SQLException a) {
    		    response.sendRedirect("http://localhost:8080/test/SQLException.html");
    		}
     
    	}
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    		doGet(request,response);	
    }
    }
    le code de "enregModif":
    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
     
    package projet;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.sql.*;
    import java.util.Vector;
    import projet.enseignant.*;
     
     public class EnregModifi extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
    	 	private Vector vect=new Vector();
    		private Connection con;    
    		private Statement st;
    		public ResultSet rs;
    		int []tb={10,10,10,10,10,50};
     
    		protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    			int []tb={10,10,10,10,10,50};
    			int k=0;
    			String v0 = request.getParameter("id");
    			if (v0 == null){
    				v0 ="1";
    			}	
    			int b=Integer.parseInt(v0);
     
    			String v1 = request.getParameter("mat");
    			if (v1 == null){
    				v1 ="1";
    			}
    			int w=Integer.parseInt(v1);
     
    			String var0 = request.getParameter("c1");
    			if (var0 == null){
    			var0 ="0";
    			}
    			vect.addElement(var0);
     
    			String var1 = request.getParameter("c2");
    			if (var1 == null){
    				var1 ="0";
    			}
    			vect.addElement(var1);
     
    			String var2 = request.getParameter("c3");
    			if (var2 == null){
    				var2 ="0";
    			}
    			vect.addElement(var2);
     
    			String var3 = request.getParameter("tp");
    			if (var3 == null){
    				var3 ="0";
    			}
    			vect.addElement(var3);
     
    			String var4 = request.getParameter("ass");
    			if (var4 == null){
    				var4 ="0";
    			}
    			vect.addElement(var4);
     
    			String var5 = request.getParameter("exam");
    			if (var5 == null){
    				var5 ="0";
    			}
    			vect.addElement(var5);
     
    			try{
    				Etudiant e = new Etudiant();
    				for(int l=0;l<(vect.size());l++){
    					float nt=(Float.valueOf(String.valueOf(vect.elementAt(l)))).floatValue();
    					k=l+1;
    					int cf=tb[l];
    					e.note(b,w,k,nt,cf);
    				}
    				response.setContentType("text/html");
    				PrintWriter out=response.getWriter();
    				//out.println("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL='InscriptionResponsable'\">");
    				out.println("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL='InscriptionResponsable?Matiere="+w+"'\">");
    			}
    			catch (ClassNotFoundException e) {
    				response.sendRedirect("http://localhost:8080/test/ClassNotFoundException.html");
    			} 
    			catch (SQLException a) {
    				response.sendRedirect("http://localhost:8080/test/error.html");
    			}
    	 }  	
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request,response);
    	}   	  	    
    }
    el le code de "note.jsp":
    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
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ page import="projet.enseignant.*" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Notes</title>
    </head>
     
    <body>
    <jsp:useBean  id="bean1" scope="session" class="projet.enseignant.Enseignant">
    </jsp:useBean>
     
    <%
    Etudiant etud = (Etudiant)session.getAttribute("bean3");
    int val5=etud.getId();
    int val0=etud.getIdMat();
    String val1=etud.getNom();
    String val2=etud.getPrenom();
    String val3=bean1.libelleMat(val0);
    %>
     
     
    <form name="frm" action="EnregModifi" method="post">
    <h1 align="center"> Saisie de notes de la matière <%=val3 %></h1>
     
    <table align="center">
    <tr>
    <td>Nom: </td>
    <td><input type="text" name="nom" value="<%=val1 %>"/></td>
    </tr>
     
    <tr>
    <td>Prénom: </td>
    <td><input type="text" name="prenom" value="<%=val2 %>"/></td>
    </tr>
     
    <tr>
    <td>Controle1: </td>
    <td><input type="text" name="c1" /></td>
    </tr>
     
    <tr>
    <td>Controle2: </td>
    <td><input type="text" name="c2" /></td>
    </tr>
     
    <tr>
    <td>Controle3: </td>
    <td><input type="text" name="c3" /></td>
    </tr>
     
    <tr>
    <td>TP: </td>
    <td><input type="text" name="tp" /></td>
    </tr>
     
    <tr>
    <td>Assiduité: </td>
    <td><input type="text" name="ass" /></td>
    </tr>
     
    <tr>
    <td>Exam: </td>
    <td><input type="text" name="exam" /></td>
    </tr>
     
    <tr>
    <td><input type="hidden" name="mat" value="<%=val0 %>" /></td>
    </tr>
     
    <tr>
    <td><input type="hidden" name="id" value="<%=val5 %>" /></td>
    </tr>
     
    <tr>
    <td></td>
    <td align="right"><input type="submit" name ="bout" value="Suivant"/></td>
    </tr>
     
    </table>
    </form>
    </body>
    </html>
    merci infiniment

  6. #6
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Il y a plusieurs trucs bizarres dans ton code. D'abord au niveau de ton erreur, l'as tu regardée de près?

    En gros tu fais une boucle de 0 à taille du vecteur et du prend les ièmes éléments d'un autre tableau. Donc suffit que la taille du vecteur soit supérieure à celle du tableau et tu en dépasse les bornes.



    Sinon le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    while(j<vect.size()){
    				int idEtud=Integer.parseInt(String.valueOf(vect.elementAt(j)));
    				e.cherch(i,idEtud);
    				//e.setCompt(j);
    				j++;
    				HttpSession session=request.getSession(true);
    				session.setAttribute("bean3",e);
    				getServletContext().getRequestDispatcher("/note.jsp").forward(request,response);
    				break;
    			}
    me parait un peu naïf. Je ne m'avancerai pas trop la dessus parce que je ne suis pas non plus un vieux de la vielle, mais à mon avis ce qui se passe c'est que la boucle effectue la première redirection, et que sans attendre qu'il se passe quelque chose elle continue à boucler j'usquà la fin, sauf que peut être qu'elle ne peut plus rien rediriger vu qu'elle l'a déjà fait un coup. en tout cas lorsque tu rappelles ta servlet pour le deuxieme élève, il y a des chances pour qu'elle se réexécute du début te proposant à nouveau le premier élève.


    Si j'ai bon la solution est toute bête, il faut enlever la boucle while et mettre un paramêtre statique compteur initialisé à -1 que tu incrémente à chaque appel de la première servlet.
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    merci bcp ALDIAN POUR T CONSEILS,
    jtien a te dire que chui encore debutante en j2ee et ke je connai po grand chose mais si jmes po une boucle while comment mon traitement va s'arreter au dernier etudiant?
    s ke tu peux me montrer ce ke te semble juste.
    Merci bcp bcp.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 60
    Points : 68
    Points
    68
    Par défaut
    Bonsoir, pour une redirection de servlet-servlet, il faut utiliser l'objet Requestdispatcher qui est renvoyé par la méthode getRequestDispatcher() de l'objet ServletRequest et donc aussi par HttpServletRequest. Cette objet te permet entre autre de juste include le résultat d'une servlet tièrce dans la réponse de la première ou de déléguer complètement le traitement de la requete à la deuxième servlet par l'intermédiaire de ses méthodes include() et forward(). Avec cet objet, le chemin de ta deuxième servlet peut être relatif mais il ne doit pas sortir du contexte courant. Si tu projete de sortir du contexte courant, il faut utiliser l'objet Requestdispatcher retourné par la méthode getRequestDispatcher() de l'objet ServletContext avec ici le fait que le chemin spécifié doit être absolu.


    Bonne chance.

  9. #9
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    Bon j'ai pas très bien compris ce qu'à dit le monsieur au dessus (trop dense) mais il a surement raison.

    Sinon pour répondre à ta question, chaque fois que tu redirige vers une servlet, tu l'exécute. donc ta boucle, c'est la boucle des redirections. Chaque fois que tu appelle la 1ere servlet, la variable statique dont nous avons parlé plus haut doit avoir une incrémentation. bon ben tu fais juste un test qui arrete les redirections quand la variable statique devient supérieure au nombre d'élèves
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 109
    Points
    109
    Par défaut
    Ca me semble un peu étrange cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int []tb={10,10,10,10,10,50};
    Au début de la classe 'EnregModifi'

    ca serait pas plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int tb[]={10,10,10,10,10,50};
    Il faut que tu sois sur(e) que la taille de ton vecteur 'vect', corresponde aussi à la taille de ton tableau 'tb'. Et c'est surement la source de l'erreur.
    JAVA le dire a tout le monde

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 87
    Points : 48
    Points
    48
    Par défaut po un blem de taille du tableau
    Bonjour
    Primo jvous remercie ts pour vos reponses.
    pour m.klaury g po bien pigé ce ke tu veux dire s ke tu peux mdonner un exemle.
    pour Aldian g reussis a boucler ts les etudians avec la meme servlet slm a une tte petite modification.
    pour yozine chui SURE kils ont la meme tialle et jtexplique prk
    le vecteur contient les notes des differents type de controle dune seule matiere et ils sont de nombre 6 et le tableau contient 6 cases ki representent les coefficients donc jamais il yaura un blem a ce stade.
    le blem mnt c ke la servlet "EnregModifi" conserve les memes notes ke celles du premier etudiant elle prend po les nouvelles valeurs du formulaire de la page "note.jsp".

    merci infiniment pour vos reponses les amis.

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 11h52
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 13h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 14h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 14h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo