2009-09-10 16 views
7

Estoy tratando de usar un RequestDispatcher para enviar parámetros desde un servlet.Cómo enviar parámetros desde un servlet

Aquí está mi código servlet:

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 

String station = request.getParameter("station"); 
String insDate = request.getParameter("insDate"); 

//test line 
String test = "/response2.jsp?myStation=5"; 

RequestDispatcher rd; 
if (station.isEmpty()) { 
    rd = getServletContext().getRequestDispatcher("/response1.jsp"); 

} else { 
    rd = getServletContext().getRequestDispatcher(test); 
} 

rd.forward(request, response); 

} 

Aquí es mi jsp, con el código para leer el valor - sin embargo, muestra nula.

<h1>response 2</h1> 
    <p> 
     <%=request.getAttribute("myStation") %> 
    </p> 

Gracias por cualquier sugerencia. Verde

+0

RequestDispatcher no se utiliza para leer los parámetros. Por lo tanto, he editado tu publicación. –

Respuesta

11

En su uso de servlets request.setAttribute de la siguiente manera

request.setAttribute("myStation", value); 

donde el valor pasa a ser el objeto que desea leer más tarde.

y extraerlo después en un servlet diferente/JSP mediante request.getAttribute como

String value = (String)request.getAttribute("myStation") 

o

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

tenga en cuenta que el alcance del uso de get/setAttribute está limitada en la naturaleza - atributos son restablecer entre las solicitudes. Si tiene la intención de almacenar valores por más tiempo, debe usar la sesión o el contexto de la aplicación, o mejor una base de datos.

Los atributos son diferentes de los parámetros, ya que el cliente nunca establece atributos. Los desarrolladores usan más o menos los atributos para transferir el estado de un servlet/JSP a otro. Por lo tanto, debe usar getParameter (no hay setParameter) para extraer datos de una solicitud, establecer atributos si es necesario utilizando setAttribute, reenviar la solicitud internamente usando RequestDispatcher y extraer los atributos usando getAttribute.

+0

Gracias por los extensos comentarios. Realmente lo aprecio. Los valores pasados ​​tienen un alcance de página, por lo que creo que el método que me mostró sería suficiente. – Greener

+0

De nada :) –

1

En su código, String test = "/response2.jsp?myStation=5";

Está agregando myStation = 5 como cadena de consulta. Como los parámetros de cadena de consulta se almacenan como parámetros de solicitud en Objeto de solicitud.

Por lo tanto se puede utilizar,

funciona fine.Thanks.

Cuestiones relacionadas