Przekazywanie parametrów do Servletu - GET i POST
W tym artykule pokażę wam, jak w prosty sposób jesteśmy wstanie przekazać naszemu servletowi parametry za pomocą metod HTTP GET oraz POST.
- GET - metoda ta pozwala przekazywać parametry w linku (w adresie URI).
przykład zastosowania : http://localhost:8080/Parameters/wypisz_parametry?parametr1=java¶metr2=start
W tym linku przekazujemy podstronie wypisz_parametry parametry parametr1=java oraz parametr2=start
- **POST -**metoda wykorzystywana do przesyłania danych w sieci w postaci pakietu. Używana głównie do przesyłania danych za pomocy formularzy.
Przykładowa pakiet POST :
Obie te metody przesyłają te parametry wraz z żądaniem (requestem) HTTP. Można je w bardzo prosty sposób wydobyć z żądania stosując funkcje getParameter("Nazwa parametru") klasy HttpServletRequest.
Parametr który przesłaliśmy w linku będzie przechowywać zmienna "parametr".
- doGet
Zobaczny na prostym przykładzie, jak za pomocą metody doGet pobrać 3 parametry i przekazać je do naszego programu :
Metoda doGet pobiera 3 parametry z request oraz zapisuje je do zmiennych parametr1 , parametr2 , parametr 3. Następnie parametry te są przekazywane do Response wraca do klienta (np. przeglądarki internetowej).
Zapytanie do tej metody powinno wyglądać tak :
http://localhost:8080/Parameters/wypisz_parametry?parametr1=java¶metr2=start¶metr3=javaEE
Po wpisaniu tego w przeglądarce, powinna nam zwrócić :

- doPost
Metodę HTTP POST głównie wykorzystuje się przy przesyłaniu jakiś danych z formularzy. Aby sprawdzić, jak działa metoda doPost , wpierw musimy napisać takowy formularz. Nasz formularz będzie posiadał 3 pola tekstowe oraz guzik wyślij . Nie będę tutaj rozwodził się nad tematyką języka html. Musisz wiedzieć tylko tyle, że plik html jest interpretowany przez przeglądarkę internetową i to przeglądarka wyśle formularz z danymi do naszego servletu metodą POST.
Plik wyslij.html :
Warto tutaj zwrócić uwagę na fragment "<FORM ACTION="http://localhost:8080/Parameters/wypisz_parametry" METHOD="POST"> ". Mówi on przeglądarce to : " Po naciśnięciu guzika "wyślij", prześle formularz na adres http://localhost:8081/Parameters/wypisz_parametry metodą POST".
Formularz zostaje przesyłany do servletu, a metoda doPostinterpretuje go w podobny sposób jak metoda doGet.
Metody GET i POST wyglądają niepozornie, ale to one zapewniają komunikację miedzy naszym programem a klientami, którzy mogą być przeglądarki www, urządzenia mobilne, inne aplikacje www.
Zadania do realizacji :
- Napisz servlet, który będzie przyjmował 5 liczb całkowitych metodą GET, wyliczy ich średnią i zwróci wynik.
- Napisz servlet, który będzie przyjmował dowolną ilość parametrów metodą POST i sprawdzał, czy parametry te są liczbami. Jeśli są, niech je wyświetli w kolejności od najmniejszej do największej. Jeśli parametry nie są liczbami, niech servlet zwróci informacje o błędnych danych.
TIPS - sprawdź co robi funkcja "getParameterNames()" i czy można Ją wykorzystać ją do pobierania dowolnej ilości parametrów z request'a.
Dyskusja i komentarze
Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.
Poniżej znajdziesz archiwalne wpisy z czasów, gdy strona była jeszcze hobbystycznym blogiem.
Piotrek
nie mogę sobie poradzić z uruchomieniem pliku wyślij.html w eclipse aby zadziałała metoda POST, można jaką pomoc? pozdrawiam
Rafał Mikołajczuk
Spróbuj odpalić ten pliczek w przeglądarce :) to jest zwykły plik .html który posiada w sobie formularz wysyłający dane do twojej uruchomionej aplikacji.
Łukasz
Zwróćcie uwagę, że po otworzeniu w przeglądarce wyslij.htm i kliknięciu submit może wam nie działać, ze względu na zły port. Dlatego, że w tym projekcie do ściągnięcia w pliku wyslij.html jest ustawiony port 8081, a powinien być 8080. Jednak w samym artykule, jest już to poprawione.
zombial
Zajefajny tutorial, szczególnie te zadanka do samodzielnego rozwiązania:). Zna ktoś może podobny tutorial, własnie z zadankami i odpowiedziami do nich do Springa i jquerry???