JavaServer Pages. Konrad Kurdej Karol Strzelecki



Podobne dokumenty
1 Wprowadzenie do J2EE

prepared by: Programowanie WWW Servlety

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

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


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

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

Architektury Usług Internetowych. Laboratorium 1. Servlety

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

Java wybrane technologie spotkanie nr 3. Serwlety

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

Architektury Usług Internetowych. Laboratorium 1 Servlety

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

Java wybrane technologie spotkanie nr 5. Java Server Pages

Kurs WWW 1. Paweł Rajba

Wybrane działy Informatyki Stosowanej

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

Aplikacje WWW - laboratorium

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Wzorce prezentacji internetowych

Aplikacje Internetowe, Servlety, JSP i JDBC

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

mgr inż. Michał Paluch

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

Przegląd technologii JSP

Java w Internecie - czy to ma sens? ;)

Serwery aplikacji. dr Radosław Matusik. radmat

Serwlety i JSP na platformie Java EE. Damian Makarow

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

Podstawowe wykorzystanie Hibernate

In»ynieria systemów informacyjnych - Adam Krechowicz

OpenLaszlo. OpenLaszlo

Wybrane działy Informatyki Stosowanej

Aplikacje WWW - laboratorium

prepared by: Programowanie WWW Model-View-Controller

Facelets ViewHandler

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

Piotr Laskowski Krzysztof Stefański. Java Servlets

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

Aplikacje WWW - laboratorium

Java EE: Serwlety i filtry serwletów

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

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

Serwery aplikacji. dr Radosław Matusik. radmat

Architektura Model-View-Controller

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

Programowanie w Javie 2. Płock, 26 luty 2014 r.

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

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

Projektowanie aplikacji J2EE w architekturze Model-View-Controller

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

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

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

Aplikacje internetowe i rozproszone - laboratorium

Laboratorium 1 Wprowadzenie do PHP

1 90 min. Aplikacje WWW Harmonogram spotkań, semestr zimowy (studia stacjonarne)

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

Wybrane działy Informatyki Stosowanej

Programowanie internetowe

Java Server Faces - wprowadzenie

SOP System Obsługi Parkingów

Java rozszerzenie. dr. A. Dawid

Programowanie w języku Java

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

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

TIN Techniki Internetowe Lato 2005

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat.

Programowanie obiektowe

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Aplikacje WWW Wprowadzenie

Programowanie w Internecie. Podstawy użycia JSP. Paweł Kasprowski. vl06z

Aplikacje WWW - laboratorium

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Java jako język programowania

Programowanie wielowarstwowe i komponentowe JSP, JSF

JSF 1.2. w wykonaniu NetBeans IDE 6.1. Jacek Laskowski

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Forum Client - Spring in Swing

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Programowanie komponentowe 5

Programowanie obiektowe zastosowanie języka Java SE

Zagadnienia Programowania Obiektowego Agata Hejmej

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Java Database Connectivity

Zagadnienia projektowania aplikacji J2EE

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Komunikacja między serwletami

Enterprise JavaBeans (EJB)

Aplikacje WWW - laboratorium

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

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

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Enterprise JavaBeans

Transkrypt:

JavaServer Pages Konrad Kurdej Karol Strzelecki

Podejścia do projektowania web aplikacji za pomocą Javy

Serwlety Java Serwlety Java to technologia wchodząca w skład Java EE (dawniej J2EE). Serwlet Java jest programem Java umiejscowionym po stronie serwera HTTP, służącym do automatycznego generowania dokumentów (np. HTML) stanowiących odpowiedzi na żądania HTTP. Serwlety Java wymagają dedykowanego środowiska uruchomieniowego nazywanego serwerem aplikacji Java EE (odpowiada on m.in. komunikację z bazami danych). Serwlety Java mogą odwoływać się do kodu logiki biznesowej zaimplementowanego w formie obiektów Java Beans, Enterprise Java Beans, itp.

