2014-05-06 6 views
-1

J'ai deux servlets. La première (doGet) me montre la forme et le second (doPost) traite la formetransfert de données entre deux servlets

Voici mon premier servlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     Nodes nodes = nodes_dao.start(request); 
     int id = nodes.getId_node(); 

     request.setAttribute("nodes", nodes); 
     request.setAttribute("id", id); 
     request.getRequestDispatcher(VUE).forward(request, response); 
    } 

Et voici mon deuxième servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     String question = null; 
     String result = null; 

     question = request.getParameter("question"); 
     result = request.getParameter("result"); 
     Node_dao dao = new Node_dao(); 

     try 
     { 
      dao.insert_result(result); 
      int left_id = dao.select_left_id(result); 
      dao.insert_question(question, left_id); 


     } 

Par exemple , comment puis-je récupérer l'identifiant de la première servlet dans la seconde?

Merci

+0

Vous pouvez utiliser le partage de contexte de session, de requête ou de servlet, voir ici: http://stackoverflow.com/questions/123657/how-can-i-share-a-variable-or-object-between-two- or-more-servlets –

+0

Mettez-le dans un champ de saisie masqué dans le formulaire? Ce n'est pas comme si vous passiez directement de la servlet A à la servlet B, entre il y a un client (navigateur) qui soumet les données du formulaire. Au moins c'est ce que je pense, c'est très vague ce que vous publiez puisqu'il y a aussi un forward là ... – Gimby

+0

Pourquoi est-ce que quelqu'un suggérerait qu'il ajoute une entrée cachée quand il ajoute clairement l'identifiant dans les attributs de la requête et ensuite le transfère? Il n'y a même pas de formulaire HTML dans le code ci-dessus. – developerwjk

Répondre

0

Vous appelez déjà request.setAttribute("id", id); dans la première servlet, puis la redirigez vers la seconde. Il vous suffit donc d'appeler le int id = (int)request.getAttribute("id"); dans la deuxième servlet. Cependant, il y a un deuxième problème. Vous ne pouvez pas changer de façon magique le type de MÉTHODE en le transférant. Si la requête d'origine était GET, elle est toujours GET après l'avant. Donc votre deuxième servlet doit gérer la requête dans un doGet et non un doPost.

+0

ok merci, je connaissais ce problème mais dans le premier jsp c'est une série de questions avec méthode get. Et dans le second jsp, l'utilisateur insère une nouvelle question et un nouveau résultat avec un post de méthode. Donc, j'ai une servlet avec doGet et la seconde avec doPost. Il n'y a pas de solution? Merci – Biohazard401

Questions connexes