pawel.rajba@gmail.com, http://kursy24.eu/



Podobne dokumenty
Kurs WWW 1. Paweł Rajba

mgr inż. Michał Paluch

Java wybrane technologie spotkanie nr 5. Java Server Pages

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013

Wprowadzenie do JSP. Marcin Apostoluk, Tadeusz Pawlus, Wojciech Walczak. Technologie Biznesu Elektronicznego, 7 marzec 2006

Serwery aplikacji. dr Radosław Matusik. radmat

Elementy JEE. 1. Wprowadzenie. 2. Prerekwizyty. 3. Pierwszy servlet. obsługa parametrów żądań 4. JavaServer Pages.

Java wybrane technologie spotkanie nr 3. Serwlety

Piotr Laskowski Krzysztof Stefański. Java Servlets

JavaServer Pages. Konrad Kurdej Karol Strzelecki

1 Wprowadzenie do J2EE

Serwlety i JSP na platformie Java EE. Damian Makarow

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Java Enterprise Edition spotkanie nr 4. Java Server Pages c.d.

Technologie internetowe

prepared by: Programowanie WWW Servlety

Aplikacje Internetowe, Servlety, JSP i JDBC

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

Serwery aplikacji. dr Radosław Matusik. radmat

Serwlety. Co to jest serwlet? Przykładowy kod serwletu. Po co są serwlety?

Wybrane działy Informatyki Stosowanej

Java Enterprise Edition spotkanie nr 3. Serwlety c.d.

Serwlety Java: zagadnienia zaawansowane. Data Sources. Data Sources. Przykład pliku data-sources.xml

Serwlety i JSP. Autor: Marek Zawadka deekay@gazeta.pl

Aktywne i dynamiczne strony WWW. Elementy projektowania stron WWW. Część 3. Formularze HTML przykład. Formularze HTML. dr inŝ.

Java wybrane technologie spotkanie nr 4. Serwlety c.d.

prepared by: Programowanie WWW Model-View-Controller

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Przetwarzanie dokumentów XML i zaawansowane techniki WWW Wykład 09

Programowanie w Sieci Internet filtry oraz web.xml. Kraków, 11 stycznia 2013 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Logika prezentacji III

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Aplikacje internetowe i rozproszone - laboratorium

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

Wzorce prezentacji internetowych

Programowanie w języku Java

Architektury Usług Internetowych. Laboratorium 1 Servlety

TIN Techniki Internetowe Lato 2005

Aplikacje WWW - laboratorium

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Architektury Usług Internetowych. Laboratorium 1. Servlety

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Zaawansowane aplikacje internetowe laboratorium

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

2 Przykªad strony JSP. 3 Elementy dokumentu JSP

J2EE wzorce projektowe. Alicja Truszkowska

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008


Facelets ViewHandler

Podstawy i języki programowania

In»ynieria systemów informacyjnych - Adam Krechowicz

Java Database Connectivity

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie obiektowe

Aplikacje WWW - laboratorium

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

Analiza porównawcza technologii tworzenia aplikacji internetowych dla baz danych Oracle

Analiza porównawcza technologii tworzenia aplikacji internetowych dla baz danych Oracle

Java Servlet i Java Server Pages

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Przegląd technologii JSP

Języki programowania wysokiego poziomu WWW

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Architektura Model-View-Controller

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Serwery aplikacji. dr Radosław Matusik. radmat

Projektowanie aplikacji J2EE w architekturze Model-View-Controller

Java rozszerzenie. dr. A. Dawid

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

Programowanie wielowarstwowe i komponentowe JSP, JSF

Programowanie obiektowe zastosowanie języka Java SE

Aplikacje WWW - laboratorium

Testowanie aplikacji Java Servlets

Kurs WWW. Paweł Rajba.

Enterprise JavaBeans (EJB)

Aplikacje WWW - laboratorium

Java Server Pages. Leksykon kieszonkowy

Witryny i Portale Internetowe

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Złożone komponenty JSF wg

Systemy wielowarstwowe N-tier

Java Server Faces - wprowadzenie

Złożone komponenty JSF wg

