Semináˇr Java XI Servlety, JSP Semináˇr Java XI p.1/38

Podobné dokumenty
Tvorba informačních systémů

Tvorba informačních systémů

Tvorba informačních systémů

Michal Krátký, Miroslav Beneš

Technologie Java Server Pages

Tvorba informačních systémů

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition vývoj webových aplikací

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Java Server-side. Štěpán Kuchař. VŠB-TUO FEI Katedra informatiky

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

JAVA. Webové aplikace Servlety, JSP

Nainstalujte zvolený server s podporou servletů a JSP, např. Jakarta/Tomcat nebo JBOSS.

X36WWW. Technologie aplikačních serverů. Miroslav Bureš,, Martin Klíma. X36WWW: 12. přednáška 1

Tvorba informačních systémů

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Tvorba informačních systémů

Základy programování v jazyce JAVA

Server-side technologie pro webové aplikace

Java technologie pro webové aplikace

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

(Enterprise) JavaBeans. Lekce 7

Tvorba informačních systémů

X33EJA Enterprise Java

České vysoké učení technické v Praze. Fakulta elektrotechnická. Katedra řídící techniky. Internetové rozhraní do Matlabu.

KIV/PIA 2013 Jan Tichava

Softwarové komponenty a Internet

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Technologie Java. Jaroslav Žáček

Instalace a konfigurace web serveru. WA1 Martin Klíma

<Insert Picture Here> Vývoj portálových řešení v Javě

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

UJO Framework. revoluční architektura beans. verze

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Úvod do Web Services

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Vytváření a použití knihoven tříd

PA165: Úvod do Java EE. Petr Adámek

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

1 Webový server, instalace PHP a MySQL 13

Úvod do tvorby internetových aplikací

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Úvod do aplikací internetu a přehled možností při tvorbě webu

Nové jazykové brány do Caché. Daniel Kutáč

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

KIV/PIA Semestrální práce

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Java a Caché IV: Manipulace s objekty

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

language="javascript">... </script>.

8 Třídy, objekty, metody, předávání argumentů metod

JavaServer Faces Zdeněk Troníček

RMI Remote Method Invocation

Web Services na SOAP

1. Webový server, instalace PHP a MySQL 13

}w!"#$%&'()+,-./012345<ya

KTE / ZPE Informační technologie

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Koláčky, sezení. Martin Klíma

Skriptovací jazyky. Obsah


H.p protokol, request response

MBI - technologická realizace modelu

