getParameter()zwraca parametry żądania HTTP. Te przekazywane od klienta do serwera. Na przykład http://example.com/servlet?parameter=1. Może tylko wrócićString
getAttribute()służy tylko do użytku po stronie serwera - wypełniasz żądanie atrybutami, których możesz użyć w ramach tego samego żądania. Na przykład - ustawiasz atrybut w serwlecie i odczytujesz go z JSP. Może być używany do dowolnego obiektu, nie tylko łańcucha.
Przypuszczam, że kiedy używasz czegoś takiego jak ${attrName}na stronie jsp, są to atrybuty, które ustawiasz za pomocą request.getSession().setAttribute()?
ha9u63ar
Ponieważ atrybut żądania jest przechowywany po stronie serwera, czy mogę ustawić atrybut żądania dla żądania międzyserwerowego po przekierowaniu? Chcę wysyłać informacje z jednego serwera na inny serwer w JSF za pośrednictwem atrybutu w żądaniu przekierowania. Od tej chwili mogę wysyłać żądania POST.
user2918640,
W tym przypadku „parametr” wydaje się być synonimem „ciągu zapytania”
BTRUE
getAttribute()jest nie tylko do użytku po stronie serwera: możesz pobrać dane atrybutów na interfejsie - na przykład na stronach jsp i wyświetlić je
parsowanie
49
Zasadniczo parametr jest wartością ciągu, która jest najbardziej znana z tego, że jest wysyłana od klienta do serwera (np. Formularz post) i pobierana z żądania serwletu . Frustrującym wyjątkiem są początkowe parametry ServletContext, które są parametrami łańcuchowymi skonfigurowanymi w pliku web.xml i istnieją na serwerze.
Atrybut to zmienna serwera, która istnieje w określonym zakresie, tj .:
application, dostępne przez cały okres użytkowania aplikacji
session, dostępne przez cały czas trwania sesji
request, dostępne tylko przez okres ważności żądania
page (Tylko JSP), dostępne tylko dla bieżącej strony JSP
„Zasadniczo parametr jest wartością ciągu”. Co innego niż ciągi, co możemy wysłać?
Honey
^ Obiekty jak w przypadku request.setAttribute
Arijit
37
request.getParameter ()
Używamy request.getParameter()do wyodrębnienia parametrów żądania (tj. Danych wysłanych przez opublikowanie formularza HTML). request.getParameter()Zawsze zwraca Stringwartość, a dane pochodzą z klientem.
request.getAttribute ()
Używamy, request.getAttribute()aby obiekt został dodany do zakresu żądania po stronie serwera, tj request.setAttribute(). Za pomocą . Możesz dodać tutaj dowolny typ obiektu Strings, obiekty niestandardowe, w rzeczywistości dowolny obiekt. Dodajesz atrybut do żądania i przekazujesz żądanie do innego zasobu, klient nie wie o tym. Tak więc cały kod obsługujący to zwykle byłby w JSP / serwletach. Możesz użyć, request.setAttribute()aby dodać dodatkowe informacje i przekazać / przekierować bieżące żądanie do innego zasobu.
W przeglądarce uruchom first.jsp? CLIENT = ty, a dane wyjściowe w przeglądarce to
FromWhichPage:*first.jsp*DataFromClient: you
Podstawowa różnica między getAttribute()i getParameter()polega na tym, że pierwsza metoda wyodrębnia (zserializowany) obiekt Java, a druga zapewnia wartość ciągu. W obu przypadkach podana jest nazwa, aby można było wyszukać i wyodrębnić jej wartość (ciąg znaków lub komponent java bean).
To był świetny przykład. To powinna być zaakceptowana odpowiedź. Przyjęta odpowiedź jest poprawna, ale dla początkujących przykład wszystko wyjaśnił. Dziękuję Ci.
CapturedTree
26
Ważne jest, aby wiedzieć, że atrybuty nie są parametrami .
Typ zwracany dla atrybutów to Obiekt , natomiast typ zwracany dla parametru to Ciąg . Podczas wywoływania getAttribute(String name)metody należy pamiętać, że atrybuty muszą być rzutowane.
Ponadto nie ma atrybutów specyficznych dla serwletu ani parametrów sesji .
Ten post został napisany w celu połączenia się z odpowiedzią @ Bozho, jako dodatkowej informacji, która może być przydatna dla innych osób.
Różnica między getAttribute a getParameter polega na tym, że getParameter zwróci wartość parametru przesłanego przez formularz HTML lub uwzględnionego w ciągu zapytania. getAttribute zwraca obiekt, który ustawiłeś w żądaniu, jedynym sposobem na użycie tego jest połączenie z RequestDispatcher. Za pomocą narzędzia RequestDispatcher można przesłać żądanie do innego zasobu (JSP / Servlet). Dlatego przed przekazaniem żądania możesz ustawić atrybut, który będzie dostępny dla następnego zasobu.
request.getParameter("testParam")otrzyma wartość z opublikowanego formularza pola wejściowego o nazwie „testParam”, który jest „parametr klienta”. Następnie wydrukuje to, więc powinieneś zobaczyć „Client Param” na ekranie. Więc request.getParameter () pobierze wartość przesłaną przez klienta. Otrzymasz wartość po stronie serwera.
- getAttribute ():request.getAttribute() wszystko odbywa się po stronie serwera. TY dodajesz atrybut do żądania i przesyłasz żądanie do innego zasobu, klient nie wie o tym. Tak więc cały kod obsługujący to zwykle znajduje się w servlets.getAttribute zawsze zwraca obiekt.
getParameter - Służy do uzyskiwania potrzebnych informacji ze strony HTML klienta
getAttribute - Służy do uzyskania parametrów ustawionych wcześniej na innej lub tej samej stronie JSP lub Servlet.
Zasadniczo, jeśli przesyłasz lub po prostu przechodzisz z jednego serwera JSP / serwletu na inny, nie ma sposobu, aby uzyskać potrzebne informacje, chyba że zdecydujesz się umieścić je w obiekcie i użyć atrybutu set do przechowywania w zmiennej Session.
Korzystając z getAttribute, możesz pobrać zmienną Session.
„Parametr” to para nazwa / wartość wysyłana od klienta do serwera - zazwyczaj z formularza HTML. Parametry mogą mieć tylko wartości ciągu. Czasami (np. Za pomocą żądania GET) zobaczysz, że są one zakodowane bezpośrednio w adresie URL (po znaku?, Każdy w formie nazwa = wartość i każda para oddzielona znakiem &). W innych przypadkach są one uwzględniane w treści żądania, przy użyciu metod takich jak POST.
„Atrybut” to lokalny serwerowy mechanizm pamięci - nic przechowywane w atrybutach o zasięgu nie jest nigdy przesyłane poza serwerem, chyba że wyraźnie to zrobisz. Atrybuty mają nazwy String, ale przechowują wartości Object. Zauważ, że atrybuty są specyficzne dla Javy (przechowują obiekty Java), podczas gdy parametry są niezależne od platformy (są to tylko sformatowane ciągi złożone z ogólnych bajtów).
Istnieją w sumie cztery zakresy atrybutów: „strona” (tylko pliki JSP i pliki znaczników), „żądanie” (ograniczone do żądania bieżącego klienta, zniszczone po zakończeniu żądania), „sesja” (przechowywane w sesji klienta, unieważnione po zakończeniu sesji), „aplikacja” (istnieje dla wszystkich komponentów, aby uzyskać dostęp przez cały czas wdrażania aplikacji).
Najważniejsze jest: użyj parametrów przy uzyskiwaniu danych od klienta, użyj atrybutów o zasięgu podczas przechowywania obiektów na serwerze do użytku wewnętrznego tylko przez aplikację.
Odpowiedzi:
getParameter()
zwraca parametry żądania HTTP. Te przekazywane od klienta do serwera. Na przykładhttp://example.com/servlet?parameter=1
. Może tylko wrócićString
getAttribute()
służy tylko do użytku po stronie serwera - wypełniasz żądanie atrybutami, których możesz użyć w ramach tego samego żądania. Na przykład - ustawiasz atrybut w serwlecie i odczytujesz go z JSP. Może być używany do dowolnego obiektu, nie tylko łańcucha.źródło
${attrName}
na stronie jsp, są to atrybuty, które ustawiasz za pomocąrequest.getSession().setAttribute()
?getAttribute()
jest nie tylko do użytku po stronie serwera: możesz pobrać dane atrybutów na interfejsie - na przykład na stronach jsp i wyświetlić jeZasadniczo parametr jest wartością ciągu, która jest najbardziej znana z tego, że jest wysyłana od klienta do serwera (np. Formularz post) i pobierana z żądania serwletu . Frustrującym wyjątkiem są początkowe parametry ServletContext, które są parametrami łańcuchowymi skonfigurowanymi w pliku web.xml i istnieją na serwerze.
Atrybut to zmienna serwera, która istnieje w określonym zakresie, tj .:
application
, dostępne przez cały okres użytkowania aplikacjisession
, dostępne przez cały czas trwania sesjirequest
, dostępne tylko przez okres ważności żądaniapage
(Tylko JSP), dostępne tylko dla bieżącej strony JSPźródło
request.getParameter ()
Używamy
request.getParameter()
do wyodrębnienia parametrów żądania (tj. Danych wysłanych przez opublikowanie formularza HTML).request.getParameter()
Zawsze zwracaString
wartość, a dane pochodzą z klientem.request.getAttribute ()
Używamy,
request.getAttribute()
aby obiekt został dodany do zakresu żądania po stronie serwera, tjrequest.setAttribute()
. Za pomocą . Możesz dodać tutaj dowolny typ obiektuStrings
, obiekty niestandardowe, w rzeczywistości dowolny obiekt. Dodajesz atrybut do żądania i przekazujesz żądanie do innego zasobu, klient nie wie o tym. Tak więc cały kod obsługujący to zwykle byłby w JSP / serwletach. Możesz użyć,request.setAttribute()
aby dodać dodatkowe informacje i przekazać / przekierować bieżące żądanie do innego zasobu.Rozważmy na przykład first.jsp,
i second.jsp:
W przeglądarce uruchom first.jsp? CLIENT = ty, a dane wyjściowe w przeglądarce to
Podstawowa różnica między
getAttribute()
igetParameter()
polega na tym, że pierwsza metoda wyodrębnia (zserializowany) obiekt Java, a druga zapewnia wartość ciągu. W obu przypadkach podana jest nazwa, aby można było wyszukać i wyodrębnić jej wartość (ciąg znaków lub komponent java bean).źródło
Ważne jest, aby wiedzieć, że atrybuty nie są parametrami .
Typ zwracany dla atrybutów to Obiekt , natomiast typ zwracany dla parametru to Ciąg . Podczas wywoływania
getAttribute(String name)
metody należy pamiętać, że atrybuty muszą być rzutowane.Ponadto nie ma atrybutów specyficznych dla serwletu ani parametrów sesji .
Ten post został napisany w celu połączenia się z odpowiedzią @ Bozho, jako dodatkowej informacji, która może być przydatna dla innych osób.
źródło
Różnica między getAttribute a getParameter polega na tym, że getParameter zwróci wartość parametru przesłanego przez formularz HTML lub uwzględnionego w ciągu zapytania. getAttribute zwraca obiekt, który ustawiłeś w żądaniu, jedynym sposobem na użycie tego jest połączenie z RequestDispatcher. Za pomocą narzędzia RequestDispatcher można przesłać żądanie do innego zasobu (JSP / Servlet). Dlatego przed przekazaniem żądania możesz ustawić atrybut, który będzie dostępny dla następnego zasobu.
źródło
- getParameter () :
request.getParameter("testParam")
otrzyma wartość z opublikowanego formularza pola wejściowego o nazwie „testParam”, który jest „parametr klienta”. Następnie wydrukuje to, więc powinieneś zobaczyć „Client Param” na ekranie. Więc request.getParameter () pobierze wartość przesłaną przez klienta. Otrzymasz wartość po stronie serwera.- getAttribute ():
request.getAttribute()
wszystko odbywa się po stronie serwera. TY dodajesz atrybut do żądania i przesyłasz żądanie do innego zasobu, klient nie wie o tym. Tak więc cały kod obsługujący to zwykle znajduje się w servlets.getAttribute zawsze zwraca obiekt.źródło
getParameter
- Służy do uzyskiwania potrzebnych informacji ze strony HTML klientagetAttribute
- Służy do uzyskania parametrów ustawionych wcześniej na innej lub tej samej stronie JSP lub Servlet.Zasadniczo, jeśli przesyłasz lub po prostu przechodzisz z jednego serwera JSP / serwletu na inny, nie ma sposobu, aby uzyskać potrzebne informacje, chyba że zdecydujesz się umieścić je w obiekcie i użyć atrybutu set do przechowywania w zmiennej Session.
Korzystając z getAttribute, możesz pobrać zmienną Session.
źródło
z http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute
źródło
Innym przypadkiem, w którym powinieneś użyć
.getParameter()
jest przekazywanie z parametrami w jsp:W
destination.jsp
możesz uzyskać dostęp wuserName
następujący sposób:źródło
Podstawową różnicą między getAttribute () i getParameter () jest typ zwracany.
źródło