Servlet, przekazywnanie parametrów do JSP

0

Witam,

mam pytanie dotyczące servletów. Otóż chodzi mi o to, jak przekazać dane z servletu do JSP ? Mam stronę internetową, która ma wyszukiwarkę, servlet przetwarza zapytanie a wyniki chciałbym wyświetlić na stronie JSP.

Nikt nie zna odpowiedzi ? Bardzo mi zależy.

0

Ja chyba bym umiał tak zrobić. Tylko nie bardzo rozumiem jaki masz problem. Wklej jakiś kod serwletu, kod JSP i oznacz w nim co gdzie chcesz wstawić.

0

Nie chodzi mi o jedna stronę, tylko generalnie techniki w jaki sposób to zrobić. Jest jakaś metoda, która przekaże parametr dalej ?

0

Metoda jest taka, że szukasz sobie tutoriala o tym i robisz zgodnie z opisem, a jak masz problem, to pytasz na forum. Dla ułatwienia dodam, że w jsp będziesz miał wpis treści jsp:useBean.

0

Przekazanie obiektu z servletu odbywa się za pomocą metody setAttribute obiektu request.
Można w ten sposób przekazać też np. String. Po stronie servletu wygląda to tak:

// obiekt do wysłania                     
String data = "jakieś dane";
// metoda setAttribute dodaje nasz obiekt pod wybraną przez nas nazwą do obiektu request
// w tym przypadku jest to obiekt data, będzie zachowany pod nazwą: nazwa_atrybutu
request.setAttribute("nazwa_atrybutu", data);
// miejsce gdzie servlet ma wysłać obiekt request
// w tym przypadku jest to: display.jsp
String url = "/display.jsp";
// utworzenie obiektu RequestDispatcher
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
// wysłanie obiektu request do naszego display.jsp
dispatcher.forward(request, response);

Odebranie tego obiektu po stronie JSP będzie wyglądało tak:

// Odebranie obiektu zapisanego pod nazwą: nazwa_atrybutu, rzutowanie go na String
// oraz przypisanie go do zmiennej costam
<% String costam = (String) request.getAttribute("nazwa_atrybutu"); %>
// Wyświetlenie zmiennej costam
<%= costam %>

Pozdrawiam,

Daniel

0

Świetnie wytłumaczone. Mam jeszcze tylko pytanie dotyczące tego jak przerwać działanie servletu jeżeli nie spełnia danego warunku. Czyli przykładowo, gdy użytkownik poda złe hasło, chciałbym aby servlet zakończył działanie w danym miejscu.

0

Generalnie większość tego co robi servlet dzieje się w dwóch funkcjach:
doGet i doPost,
zależnie od tego jaką metodą przesyłane są dane do servletu. Tak więc samo przerywanie tej funkcji wg. mnie nie ma sensu, prościej zrobić proste sprawdzenie hasła. Czyli tak na szybko, to pobrać parametr który przechowuje hasło i sprawdzić czy zgadza się z tym poprawnym. Jeśli tak - to przekierowujemy na odpowiednią stronę, a jeśli nie to przekierowujemy na stronę z informacją o błędnie wpisanym haśle. Czyli tak:

 
// Zmienna przechowująca adres strony na jaką przekierować użytkownika
String url;
// Pobranie parametru który przechowuje hasło wpisane przez użytkownika
String userInput = request.getParameter("haslo");
// Sprawdzenie czy wprowadzone hasło jest takie samo jak zapisane w zmiennej pass
if ( userInput.equals(pass)){
	url = "/display.jsp";
}else{
	url = "/another.jsp";
}

A dalej to już tak samo jak w poprzednim poście, czyli:

String data = "jakieś dane";
request.setAttribute("nazwa_atrybutu", data);
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);

Pozdrawiam,

Daniel

1 użytkowników online, w tym zalogowanych: 0, gości: 1