2009-09-10 18 views
7

Próbuję użyć obiektu RequestDispatcher do wysłania parametrów z serwletu.Jak przesłać parametry z serwletu

Oto mój kod serwletu:

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); 

} 

Oto moja JSP, z kodem do odczytu wartości - to jednak pokazuje zerowy.

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

Dzięki za wszelkie sugestie. Greener

+0

Moduł RequestDispatcher nie służy do odczytu parametrów. Dlatego edytowałem twój post. –

Odpowiedz

11

W korzystania serwletu request.setAttribute w następujący sposób

request.setAttribute("myStation", value); 

gdzie wartość dzieje się przedmiotem chcesz przeczytać później.

i wyodrębnić je później w innym serwletu/JSP przy użyciu request.getAttribute jak

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

lub

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

Należy pamiętać, że zakres wykorzystania get/setAttribute jest ograniczona w przyrodzie - atrybut resetuj między żądaniami. Jeśli zamierzasz przechowywać wartości dłużej, powinieneś użyć kontekstu sesji lub aplikacji lub lepiej bazy danych.

Atrybuty różnią się od parametrów, ponieważ klient nigdy nie ustawia atrybutów. Atrybuty są mniej lub bardziej wykorzystywane przez programistów do przesyłania stanu z jednego serwletu/strony JSP do innego. Więc powinieneś użyć getParameter (nie ma parametru setParameter), aby wyodrębnić dane z żądania, w razie potrzeby ustaw atrybuty za pomocą metody setAttribute, przesyłaj żądanie wewnętrznie za pomocą obiektu RequestDispatcher i wyodrębnij atrybuty za pomocą metody getAttribute.

+0

Dziękuję za obszerne komentarze. Naprawdę doceniam. Podane wartości mają zakres strony, więc myślę, że metoda, którą mi pokazałeś, byłaby wystarczająca. – Greener

+0

Nie ma za co :) –

1

W swoim kodzie, String test = "/response2.jsp?myStation=5";

Dodajesz myStation = 5 jako ciąg zapytania. Jako parametry zapytania są przechowywane jako parametry żądania w żądaniu obiektu.

Dlatego można użyć,

Działa fine.Thanks.

Powiązane problemy