2009-09-10 8 views
7

Sto tentando di utilizzare un RequestDispatcher per inviare parametri da un servlet.Come inviare parametri da un servlet

Ecco il mio codice 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); 

} 

Ecco il mio jsp, con il codice per leggere il valore - tuttavia si vede nulla.

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

Grazie per eventuali suggerimenti. Greener

+0

RequestDispatcher non viene utilizzato per leggere i parametri. Quindi ho modificato il tuo post. –

risposta

11

Nel vostro uso servlet request.setAttribute, nel modo seguente

request.setAttribute("myStation", value); 

dove il valore sembra essere l'oggetto che si desidera leggere in seguito.

ed estrarre in un secondo momento in un servlet diverso/JSP usando request.getAttribute come

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

o

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

si noti che l'ambito di utilizzo di GET/setAttribute è limitata in natura - attributi sono resettare tra le richieste. Se si intende memorizzare i valori più a lungo, è necessario utilizzare il contesto di sessione o applicazione o un database migliore.

Gli attributi sono diversi dai parametri, in quanto il client non imposta mai attributi. Gli attributi sono più o meno usati dagli sviluppatori per trasferire lo stato da un servlet/JSP a un altro. Quindi dovresti usare getParameter (non esiste setParameter) per estrarre i dati da una richiesta, impostare gli attributi se necessario usando setAttribute, inoltrare internamente la richiesta usando RequestDispatcher ed estrarre gli attributi usando getAttribute.

+0

Grazie per gli ampi commenti. Apprezzo molto. I valori passati hanno un ambito di pagina, quindi penso che il metodo che mi hai mostrato sarebbe stato sufficiente. – Greener

+0

Prego :) –

2

Utilizzare getParameter(). Un attributo viene impostato e letto internamente all'interno dell'applicazione.

1

Nel codice, Test stringa = "/response2.jsp?myStation=5";

Si aggiunge myStation = 5 come stringa di query. Poiché i parametri della stringa di query vengono memorizzati come parametri di richiesta nell'oggetto di richiesta .

Pertanto è possibile utilizzare,

E funziona fine.Thanks.