Programowanie i projektowanie obiektowe

b) Jako nazwę projektu wpisz SerwletyJSPJSTL. Nie zmieniaj wartości pozostałych opcji. Kliknij przycisk Next >.

Wywoływanie metod zdalnych

Klasy abstrakcyjne, interfejsy i polimorfizm

Gatesms.eu Mobilne Rozwiązania dla biznesu

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Programowanie w Internecie. Java

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Aplikacje WWW - laboratorium

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Java wybrane technologie

Transkrypt:

pawel.rajba@gmail.com, http://kursy24.eu/

Servlets Charakterystyka Główne metody Obiekty request i response JSP Dyrektywy Elementy skryptowe Elementy akcji Generowanie treści Obiekty niejawne Obiekty request i response Ciasteczka Sesje JSTL Przegląd znaczników

Krótka charakterystyka Programy do generowania odpowiedzi HTTP Jest to program w języku Java Pozwala na tworzenie dynamicznych stron WWW Kompilowane przy pierwszym żądaniu Bardzo niskopoziomowe, rzadko bezpośrednio używane w tworzeniu serwisów internetowych Dlatego nie będziemy im poświęcać więcej uwagi

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doget( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getwriter(); out.println("hello World"); } }

Główne metody servletu doget dopost doput dodelete init destroy Ważne obiekty request, response

request reprezentuje żądanie Daje dostęp do Parametrów żądania, nagłówków żądania, ciastek i wielu innych składowych response reprezentuje odpowiedź Pozwala na Przekierowanie odpowiedzi, ustawienie kodu odpowiedzi, dodanie ciastek i wiele innych operacji

Technologia serwerowa, analogicznie do PHP JSP jest kompilowane Jako część JEE daje dostęp do platformy Java Obecnie podstawa do tworzenia stron w Javie Bardzo dojrzałe rozwiązanie

Co może osadzić na stronie JSP? Dyrektywy Skrypty Akcje Mamy dwa sposoby osadzania elementów: typu JSP: <% coś %> typu XML: <jsp:element>coś</jsp:element>

Składnia <%@ nazwa_dyrektywy %> <jsp:directive.nazwa_dyrektywy /> Rodzaj składni często zależy od kontekstu Podstawowe dyrektywy page określa parametry strony include dołącza zewnętrzny plik tablig udostępnia zewnętrzną bibliotekę znaczników

Dyrektywa page Pozwala na ustawienie parametrów strony JSP Wybrane atrybuty contenttype typ zawartości (domyślnie text/html z ISO-8859-1) errorpage Strona wyświetlana w przypadku wyjątku iserrorpage Strona, która ma być wyświetlana przy pojawieniu się wyjątku musi mieć to ustawione na true (pozostałe strony mają na false)

Dyrektywa page, c.d. Wybrane atrybuty, c.d. import Wczytanie przestrzeni nazw (domyślnie: javax.servlet.jsp.*, javax.servlet.http.*, java.lang.*, javax.servlet.*) session Określa, czy żądanie ma być częścią sesji (domyślnie true) Uwaga: para atrybut/wartość może wystąpić raz Przykład <%@ page language="java contenttype="text/html;charset=iso-8859-2" %> <%@ page import="java.util.stringtokenizer" %>

Dyrektywa include Dołącza zawartość zewnętrznego pliku Wstawienie jest w momencie kompilacji dołączenie jest statyczne Atrybut file określa zasób do dołączenia Przykład <%@ include file="naglowek.html" %>

Dyrektywa taglib Udostępnia dodatkową bibliotekę znaczników Atrybuty uri ścieżka do biblioteki prefix przestrzeń nazw dla znaczników Przykład <%@ taglib uri="http://www.java.com/taglib/sample.jar" prefix="sample" %> <sample:tagaction>przykładzik</sample>

Elementy skryptowe Mamy 3 rodzaje elementów Skryptlety <% kod %> <jsp:scriptlet>kod</jsp:scriptlet> Wyrażenia <%= text %> <jsp:expression>text</jsp:expression> Deklaracje <%! kod %> <jsp:declaration>kod</jsp:declaration> Deklaracje nie generują żadnego outputu Próba wywołania out.println spowoduje błąd kompilacji

