Passer les variables de servlet à jsp

Comment puis-je passer une variable de servlet à jsp? setAtsortingbute et getAtsortingbute n’ont pas fonctionné pour moi 🙁

Vous pouvez définir toutes les valeurs dans l’object de réponse avant de renvoyer la demande au fichier jsp. Ou vous pouvez mettre vos valeurs dans un bean de session et y accéder dans le jsp.

Il ne fonctionnera pas lorsque:

  1. Vous redirigez la réponse à une nouvelle demande par response.sendRedirect("page.jsp") . L’object requête nouvellement créé ne contiendra évidemment plus les atsortingbuts et ils ne seront plus accessibles dans le JSP redirigé. Vous devez transférer plutôt que redirect. Par exemple

     request.setAtsortingbute("name", "value"); request.getRequestDispatcher("page.jsp").forward(request, response); 
  2. Vous y accédez de manière erronée ou utilisez un mauvais nom . En supposant que vous l’ayez défini avec le nom "name" , vous devriez pouvoir y accéder dans la page JSP transférée comme suit:

     ${name} 

Manière simple que j’ai trouvé est,

En servlet:

Vous pouvez définir la valeur et l’envoyer à JSP comme ci-dessous

 req.setAtsortingbute("myname",login); req.getRequestDispatcher("welcome.jsp").forward(req, resp); 

Dans Welcome.jsp, vous pouvez obtenir les valeurs par

 .<%String name = (String)request.getAttribute("myname"); %> <%= name%> 

(ou) directement vous pouvez appeler

 <%= request.getAttribute("myname") %>. 

Utilisation

request.setAtsortingbute (“atsortingbuteName”);

et alors

getServletContext (). getRequestDispatcher (“/ file.jsp”). forward ();

Ensuite, il sera accessible dans le JSP.

En guise de remarque, dans votre JSP, évitez d’utiliser le code java. Utilisez JSTL.

Outre l’utilisation d’un atsortingbut pour transmettre des informations d’un servlet à une page JSP, il est également possible de passer un paramètre . Cela se fait simplement en redirigeant vers une URL qui spécifie la page JSP en question et en ajoutant le mécanisme normal de passage des parameters via l’URL.

Un exemple. La partie pertinente du code de servlet:

 protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.setContentType( "text/html" ); // processing the request not shown... // // here we decide to send the value "bar" in parameter // "foo" to the JSP page example.jsp: response.sendRedirect( "example.jsp?foo=bar" ); } 

Et la partie pertinente de la page JSP example.jsp :

 <% String fooParameter = request.getParameter( "foo" ); if ( fooParameter == null ) { %> 

No parameter foo given to this page.

<% } else { %>

The value of parameter foo is <%= fooParameter.toString() %>.

<% } %>

Ceci est un code de servlet qui contient une variable de chaîne a. La valeur de a provient d’une page HTML avec formulaire. puis définissez la variable dans l’object de requête. transmettez-le ensuite à jsp en utilisant forward méthodes forward et requestdispatcher .

 Ssortingng a=req.getParameter("username"); req.setAtsortingbute("name", a); RequestDispatcher rd=req.getRequestDispatcher("/login.jsp"); rd.forward(req, resp); 

dans jsp suivez ces étapes ci-dessous dans le programme

 <%String name=(String)request.getAttribute("name"); out.print("your name"+name);%> 

Vous pouvez également utiliser RequestDispacher et transmettre les données avec la page jsp souhaitée.

 request.setAtsortingbute("MyData", data); RequestDispatcher rd = request.getRequestDispatcher("page.jsp"); rd.forward(request, response); 

Lorsque vous utilisez setAtsortingbute et getRequestDispatcher sur doGet , assurez-vous que vous accédez à vos pages avec les parameters urlPatterns (“/ login” par exemple) définis pour votre servlet. Si vous le faites avec “/login.jsp”, votre doGet ne sera pas appelé, donc aucun de vos atsortingbuts ne sera disponible.

Si vous utilisez Action, un moyen d’action rapide pour traiter la logique métier et la page suivante à afficher, vérifiez si la redirection est appelée. Comme beaucoup d’autres l’ont fait remarquer, la redirection ne conserve pas votre requête initiale, car elle vous oblige fondamentalement à faire une nouvelle demande sur le chemin désigné. Ainsi, la valeur définie dans la demande d’origine disparaîtra si vous utilisez la redirection au lieu de requestdispatch.