Platební systém XPAY [

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

JEE. Webové aplikace Servlety, JSP, JSF

typová konverze typová inference

Architektura aplikace

RMI - Distribuované objekty v Javě

Enterprise Java Beans 3.0

Java Platform, Enterprise Edition (Java EE)

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Java a XML. 10/26/09 1/7 Java a XML

Projekty pro výuku programování v jazyce Java

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

Technologie JavaBeans

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

WAP. Jirka Kosek. IZI228 tvorba webových stránek a aplikací. Poslední modifikace: $Date: 2004/09/30 09:02:59 $ Copyright Jiří Kosek

INFORMAČNÍ SYSTÉMY NA WEBU

Oracle XML DB. Tomáš Nykodým

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

Základy HTML, URL, HTTP, druhy skriptování, formuláře

WWW technologie. HTTP protokol

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE

1. Programování proti rozhraní

20. Projekt Domácí mediotéka

Úvod do programovacích jazyků (Java)

Architektury informačních systémů

Architektury informačních systémů

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Transkript:

Seminář Java XI Servlety, JSP Seminář Java XI p.1/38

Co je servlet? Předkompilované java programy běžící na straně www serveru Standardní metoda metoda rozšiřování webových serverů o dynamické generování obsahu Java = různé platformy a servery (IIS, Tomcat, Apache,... ) Ekvivalence CGI Jeden process Široké Java API Další technologie Javy (JDBC, EJB,... ) javax.servlet.*; HttpServlet Seminář Java XI p.2/38

Výhody servletů Perzistence mezi voláními odezva (CGI, FastCGI) K dispozici celé Java API JDBC (pooling) JAXP EJB Běh zajišt uje kontejner Kvalitní free kontejnery Různí dodavatelé standardizace Java Servlet API 2.4 Seminář Java XI p.3/38

Servletové kontejnery Jako rozšíření www serveru IIS Apache/JServ S www serverem Jetty Tomcat Aplikační servery (J2EE) JBoss Sun ONE Server Seminář Java XI p.4/38

Životní cyklus servletu 1. INIT voláno při prvním uživateli, ne pro každý request 2. SERVICE každý request, nový thread 3. doget, dopost, doxxx GET, POST 4. DESTROY rušení instance, ne po každém requestu Seminář Java XI p.5/38

Servlet public class Servlet1 extends HttpServlet { public void init() throws ServletException { } public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { } response.setcontenttype("text/html; charset=iso-8859-2"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head><title>servlet1</title></head>"); out.println("<body bgcolor=\"#ffffff\">"); out.println("</body></html>"); } public void destroy() { } Seminář Java XI p.6/38

Zpracování dat HttpServletRequest data od klienta" getparameter(name) null pokud není data od uživatele (name název formulářového prvku) getparametervalues(name) Pokud je jenom jedna položka, tak pole o 1 prvku getparameternames() HttpServletResponse co pošleme klientovi" setstatus setcontenttype addcokie sendredirect PrintWriter out = response.getwriter(); OutputStream os = response.getoutputstream(); Seminář Java XI p.7/38

Cookies Servlet pošle jednoduché jméno a hodnotu klientovi Klient si tyto hodnoty uloží Klient vrátí tyto data, pokud se shoduje adresa, doména apod. (dle nastavení cookie) K čemu se to využívá? Identifikace uživatele během session" (viz. další slajdy) Uložení informací o uživateli Nastavení stránky pro uživatele Cílená reklama Seminář Java XI p.8/38

Problémy s cookies Problémem je soukromí, nikoliv bezpečnost Server si může pamatovat Vaše akce Server může sdílet informace z cookies s dalšími servery Špatné" weby ukládají citlivé informace do cookies Doporučené zásady Pokud to není nezbytně nutné, nepoužívat Prohlížeč může mít zakázané cookies Neukládat citlivé informace Seminář Java XI p.9/38

Cookies Některé metody getmaxage()/setmaxage() +hodnota, 0, -hodnota getcomment()/setcomment() getdomain()/setdomain() Seminář Java XI p.10/38

Cookies Nastavení cookie Cookie c = new Cookie("myCookie","data"); c.setcomment("muj pokusny kolacek"); c.setmaxage(10); response.addcookie(c); Seminář Java XI p.11/38

Cookies Získání seznamu cookies Cookie[] cookies = request.getcookies(); if (cookies!=null) { for (int i = 0; i < cookies.length; i++) { Cookie cookie = cookies[i]; out.println("cookie : "+cookie.getname()+ " "+cookie.getvalue()); } } else { out.println("<p>zadna cookie neni k dispozici</p>"); } Seminář Java XI p.12/38

Úkol Internetový obchod nákupní košík Každý klient má svůj košík Jak na to? Cookies URL-rewriting Skryté HTML formulářové prvky Je potřeba vyšší API Seminář Java XI p.13/38

Session Session objekt žije" na serveru Pro usnadnění práce HttpSession s = request.getsession(true); cookie/url klíč (SessionId) vrátí předešlé/vytvoří novou Hashtable mechanismus Seminář Java XI p.14/38

Session metody HttpSession session = request.getsession(true); session.setattribute(name, value); session.getattribute(name); session.getattributenames(); session.getcreationtime(); session.getid(); Seminář Java XI p.15/38

Servlety rekapitulace Programy na straně serveru Běží v servletovém kontejneru Ekvivalence CGI skriptům Běží na : IIS, Apache, Tomcat,... Specifikace Kvalitní free" www servery (Tomcat, Jetty,... ) Seminář Java XI p.16/38

Servlety co lze jednoduše a co ne? Číst formulářová data Číst hlavičky HTTP Zapisovat HTTP kódy a hlavičky Používat cookies Využívat session (uchování dat mezi dotazy uživatele) Špatně se píše HTML, XML apod. Co s tím?? Seminář Java XI p.17/38

JSP (Java Serve Pages) Základní idea Použít HTML pro většinu stránky Označkovat servletový kód spec. tagy JSP stránku transformovat na servlet Jaké jiné technologie tomu odpovídají? Co je tím myšleno? JSP <h2>dobry den <%=request.getparameter("name")%></h2> URL http://localhost/hello.jsp?name=pepiku Výsledek Dobry den Pepiku Seminář Java XI p.18/38

JSP Poznámka: Technicky nemůžou JSP dělat nic více, než může udělat servlet JSP nám pomáhají Psát jednodušeji HTML Lépe se orientovat v HTML stránky Lze využít některé nástroje pro HTML (HomeSite) Oddělení prezentace od aplikační logiky Pořád je nutné umět programovat servlety JSP servlet klient Automatická kompilace Žádný spec. adresář Žádná definice v web.xml apod. Jak to funguje? Seminář Java XI p.19/38

JSP prvky Direktivy <%@ page import="com.xixao.*" %> Úsek programu <% int x = elements.size(); %> Deklarace <%! private int a = 0; %> Výraz V poli elements je <b><%=x%></b> položek Vestavěné značky <jsp:include page="dsdasda/xx.jsp"/> Uživatelské značky <mojeznacka:ukazdatum/> Seminář Java XI p.20/38

JSP příklad <%@ page contenttype="text/html; charset=iso-8859-2" %> <%@ page import="java.util.*" %> <html> <head> <title>ija Test</title> </head> <body bgcolor="#ffffff"> Datum <%=(new Date()).toString()%> <% for (int i=0; i<5; i++) { %> <hr width="20%" align="left"/> <h3><%=i%>. Ahoj</h3> <% } %> </body> </html> Seminář Java XI p.21/38

JSP předdefinované proměnné HttpServletRequest request HttpServletResponse response PrintWriter out HttpSession session ServletContext application PageContext pagecontext Seminář Java XI p.22/38

JSP příklad <%@ page contenttype="text/html; charset=iso-8859-2" %> <html> <head> <title>ija2</title> </head> <body bgcolor="#ffffff"> <h1>informace</h1> <p> <% out.println("session ID : " + session.getid() + "<br>"); out.println("server info : " + application.getserverinfo() + "<br>"); %> </p> <b>metoda pouzita pro dotaz : <%=request.getmethod()%></b> </body> </html> Seminář Java XI p.23/38

JSP JavaBeans komponenty Uživatelské třídy Musí mít konstruktor bez parametru Perzistentní prvky musí být přístupné přes getxxx/setxxx př: implementace nákupního košíku Jak vypadá podpora v JSP <jsp:usebean id="beanname" class="fully_qualified_classname" scope="scope"> <jsp:setproperty.../> </jsp:usebean> Seminář Java XI p.24/38

JSP JavaBeans komponenty <jsp:usebean id="kosik" class="com.ija.kosik" scope="session"/> Odpovídá <% com.ija.kosik kosik = new com.ija.kosik(); %> Proč tedy používat <jsp:usebean/>? Seminář Java XI p.25/38

JSP JavaBeans komponenty <jsp:usebean/> Zjednodušuje zadávání parametrů z příchozího requestu Jednodušeji sdílí bean (parametr scope, application,... ) Získání dat z beanu <jsp:getproperty name="name" property="property"/> Zadání dat do beanu <jsp:setproperty name="name" property="property" value="xx"/> Získání dat z requestu (konverze) <jsp:setproperty name="name" property="property" param="inputname"/> Seminář Java XI p.26/38

JSP Tagy Co se musí udělat? Obslužná třída tagu Musí implementovat javax.servlet.jsp.tagext.tag Obvykle se dědí z TagSupport BodyTagSupport Překrývání metod Stejný adr. na serveru jako servlety, beany Popisovač tagu XML soubor, který popisuje tag (název, atributy, třída,... ) JSP soubor Import popisovače Definice prefixu Používat tagy Seminář Java XI p.27/38

JSP Obslužná třída tagu package com.ija.tags import javax.servlet.jsp.*; import javax.servlet.jsp.tagexr.*; import java.io.*; import java.util.*; public class MyDateTag extends TagSupport { public int dostarttag() { try { String date = (new Date()).toString(); out.print(date); } catch(ioexception e) { /*... */ } return SKIP_BODY; } } Seminář Java XI p.28/38

JSP Popisovač tagu <?xml version="1.0"?> <!DOCTYPE taglib...> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <tag> <name>datum</name> <tagclass>com.ija.tags.mydatetag</tagclass> </tag> </taglib> Seminář Java XI p.29/38

JSP JSP <%@ taglib uri="ija-taglib.tld" prefix="ija" %> Pouziti : <prefix:jmenotagu/> Dnesni datum je <b><ija:datum/></b>. Seminář Java XI p.30/38

JSP Vlastnosti uživ. tagu Tagy s atributy <ija:datum format="dd.mm.yyyy"/> Tagy, které čtou jejich obsah (zpracování, manipulace) <ija:datum> obsah </ija:datum> Mocný nástroj Usnadnění práce Listy, formuláře, přístup k DB... Seminář Java XI p.31/38

JSP Open Source Tag Libraries http://jakarta.apache.org/taglibs/ I18N multijazyčné www Přístup k databázím XML, XSL transformace Práce s datem, časem Posílání emailů Seminář Java XI p.32/38

JSP Rekapitulace Snadné HTML Oddělení prezentace od aplikačního kódu Textové soubory, automatická kompilace Předdefinované objekty Uživatelské tagy OpenSource knihovny s uživ. tagy Seminář Java XI p.33/38

Trendy ve www aplikacích Oddělení obsahu a vzhledu stránek Možnost výstupu v různých formátech (HTML, XHTML, XML, WAP, PDF) Jednoduchost programování Komponentní programování znovupoužitelnost XML, XSL Seminář Java XI p.34/38

XML x HTML HTML <h1>ucty</h1> <p>pepa : 125,- Kc </p> <p>jana : 50,- Kc </p> XML <ucty> <osoba> <jmeno>pepa</jmeno> <stav>125</stav> </osoba> <osoba> <jmeno>jana</jmeno> <stav>50</stav> </osoba> </ucty> XML+XSL = HTML, XHTML, WAP,... Seminář Java XI p.35/38

Apache cocoon Založeno na komponentách XML, XSL Rourové zpracování Skriptovací jazyk, continuations" OpenSource Založeno na servletu http://cocoon.apache.org Kdo to používá? Seminář Java XI p.36/38

Rekapitulace Víme, co je servlet Jak se používá a programuje Víme, co je JSP Vztah servlet-jsp Výhody JSP Kam asi směřuje vývoj web aplikací Kde lze pokračovat : http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html http://jakarta.apache.org/ http://jetty.mortbay.com/jetty/index.html http://www.jboss.org Seminář Java XI p.37/38

Co příště?? J2ME? Seminář Java XI p.38/38