web-dev-qa-db-fra.com

Passer des variables de servlet à jsp

Comment puis-je passer variable de servlet à jsp? setAttribute et getAttribute n'a pas fonctionné pour moi :-(

48
Developer

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

12

Cela ne fonctionnera pas quand:

  1. Vous redirigez la réponse vers une nouvelle requête by response.sendRedirect("page.jsp"). Bien entendu, le nouvel objet de requête ne contiendra plus les attributs et ceux-ci ne seront pas accessibles dans le JSP redirigé. Vous devez transférer plutôt que rediriger. Par exemple.

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

    ${name}
    
81
BalusC

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

En servlet:

Vous pouvez définir la valeur et la transférer vers JSP comme ci-dessous

req.setAttribute("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") %>.
23
Bala

Utilisation 

request.setAttribute ("nom_attribut");

et alors 

getServletContext (). getRequestDispatcher ("/ file.jsp"). forward ();

Ensuite, il sera accessible dans le JSP.

En guise de remarque - dans votre jsp, évitez d'utiliser du code Java. Utilisez JSTL.

15
Bozho

En plus d'utiliser un attribut pour transmettre les informations d'un servlet à une page JSP, vous pouvez également transmettre un paramètre. Cela se fait simplement en redirigeant vers une URL spécifiant la page JSP en question et en ajoutant le mécanisme normal de transmission des paramètres par 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 )
    {
%>
    <p>No parameter foo given to this page.</p>
<%
    }
    else
    {
%>
    <p>The value of parameter foo is <%= fooParameter.toString() %>.</p>
<%
    }
%>
13
Teemu Leisti

Il s'agit d'un code de servlet contenant une variable de chaîne a. la valeur pour a provient d'une page html avec un formulaire. puis définissez la variable dans l'objet de requête. puis passez-le à jsp en utilisant les méthodes forward et requestdispatcher.

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

dans jsp suivez les étapes indiquées ci-dessous dans le programme

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

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

request.setAttribute("MyData", data);
RequestDispatcher rd = request.getRequestDispatcher("page.jsp");
rd.forward(request, response);
2
Rushabh Shah

Si vous utilisez Action, moyen Actionforward de 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 demande d'origine car elle vous oblige fondamentalement à faire une nouvelle demande sur le chemin désigné. Ainsi, la valeur définie dans la demande d'origine sera effacée si vous utilisez la redirection au lieu de requestdispatch.

0
Kim HyungJune

Lorsque vous utilisez setAttribute et getRequestDispatcher sur doGet, assurez-vous que vous accédez à vos pages avec les propriétés urlPatterns ("/ login", par exemple) définies pour votre servlet. Si vous le faites avec "/login.jsp", votre doGet ne sera pas appelée, aucun de vos attributs ne sera disponible.

0
Mateus Sarmento