Osadzamy, aby wykonać jakąś akcję Elementy akcji mogą być grupowane w biblioteki znaczników (tag libraries) Mamy do dyspozycji predefiniowane akcje include, forward, plugin Możemy także tworzyć własny JavaBean i realizować do niego dostęp usebean, setproperty, getproperty

Podstawowa składnia <jsp:nazwa_akcji atrybut="wartosc" /> Dla wszystkich elementów akcji dostępne są atrybuty: id identyfikator scope określa czas życia elementu akcji: page, request, session, application różnica między page a request: po przekierowaniu przez np. akcję forward obiekt akcji page jest usuwany, a obiekt akcji request dalej dostępny

Akcja include wczytanie pliku <jsp:include page="adres" flush="true" /> <jsp:include page="adres" flush="true"> <jsp:param name="param" value="wartosc" /> </jsp:include> Akcja forward - przekierowanie <jsp:forward page="adres" /> <jsp:forward page="adres"> <jsp:param name="param" value="wartosc" /> </jsp:forward>

Akcja plugin osadzenie komponentu Java Składnia <jsp:plugin type="bean applet" code="kod" codebase="kod_bazowy" [align="ustawienie"] [archive="lista_archiwow"] [height="wysokosc"] [hspace="odleglosc_pozioma"] [jreversion="wersja_jre"] [name="nazwa_elementu"] [vspace="odleglosc_pionowa"] [width="szerokosc"] [nspluginurl="download_dla_netscape"] [iepluginurl="download_dla_ie"]> [<jsp:params> [<jsp:param name="parametru "value="wartosc"/>]+ </jsp:params>] [<jsp:fallback>tekst</jsp:fallback>] </jsp:plugin>

Akcja plugin, przykład: <jsp:plugin type="applet" code="gierka.class" codebase="/aplety" width="200" height="200"> <jsp:param name="param" value="val" /> <jsp:fallback> Nie mozna uruchomic Java Plugin </jsp:fallback> </jsp:plugin>

Akcja JavaBeans Najpierw krótkie przypomnienie jak tworzyć Bean a Konstruktor jest bezparametrowy Dostęp do właściwości przez odpowiednie settery i gettery public {Typ obiektu} get{własciwosc} () public void set{własciwosc} ({Typ obiektu}) public boolean is{własciwosc} () ewentualnie do właściwości indeksowanych public {Typ obiektu}[] get{własciwosc} () public void set{własciwosc} ({Typ obiektu}[]) public {Typ obiektu} get{własciwosc} (int) public void set{własciwosc} (int, {Typ obiektu})

Akcja JavaBeans Atrybuty: id, scope, class, type, beanname class implementacja obiektu; domyślnie z beanname type typ zmiennej skryptowej; domyślnie brany z class Obiekt jest wyszukiwany na podstawie id i scope ewentualnie tworzona jest nowa instancja Do ustawienia i pobrania wartości bean-a mamy <jsp:setproperty name="" property="" value="" /> <jsp:getproperty name="" property="" />

Wykorzystujemy elementy skryptowe Wypisanie bieżącej daty na kilka sposobów: <% out.println( new java.util.date() ); %> <%= new java.util.date() %> <jsp:scriptlet> out.println(new java.util.date()); </jsp:scriptlet> <jsp:expression> new java.util.date() </jsp:expression>

data2.jsp data3.jsp akcja_include.jsp, tytul.jsp akcja_forward.jsp, data.jsp databean.jsp, ProstyBean.java formbean.jsp, formbeanconfirm.jsp, formbeanshow.jsp, UserInfoBean.java

Ważne obiekty predefiniowane request typu javax.servlet.http.httpservletrequest response typu javax.servlet. http.httpservletresponse session typu javax.servlet. http.httpsession application typu javax.servlet.servletcontext

c.d. out, typu javax.servlet.jsp.jspwriter exception, typu java.lang.throwable dostępny tylko na stronach błedów dostarcza informację o błędach config, typu javax.servlet.servletconfig page, typu java.lang.object pagecontext, typu javax.servlet.jsp.pagecontext

