ćwiczenia 12 - Instytutu Informatyki UJ
Transkrypt
ćwiczenia 12 - Instytutu Informatyki UJ
Programowanie w Sieci Internet — JSP ciąg dalszy Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić • JSP tags, • Używanie tagów, • Custom tags, • JSP objests, • Obiekty JSP pod lupą. JSP tags JSTL - to standardowa biblioteka tagów do JSP. Biblioteka ta zawiera tagi pozwalające nam iterować, tworzyć zapytania logiczne, manipulować dokumentami XML, internacjonalizować naszą stronę, czy tworzyć zapytania SQL. Bibliotekę JSTL można podzielić na kilka grup tagów: • Core tags (najczęściej używane tagi), • tagi formatujące, • tagi SQL, • tagi XML, • funkcje JSTLowe. Po pobraniu i rozpakowaniu JARki z tagami, należy ją umieścić w katalogu WEB-INF\lib a następnie inkludować dyrektywę <taglib> na początku każdego pliku JSP, który ma korzystać z tych tagów. Używanie tagów Na początku pliku JSP umieszczamy dyrektywę <% <% <% <% <% taglib taglib taglib taglib taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %> // core tags prefix=”fmt” uri=”http://java.sun.com/jsp/jstl/fmt” %> // tagi formatujące prefix=”sql” uri=”http://java.sun.com/jsp/jstl/sql” %> // tagi SQL prefix=”xml” uri=”http://java.sun.com/jsp/jstl/xml” %> // tagi XML prefix=”fn” uri=”http://java.sun.com/jsp/jstl/functions” %> // funkcje JSTLowe Teraz możemy używać tagi JSTL tak jak tagi HTML używając odpowiedniego prefiksu. <c:out value=”${‘something’}”> - działa jak <%= ... > <c:set var=”val” scope=”Session” value=”${2*2+2}” /> <c:if test=”${val>0}”>...</c:if> - ewaluuje body jeżeli podane warunki zostaną spełnione <fmt:formatDate pattern=”dd-MM-yyyy” value=”<%=new java.util.Date()%>” /> <sql:query dataSource=”${dsName}” var=”result”>SELECT * from testTable</sql:query> <xml:parse xml=”${importedFile}” var=”output” /> - parsuje dokument xmlowy do output ${fn:indexOf(string, “searchFor”)} - wyszukuje index w którym zaczyna się wyszukiwany string wewnątrz zadanego stringu. Custom tags Oczywiście można tworzyć własne tagi. Tag składa się z taga otwierającego, body i taga zamykającego. Jeśli tag nie posiada body, to może być on zakończony w tagu otwierającym poprzez umieszczenie na końcu, przed znakiem zamykającym nawias trójkątny, znaku ‘/’. Aby napisać własny tag rozszerz klasę SimpleTagSupport i nadpisz metodę doTag() public class myTag extends SimpleTagSupport { public void doTag() throws JspException, IOException { getJspContext().getOut().println(“print tag value”); } } Aby dostać się do atrybutów wystarczy utworzyć w klasie pola o takich samych nazwach i przygotować do nich settery. Aby dostać się do zawartości body, użyj metody getJspBody(), możesz wywołać na nim także invoke(Writer writer) i zapisać zawartość do writera. Obiekty JSP W jsp mamy do czynienia z kilkoma obiektami, które pomagają nam w zarządzaniu aplikacją, odbieraniu i wysyłaniu zapytań oraz tworzenia samego wyglądu strony. • request, • response, • out, • session, • application, • config, • pageContext, • page, • Exception. Obiekty JSP pod lupą • Request jest obiektem zawierającym parametry zapytania (header). Request zawiera tablice ciasteczek, enumerator nazw atrybutów, enumerator nazw parametrów, sesję, język (Locale) itp. • Response jest natomiast obiektem zawierającym odpowiedź od klienta. Response może zdekodować URL, sprawdzić czy odpowiedź zawiera podany header, dodać header, dodać ciasteczko, wysłać błąd HTTP, ustawić kodowanie i wiele innych. Response zawiera także metodę pozwalającą wyczyścić cały request. • Out to obiekt PrintWriter’a pozwalający na wypisywanie tekstu na stronie. • Session to obiekt sesji który zawiera atrybuty wraz z wartościami (nazwa atrybutu to String a wartość to Object). Ponadto, sesja ma swoje Id, datę stworzenia, datę ostatniego dostępu oraz maksymalny czas bez aktywności, po którym sesja wygasa. Sesja zwraca także wartość boolean isNew, która mówi nam o tym, że dany klient jeszcze nie dołączył do sesji, lub jeszcze się nie dowiedział o jej istnieniu. Obiekty JSP pod lupą cd. • Obiekt config daje dostęp do parametrów inicjalizacyjnych z web.xml Za jego pomocą możemy dostać się do konfiguracji serwera, połączenia z bazą danych etc.: config.getInitParameter("initParameterName"); Natomiast taki parametr umieszczamy w web.xml: <init-param> <param-name>initParameterName</param-name> <param-value>6</param-value> </init-param> Może to być dowolny sterownik bazy danych etc. • PageContext to objekt odpowiadający całej stronie JSP. PageContext definiuje kilka pól, takich jak: • PAGE_SCOPE, • REQUEST_SCOPE, • SESSION_SCOPE, • APPLICATION_SCOPE. Dziękuję za uwagę!