2010-08-31 93 views

Respuesta

10

Se podría establecer todos los valores en el objeto respuesta antes de forwaring la solicitud a la JSP. O usted puede poner sus valores en un bean de sesión y acceder a ella en el JSP

+0

Gracias amigo. Hice lo mismo y funcionó para mí. :-) – Developer

14

uso

request.setAttribute ("attributeName");.

y luego

getServletContext(). GetRequestDispatcher ("/ file.jsp"). Forward();

A continuación, será accesible en el JSP.

Como nota al margen: en su jsp evite usar el código de Java. Usa JSTL.

+0

Gracias Bozho! No sé mucho sobre JSTL en este momento. Pero definitivamente voy a aprenderlo. – Developer

+0

¿Por qué 'getServletContext()' y no 'request'? – CodyBugstein

74

Se dejará de funcionar cuando:

  1. te vamos a redirigir la respuesta a una nueva solicitud por response.sendRedirect("page.jsp"). El objeto de solicitud recientemente creado ya no contendrá los atributos y no será accesible en el JSP redirigido. Necesita reenviar en lugar de redirigir. P.ej.

    request.setAttribute("name", "value"); 
    request.getRequestDispatcher("page.jsp").forward(request, response); 
    
  2. Usted está accediendo a la manera incorrecta o el uso de la nombre equivocado. Suponiendo que haya configurado utilizando el nombre "name", entonces usted debería ser capaz de acceder a él en la página remitido JSP de la siguiente manera:

    ${name} 
    
+0

El reenvío después de, por ejemplo, el envío de un formulario se considera una mala práctica; debe utilizar los redireccionamientos reales (301). Luego, debe pasar el estado por sesiones u obtener parámetros. – lukyer

+0

sí respuesta perfecta @BalusC – Binay

+0

@BalusC, ¿qué quiere decir con "debería poder acceder a ella en la página JSP reenviada de la siguiente manera: $ {nombre}" ?? Intenté escribir <% out.println ($ {name});%> y no funcionó. pero <% out.println (request.getAttribute ("name"));%> did. – Pavel

12

Además de utilizar un atributopara pasar información de una servlet a una página JSP, también se puede pasar un parámetro . Esto se hace simplemente redirigiendo a una URL que especifica la página JSP en cuestión y agregando el mecanismo normal de parámetro-paso a través de la URL.

Un ejemplo.La parte pertinente del código del 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"); 
} 

y la parte pertinente de la página 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> 
<% 
    } 
%> 
17

forma simple, que me pareció es decir,

En servlet:

Puede establecer el valor y reenviarlo a JSP como a continuación

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

En welcome.jsp puede obtener los valores por

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

(o) u puede llamar directamente

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

Todas las respuestas son válidas, pero esta parece simple .. – Siva

1

También puede utilizar RequestDispacher y transmitir los datos junto con la página jsp que desea

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

Este es un código de servlet que contiene una variable de cadena a. el valor para a es obtener de una página html con formulario. luego establezca la variable en el objeto de solicitud. luego pásalo a jsp usando los métodos forward y requestdispatcher.

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

en JSP siga estos pasos que se muestran a continuación en el programa

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