Parametry żądania HTTP request.getquerystring() zwraca String request.getmethod() zwraca String request.getparameter("imie") zwraca String request.getparametervalues("miasta") zwraca String[] request.getparametermap() zwraca Map<String,String[]> request.getparameternames() zwraca Enumeration<String>

Nagłówki żądania HTTP request.getheader(string) zwraca String request.getheadernames() zwraca Enumeration request.getheaders(string) zwraca Enumeration request.getlocale() zwraca String (preferowane Accept-Language) request.getlocales() zwraca Enumeration (wszystkie Accept-Language)

parameters.jsp headers.jsp

Dodanie nagłówków odpowiedzi response.addheader(string name, String value) response.setheader(string name, String value) Przykładowe nagłówki Content-Type: text/html Connection: keep-alive close Location: index2.html Expires: <data>

Kody odpowiedzi response.senderror(int sc) response.senderror(int sc, String msg) response.sendstatus(int sc) response.sendstatus(int sc, String msg) Przykładowe kody odpowiedzi Kod stanu Stała w JSP 200 OK SC_OK 204 No Content SC_NO_CONTENT 301 Moved Permanently SC_MOVED_PERMANENTLY 302 Moved Temporarily SC_MOVED_TEMPORARILY 401 Unauthorized SC_UNAUTHORIZED 403 Forbidden SC_FORBIDDEN 404 Not Found SC_NOT FOUND 500 Internal Server Error SC_INTERNAL_SERVER_ERROR 503 Service Unavailable SC_SERVICE UNAVAILABLE

Kilka uwag Do ustawienia nagłówka Content-type jest osobna funkcja, przykładowe użycie: response.setcontenttype("text/xml"); Do sprawdzenia, czy dany nagłówek został wysłany jest metoda boolean response.containsheader(string name) Dwa przykłady na przekierowanie strony response.setstatus(httpservletresponse.sc_moved_temporarily); response.setheader("location","http://localhost:8080/"); void response.sendredirect("http://localhost:8080/"); Warto tutaj porównać do akcji <jsp:forward page="" />

redirect.jsp, headers.jsp statushttp.jsp

Obiekt Cookie konstruktor public Cookie(String name, String value) metody void Cookie.setMaxAge(int expire) void Cookie.setDomain(String pattern) void Cookie.setPath(String uri) void Cookie.setSecure(boolean flag) String Cookie.getName() String Cookie.getValue()

Tworzenie ciasteczka void response.addcookie(cookie cookie) Pobieranie ciasteczek Cookie[] request.getcookies()

licznik.jsp

Identyfikator sesji jest przekazywany przez ciastko Domyślnie nazywa się JSESSIONID Sesje są włączane domyślnie Jeśli chcemy wyłączyc śledzenie sesji, musimy to zrobić jawnie poprzez dyrektywę <%@ page session="false" %> Niejawnie tworzony jest obiekt session Podstawowe metody: Object getattribute(string name) void setattribute(string name, Object value) void removeattribute(string name) Enumeration<String> getattributenames()

Metody związane z cyklem życia sesji int session.getmaxinactiveinterval() pobiera czas, po jakim sesja wygaśnie void session.setmaxinactiveinterval(int interval) ustawienie czasu, po jakim sesja wygaśnie long session.getcreationtime() moment utworzenia sesji (liczba sekund od 1970-01-01) long session.getlastaccessedtime() moment ostatniego użycia sesji void session.invalidate() usuwa sesję

odwiedziny.jsp confirmlogin.jsp, login.jsp, logout.jsp

JSTL to JavaServer Pages Standard Tag Library JSTL oferuje szereg pomocnych znaczników Podstawowe znaczniki Znaczniki formatujące Znaczniki dla SQL Znaczniki dla XML Funkcja JSTL

Tutorial wraz z przykładami: http://www.tutorialspoint.com/jsp/jstl_core_set_tag.htm Ciekawy przykład: JSTL + formularz http://www.java2s.com/code/java/jstl/jstlformusingtextfield.htm