W celu uproszenia kodu wyrażeń oraz skrypletów w JSP, zostało utworzone osiem automatycznie zdefiniowanych zmiennych, czasem zwane ukrytymi obiektami. Tymi zmiennymi są request, response, out, session, application, config, pageContext oraz page. Poniżej zostaną one opisane dokładniej.
1. request
Jest to HttpServletRequest mający związek z wywołaniem i pozwalający przeglądać parametry wywołania (przez getParameter), typ wywołania (GET, POST, HEAD, itd.) oraz przychodzące nagłówki HTTP (tj. cookies, Referer, itd.). Ściśle mówiąc, wywołanie może być podklasą ServletRequest inną niż HttpServletRequest, jeśli protokół wywołania jest inny niż HTTP. To jest prawie nie do wykonania w praktyce.
2. response
To jest HttpServletResponse związane z odpowiedzią do klienta. Należy zauważyć, że dopóki wychodzący strumień (patrz out poniżej) jest buforowany, istnieje możliwość ustawienia elementów nagłówka HTTP odpowiedzi mimo, iż nie jest to dopuszczalne w servletach w sytuacji, gdy już wcześniej zostało cokolwiek wysłane do klenta.
3. out
To jest PrintWriter używany do wysłania danych do klienta. Jednakże, w celu stworzenia aktywnego obiektu response (patrz punkt 2) istnieje buforowana wersja PrintWriter zwana JspWriter. Rozmiar bufora może być zmieniany lub buforowanie może zostać wyłączone, poprzez użycie atrybutu buffer dyrektywy page. Zostało to omówione w części poświęconej dyrektywom JSP. Zmienna out jest prawie wyłącznie używana w skrypletach, kiedy wyrażenia JSP automatycznie zajmują miejsce w strumieniu danych wyjściowych i dlatego rzadko istnieje potrzeba odwoływania się wyraźnie do out.
4. session
To jest obiekt HttpSession związany z wywołaniem. Jako że sesja jest tworzona automatycznie, zatem zmienna jest ustawiana nawet w przypadku gdy nie było przychodzącej sesji. Jedynym wyjątkiem jest przypadek użycia atrybutu session dyrektywy page (patrz Dyrektywy JSP) w celu wyłączenia sesji. Wówczas próba odwołania się do zmiennej sesji powoduje wystąpienie błędów w czasie, gdy strona JSP jest przetwarzana na servlet.
5. application
To jest ServletContext otrzymany z getServletConfig().getContext().
6. config
To jest obiekt ServletConfig dla tej strony.
7. pageContext
JSP wprowadziło nową klasę zwaną PageContext w celu enkapsulacji użycia specyficznych własności serwera takich jak wysoka wydajność JspWriter. Założeniem jest, że jeśli wykorzystywany jest dostęp do nich poprzez tą klasę zamiast bezpośrednio, kod będzie ciągle działał na "silniku" JSP.
8. page
To jest poprostu synonim dla this i nie jest on zbytnio przydatny w Javie. Został on stworzony po to, aby w przyszłości można było go zastąpić, kiedy język skryptowy będzie mógł być czymś innym niż Javą. |