session
Transkrypt
session
JSP Obiekty - page - obiekt jest dostępny tylko na stronie na której został stworzony. Wszystkie referencje powinny być zwolnione, kiedy odpowiedź jest wysłana z powrotem do klienta. Referencje do obiektów z zasięgiem page są przechowywane w obiekcie pageContext; - request - obiekt jest dostępny ze strony obsługujacej to samo żądanie, gdzie obiekt został stworzony. Wszystkie referencje powinny być zwolnione po zakończeniu obsługi żądania lub jeżeli żądanie jest przesłane dalej, obiekt jest nadal dostępny; - session - obiekt jest dostępny we wszystkich stronach obsługująścych żądania tej samej sesji w której został stworzony. Nie jest dopuszczalne definiowanie obiektów z zasiegiem sesji ze stron, które nie sa zorientowane na sesje (session-aware). Wszystkie referencje powinny być zwolnione po zakończeniu sesji; - application - obiekt jest dostępny w tej samej aplikacji w której zostałl stworzony. Wszystkie referencje powinny być zwolnione, kiedy środowisko uruchomieniowe odbiera ServletContext. Obiekty mogą być tworzone na stronach, które nie są zorientowane na sesje (session-aware). Referencje do obiektów są trzymane w obiekcie application. Elementy skryptowe <%! To jest deklaracja %> <% To jest skryplet %> <%= To jest wyrazenie %> Deklaracje Deklaracje są używane do deklarowania zmiennych i metod. Deklaracje nie tworzą żadnego strumienia wyjściowego, są inicjowane kiedy strona JSP jest inicjowana. <%! int i = 0; %> <%! public String f(int i) {if (i<3) return("..");...} %> Pierwszy przykłlad deklaruje zmiennąinteger i przypisuje jej zero, drugi deklaruje metode f. Skrypty Skrypt może zawierać dowolny fragment kodu. Skrypt jest wykonywany podczas żądania strony przez klienta. Przykład wyświetla odpowiednie powitanie w zależności od pory dnia. <% if (Calendar.getInstance().get(Calendar.AM_PM) == Calendar.AM) {% > Dzien dobry <% } else { %> Dobry wieczor <% } %> Wyrażenia Wyrażenia są elementami generujacymi wynik i wyświetlającymi go na wyjściu obiektu JspWriter. Wynik jest konwertowany do typu String. Jeżeli wynik nie może być przekonwertowany, występuje błąd ClassCastException. Przykład wstawienia aktualnej daty na stronie. <%= (new java.util.Date()).toLocaleString() %> Akcje Akcje mają składnie elementów XML (tag startowy, ciało i końcowy tag) <mytag attr1="attribute value" ...> zawartość </mytag> lub pusty tag <mytab attr1="attribute value" .../> <jsp:useBean> <jsp:useBean id=" name" scope= "page|request|session|application" typeSpec /> typeSpec ::=class=" className" | class=" className" type=" typeName" | type=" typeName" class=" className" | beanName=" beanName" type=" typeName" | type=" typeName" beanName=" beanName" | type=" typeName" <jsp:setProperty> <jsp:setProperty name=" beanName" prop_expr /> prop_expr ::= property="*" | property=" propertyName"| property=" propertyName" param=" parameterName"| property=" propertyName" value=" propertyValue" propertyValue ::= string Przykłady: <jsp:setProperty name="request" property="*" /> <jsp:setProperty name="user" property="user" param="username" /> Przypisanie wartości z pól pobranych z żądania. <jsp:setProperty name="results" property="row" value="<%= i+1 %>" /> Przypisanie atrybutowi wartości. <jsp:getProperty> Przykład: <jsp:getProperty name="user" property="name" /> <jsp:include> <jsp:include page="/templates/copyright.html"/> <jsp:forward> <% String gdzie = "/templates/"+jakas_wartosc; %> <jsp:forward page='<%= gdzie %>' /> <jsp:param> Element jsp:param jest używany do dostarczania informacji w postaci klucz/wartość. Element jest używany w akcjach jsp:include, jsp:forward i jsp:plugin. Jeżeli jest realizowane doklejenie lub przekierowanie (jsp:include lub jsp:forward), dołączana lub przekierowana strona będzie "widziała" oryginalne parametry łącznie z nowymi dodanymi przez element jsp:param. Np. jeżeli parametry żądania mają parametr A=foo, a parametr A=bar jest dodany do przekierowania, przekierowana strona będzie miała parametr A równy A=bar,foo. <jsp:param name=" name" value=" value" /> Dyrektywy <%@ page atrybut %> atrybut ::= { language=" jezyk skryptowy"} { extends=" NazwaKlasy"} { import=" importList"} { session="true|false" } { buffer="none| rozmiarkb" } { autoFlush="true| false" } { isThreadSafe="true|false" } { info=" informacja" } { errorPage=" error_url" { isErrorPage="true|false" } { contentType="ctinfo" } Polskie znaki <%@ page contentType="text/html; codepage=iso-8859-2; charset=iso8859-2" %> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <meta http-equiv="Content-Language" content="pl"> <% response.addHeader("Pragma", "No-cache"); response.addHeader("Cache-Control", "no-cache"); response.addHeader("Expires", "1"); %> Bean package hello; public class NameHandler { private String username; public NameHandler() { username = null; } public void setUsername( String name ) { username = name; } public String getUsername() { return username; } } Polskie litery public class charset { public static String c = "iso-8859-2"; private static String bc = "iso-8859-1"; public static String getString(HttpServletRequest r, String s) { String rs = r.getParameter(s); try { if (rs != null) { return new String(rs.getBytes(bc), c); } else { return ""; } } catch (Exception e) { if (danet.d.d) System.out.println(e); return ""; } } }