JavaBeans JavaBeans - komponenty programowe dla środowiska Java opracowane w latach 90. przez firmę Sun Microsystems, będące niezależnymi modułami wywoływanymi i uruchamianymi w programach Java. W praktyce są to klasy napisane w określonej konwencji. Specyfikacja JavaBeans firmy Sun definiuje je jako: "wielokrotnie używalne komponenty, które mogą być manipulowane wizualnie przez narzędzia do tworzenia oprogramowania".

Serwlet Java Kod serwletów przypomina pisanie w PHP z tym że cały dokument to jest skrypt który wypisuje wszystkie części strony za pomocą np echo. Jest to o tyle nie praktyczne, że wszelkiego rodzaju narzędzia do wizualnej edycji stron nie dadzą się zastosować. Tej wady pozbawione jest JSP które pozwala (podobnie jak PHP) na wstawianie dynamicznych fragmentów w kod HTML. Serwlety: HTML wewnątrz Javy JSP: Java wewnątrz HTMLa

Serwlet Java Serwlet musi: 1. dziedziczyć po klasie HttpServlet 2. obsługiwać jedną z metod: public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException opcjonalnie (wywoływane tylko raz!): public void init(servletconfig config) throws ServletException public void destroy()

Przykładowy serwlet import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class HTTPServletTemplate extends HttpServlet { public void doget (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter w = res.getwriter(); w.println("<html><head><title>hello World</title></head>"); w.println("<body><h1>hello World</h1></body></html>"); w.flush(); // Commits the response w.close(); } }

Dwa podejścia do projektowania Java web aplikacji

Model 1

Model 1 Świetnie się sprawdza w niewielkich projektach. Ale... Zbyt silne powiązanie logiki biznesowej z logiką prezentacji utrudnia rozwijanie i modyfikację projektu

MVC - koszmar poprzedniego roku powraca :) Poraz pierwszy opisał wzorzec Model-View-Controller w 1979 Trygve Reenskaug pracując nad Smalltalk-iem w Xerox PARC. MVP jest jego odmianą z poczatków lat 90.. W listopadzie 2002 W3C uznało strukturę MVC za część ich architektury XForms dla wszystkich przyszłych web aplikacji. Zostanie to zintegrowane z specyfikacją XHTML 2.0. Współcześnie rozdziela się MVC na części odpowiedzialne za: model danych interfejs użytkownika logikę sterowania

Model 2

Model 2

Model 2 1. Przeglądarka wysyła żądanie. Aplikacja jest tak skonfigurowana, że każde żądanie jest kierowane do serwletu kontrolera. 2. Serwlet kontroler analizuje żądanie i tworzy wymagane przez żądany widok obiekty klas zewnętrznych. Interakcja kontrolera z modelem może pociągać za sobą interakcję z bazą danych. 3. Serwlet przekazuje sterowanie do odpowiedniego widoku - strony JSP. 4. JSP pobiera dane z obiektów modelu przygotowanych przez kontroler. Obiekty te mogą udostępniać dane pobrane z bazy danych. 5. JSP generuje wynikowy dokument HTML przesyłany do przeglądarki.

Model 2 Stosowany jest przy średniego i dużego rozmiaru projektach. Łatwiej rozwijać, zmieniać interfejs użytkownika itp. Apache Struts open-sourcowy framework* dla aplikacji webowych Java EE wspiera tworzenie zgodnie z MVC (głównie widoku i kontrolera * framework - struktura wspomagająca tworzenie aplikacji. Często udostępnia też dodatkowe aplikacje.

Model 2 Ogromną zaletą tego podejścia jest wykożystanie mocnych stron każdej z technologi i uniknięcie ich słabości. W JSP niewygodne jest pisanie bardziej skomplikowanych programów, ale za to łatwo jest generować kod strony. Z kolei w serwletach jest na odwrót.

Servlet container - kontener serwletów Konieczne do uruchomienia serwletów jest funkcjonowanie serwera WWW z zaimplementowanym kontenerem serwletów.

Apache Tomcat kontener serwletów rozwijany przez Apache Software Foundation (ASF) serwlety Javy oraz JavaServerPages zaimplementowane zostały według specyfikacji Sun Microsystems czysty Javowy serwer stron (nie mylić z Apache web serwer) wydawany na licencji Apache License 2.0 (open source) ostatnia wersja 6.0.18 (obsługa specyfikacji 2.5 servletów i 2.1 JSP) wersje 5.5.x wspierają serwlety w wersji 2.4 i JSP 2.0 Apache Ant powstał przy okazji przenoszenia Tomcat-a na otwartą licencję (odpowiednik make)

Apache Tomcat Składa sie z trzech części: Catalina - kontener serwletów Coyote - komponent do obsługi połączeń HTTP (wspiera HTTP/1.1). Oczekuje na połączenia na odpowiednim porcie i przekazuje je do Tomcat Engine aby je obsłużył i wysyła odpowiedź Jasper - silnik JSP. Parsuje pliki JSP i aby potem skompilować je do kodu Javy jako serwlety (zajmuje się tym Catalina). W trakcie działania potrafi wykryć zmiany w plikach JSP i przekompliować je Bardzo popularny. Dostępny chociażby przy instalowaniu pakietu NetBeans.

Jetty w 100% napisany w Javie serwer HTTP i kontener serwletów open-source - na licencji Apache 2.0 License wykorzystywany w takich projektach jak JBoss czy Geronimo (serwery aplikacji) autorzy skupiają się głównie na prostocie, wydajności i przenośności dzięki czemu nadaje się on także do systemów wbudowanych

JSP - JavaServer Pages standard opracowany przez Sun działa po stronie serwera kompilowane do serwletu

01. <%@ page language="java" contenttype="text/html; charset=iso-8859-2" 02. pageencoding="iso-8859-2"%> 03. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 04. "http://www.w3.org/tr/html4/loose.dtd"> 05. <%! int k=5; %> 06. <html> 07. <head> 08. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2"> 09. <title>przykładowa strona JSP</title> 10. </head> 11. <body> 12. Aktualny czas: <%=java.util.calendar.getinstance(). gettime()%> 13. <% 14. for (int i=0; i<k; ++i) {

Podstawy umożliwia osadzanie kodu Javy w dokumencie html osadzony kod nazwiemy skryptletem znaczniki: <% instrukcje %> -> tak oznaczamy obszar, w którym ma zostać wykonany kod, np.: <% for(;;); %> spowoduje, że trochę poczekamy na odpowiedź <%= wyrażenie %> -> w ten sposób wklejamy wartość wyrażenia, np.: <%= new java.util.date() %> wypisze na ekranie aktualną datę

cd. <%! instrukcje %> treść metod/pól, które znajdą się w servlecie wytowrzonym z danego pliku *.jsp <%-- komentarz --%> bez komentarza możliwe również komentarze w obrębie skryptletu <% //np. takie %>

html i jsp kody html i jsp mogą być mieszane, zapis <% for(int i = 0; i < 10; i++){ %> <B>tratatata</B> <% } > zostanie prawdopodobnie przetłumaczony na kod servletu for(int i = 0; i < 10; i++){ out.println("<b>tratatatata</b>"); } eliminuje to istotną niewygodę w używaniu serwletów

Obiekty niejawne out obiekt typu javax.servlet.jsp.jspwriter użycie <% out.println("fiu fiu") %> zamiast <%= "fiu fiu" %> request typu javax.servlet.http.httpservletrequest przechowuje żądanie http możemy go odpytywać o pola formularza

request cd. strona1.jsp... <form> <intput type="text" name="pole1" /> <input type="submit" action="strona2.jsp" /> </form>... strona2.jsp <% out.println(request.getparameter("pole1")); %> wypisze treść pola

Inne metody request'a zapytania nt. serwera getservername(); getprotocol(); nagłówki http request getcontenttype(); getcontentlength(); również tak (ale nie wszystkie): getheader("accept");

response typu javax.servlet.http.httpservletresponse można dołączać nagłówki reponse.setcontenttype("text/plain"); można przekierować na inną stronę //to pierwsze ustawia status response.setstatus(response.sc_moved_temporarily); response.setheader("location", "http://www.fiufiu.com");

reponse cd. można też wysłać strumień danych response.setheader("content-disposition", "attachment; filename=\"" + "nazwa_pliku" + "\""); //a następnie piszemy na response.getoutputstream();

pagecontext, session pagecontext ma odniesienia do request oraz response, można również pobrać resztę z wymienianych session - umożliwia śledzenie sesji, udostępnia m.in. metody: String getid(); boolean isnew(); void invalidate(); void putvalue(string key, Object value); -> umożliwia zapamiętywanie jakichś wartości

Akcje w JSP na stronie możemy umieścić coś takiego: <jsp:nazwa_akcji atrybut1="w1" /> są 2 wspólne atrybuty dla wszystkich akcji: id - identyfikator scope - zasięg ze zbioru {page, request, session, application}

<jsp:usebean> wyszukuje lub tworzy egzemplarz JavaBean'a, czyli klasy z elementarnymi polami i metodami getnazwa oraz setnazwa ma już trochę więcej atrybutów <jsp:usebean id="fasolka" class="mojapaczka.fasolka" /> tworzy obiekt klasy mojapaczka.fasolka o nazwie fasolka. inne atrybuty: type - określa bazową klasę, która może być następnie rzutowana przez atrybut class beanname - podobnie jak class, korzysta z Beans.instantiate();

<jsp:setproperty> umożliwia automatyczną inicjalizację JavaBean'a <jsp:usebean id="beanek" class="mojapaczka.beanek"> <jsp:setproperty name="beanek" property="*" /> </jsp:usebean> Taki kod pobiera wszytkie pola z formularza, dopasowuje ich nazwy do pól JavaBean'a i inicjalizuje automatycznie pola beanka. Zamiast property="*" możemy użyć property="pole"

cd. można też tak: <jsp:setproperty name="beanek" property="polebeanka" param="polezformularza" /> w ten sposób można postąpić w przypadku, gdy nie zgadzają się nazwy pól formularza z polami Bean'a można też tak: <jsp:setproperty name="beanek" property="polebeanka" value="<% new String("szaleństwo") %>"

Takie postępowanie umożliwia oddzielenie warstwy modelu od warstwy prezentacji.

<%@ czyli znaczków cd. dołącznie plików w czasie tłumaczenia: <%@ include file="/menu.html" %> <%@ include file="deklaracje.inc" %> <body> Zmienna zadeklarowana w innym pliku: <%= zmienna %> </body> <jsp:include page="strona.jsp" /> dołącza stronę w czasie żądania

znaczki cd. <%@ page language="java" contenttype="text/html; charset=iso-8859-1" pageencoding="iso-8859-1"%> w taki sposób można określać różne właściwości strony a tak robimy import <%@page import="java.util.date"%>

Wtrącenie o ciasteczkach W łatwy sposób można zarządzać ciasteczkami. Tworzy się je konstruktorem public Cookie(String name, String value); wysyła response.addcookie(cookie cookie); a odbiera Cookie[] request.getcookies();

Definiowanie własnych znaczników Ponoć bardzo przydatny mechanizm, umożliwia grupowanie tworzenie własnych tagów jako kompozycji dostępnych. Stworzenie nowego taga jest skomplikowane, użycia bardzo proste: <%@ taglib uri="http://localhost/taglib/mojetagi.jar" prefix=" mojetagi" %> <mojetagi:mojtag parametr1="wartosc1"> tekst </mojetagi: mojtag>

Ćwiczenia: http://java.sun. com/developer/onlinetraining/jspintro/exercises/counter/inde x.html http://java.sun. com/developer/onlinetraining/jspintro/exercises/forms/index. html

Bilbiografia http://en.wikipedia.org/wiki/javaserver_pages http://en.wikipedia.org/wiki/java_servlet http://pl.wikipedia.org/wiki/jsp_model_2 http://java.sun.com/developer/technicalarticles/javaserverpages/servlets_jsp/ http://java.sun.com/developer/onlinetraining/jspintro/contents.html http://osilek.mimuw.edu.pl/index.php?title=awww-1st3.6-w10.tresc-1.1-toc "Java Servlet Programowanie", Jason Hunter i William Crawford "JSP Tworzenie Stron WWW", Damon Hougland, Aaron Tavistock Przykład: http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html