Tvorba informačních systémů

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

Michal Krátký, Miroslav Beneš

Tvorba informačních systémů

Tvorba informačních systémů

Tvorba informačních systémů

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

Tvorba informačních systémů

Technologie Java Server Pages

Tvorba informačních systémů

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

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

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

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

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);

HTTP protokol. HTTP protokol - úvod. Zpracoval : Petr Novotný novotny0@students.zcu.cz

Server-side technologie pro webové aplikace

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

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

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

Instalace a konfigurace web serveru. WA1 Martin Klíma

Tvorba informačních systémů

Architektury informačních systémů

Architektury informačních systémů

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

HTTP protokol. Zpracoval : Petr Novotný

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Michal Krátký, Miroslav Beneš

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

X33EJA Enterprise Java

KIV/PIA 2013 Jan Tichava

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

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

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

WWW technologie. HTTP protokol

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

Tvorba informačních systémů

Principy fungování WWW serverů a browserů. Internetové publikování

Softwarové komponenty a Internet

Technologie Java. Jaroslav Žáček

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

Úvod do tvorby internetových aplikací

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í

HTML Hypertext Markup Language

Přizpůsobení JSTL pro Google App Engine Datastore

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

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

Tvorba informačních systémů

Internet WEB stránky HTML, Hypertext MarkUp Language - nadtextový jazyk - Místo příkazů obsahuje tagy - značky

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

Tvorba informačních systémů

Webové Aplikace (6. přednáška)

Java technologie pro webové aplikace

RMI - Distribuované objekty v Javě

Úvod do Web Services

1. Webový server, instalace PHP a MySQL 13

Počítačové sítě II. 18. World Wide Web, HTTP Miroslav Spousta,

Základy programování v jazyce JAVA

1 Webový server, instalace PHP a MySQL 13

Tvorba webu. Úvod a základní principy. Martin Urza

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

Služba World Wide Web

WWW a HTML. Základní pojmy. Ivo Peterka

Michal Krátký, Miroslav Beneš

JAVA. Webové aplikace Servlety, JSP

(Enterprise) JavaBeans. Lekce 7

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

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Web Services na SOAP

Databázové a informační systémy

JavaServer Faces Zdeněk Troníček

UJO Framework. revoluční architektura beans. verze

Tvorba webových stránek. Ing. Radek Burget, Ph.D.

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

Uspořádání klient-server. Standardy pro Web

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

Počítačové sítě II 17. WWW, HTTP. Miroslav Spousta, 2005

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

Distribuované systémy a výpočty

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

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

Úvod. Leden Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 22

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

RMI Remote Method Invocation

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

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

API pro volání služby kurzovního lístku KB

RESTful API TAMZ 1. Cvičení 11

Internet Information Services (IIS) 6.0

Komponenty v.net. Obsah přednášky

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

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

Schéma e-pošty. UA (User Agent) rozhraní pro uživatele MTA (Message Transfer Agent) zajišťuje dopravu dopisů. disk. odesilatel. fronta dopisů SMTP

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

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

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

Převod 4GL aplikací do webového prostředí. Ing. Jan Musil, IBM ČR Community of Practice for

IBM TRIRIGA Application Platform Verze 3 Vydání 4.2. Příručka instalace a implementace

BI-AWD. Administrace Webového a Databázového serveru Virtualizace HTTP serveru

CZ.1.07/1.5.00/

Tvorba WWW stránek. Mojmír Volf

Transkript:

Java2 Enterprise Edition Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 1/42

Java2 Enterprise Edition HTTP protokol Uživatelské značky Struktura webové aplikace c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 2/42

Java2 Enterprise Edition Hypertext Transfer Protokol (HTTP) Protokol pro přenos dat mezi webovým serverem a prohlížečem. Client - server. Protokol aplikační vrstvy, TCP, port 80. Požadavek (request) - odpověd (response). Aktuální verze 1.1. Metody: GET, PUT, POST,... c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 3/42

HTTP požadavek Java2 Enterprise Edition metoda URL_dokumentu verze_http hlavicky prazdna_radka telo_pozadavku Příklad. Ukázka jednoduchého požadavku GET /clanky/obsah.html HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windo Host: www.server.cz c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 4/42

HTTP odpověd Java2 Enterprise Edition protokol stavovy_kod stavové_hlaseni hlavicky prazdna_radka obsah_odpovedi Příklad: Ukázka odpovědi HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Wed, 06 Dec 2000 13:37:40 GMT X-Powered-By: PHP/4.0.3pl1 Content-type: text/html <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transiti <html>... c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 5/42

Omezení HTTP Java2 Enterprise Edition Řešení: Server nemá stále spojení s klienty a nemůže je proto jednoznačně identifikovat - komplikace pro webové aplikace. Přenášení údajů v URL a skrytých polí formuláře - nebezpečné, komplikované, cookies, session proměnné. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 6/42

Session, cookie Java2 Enterprise Edition Cookie Krátká informace, kterou si server uloží v prohlížeči. Při následujících přístupech k témuž serveru je cookie zaslána zpět. Cookie je vázána na server a případně i na adresář. Nebezpečné všechny stavové informace jsou v každém požadavku/odpovědi. Session Každému novému uživateli se přiřadí unikátní identifikátor (tzv. session-id). Předává se s každým požadavkem pomocí cookie nebo parametrů v URL, resp. skrytých polí ve formuláři. Poměrně bezpečné s každým požadavkem se přenáší jen malá část dat a session-id. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 7/42

Odkazy Java2 Enterprise Edition Libor Dostálek: Velký průvodce protokoly TCP/IP a systémem DNS. Computer Press, 2002. Jiří Kosek: Protokol HTTP. http://badame.vse.cz/izi228/prednasky/ http/frames.html, 2000. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 8/42

Architektura J2EE Java2 Enterprise Edition c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 9/42

Java2 Enterprise Edition Metoda rozšiřování webového serveru o dynamické generování obsahu. Rozhraní pro aplikace s tenkým klientem (webový prohlížeč). c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 10/42

Výhody servletů Java2 Enterprise Edition Perzistence mezi voláními rychlejší odezva na požadavky, sdílení dat. Pro servlet je vytvořeno vlákno z běžícího JVM. CGI opakované zavádění Přístup k celému Java API JDBC databáze JAXP práce s XML JNDI adresářové služby c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 11/42

Java2 Enterprise Edition Servletový kontejner Zajišt uje běh servletu JVM, Správa sezení (session), Udržovaní kontextu, Konfigurační informace, Perzistence. Různí dodavatele standardizace Java Servlet API 2.5 (aktuální verze). c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 12/42

Java2 Enterprise Edition Typy servletových kontejnerů Rozšíření WWW serveru Apache/JServ S vestavěným WWW serverem Jetty (Mortbay.com) WebSphere (IBM) Samostatné aplikační servery Apache Tomcat Sun ONE Server JBoss c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 13/42

Java Servlet API Java2 Enterprise Edition c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 14/42

Java2 Enterprise Edition Reprezentace požadavku c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 15/42

Java2 Enterprise Edition Reprezentace odpovědi c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 16/42

Java2 Enterprise Edition Příklad - HelloWord 1/2 import java. i o. ; import javax. s e r v l e t. ; import javax. s e r v l e t. h t t p. ; public class HelloWorld extends H t t p S e r v l e t { public void doget ( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException { response. setcontenttype ( " t e x t / html " ) ; P r i n t W r i t e r out = response. g e t W r i t e r ( ) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 17/42

Java2 Enterprise Edition Příklad - HelloWord 2/2 } } out. p r i n t l n ( " <html > " ) ; out. p r i n t l n ( " <head> " ) ; out. p r i n t l n ( " < t i t l e > Hello World! < / t i t l e > " ) ; out. p r i n t l n ( " </head> " ) ; out. p r i n t l n ( " <body> " ) ; out. p r i n t l n ( " <h1> Hello World! < / h1> " ) ; out. p r i n t l n ( " </body> " ) ; out. p r i n t l n ( " </ html > " ) ; c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 18/42

Příklad - HelloWord Java2 Enterprise Edition <html> <head> < t i t l e > Hello World! < / t i t l e > < / head> <body> <h1> Hello World! < / h1> < / body> < / html> c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 19/42

Java2 Enterprise Edition 1 Rozdílná filosofie oproti servletu možnost editace HTML editory. 2 Kompilace na servlet Při prvním požadavku, kontrolují se změny. 3 Zjednodušení realizace stránek Servlety generující všechny stránky, Staticky obsah HTML + servlety pro akce, Dynamicky obsah v rámci statického. 4 Oddělení prezentace od aplikační logiky. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 20/42

Příklad - JSP Java2 Enterprise Edition <%@ page contenttype= " t e x t / html ; charset=iso 8859 2" %> <%@ page import= " java. u t i l. " %> <html > <head> < t i t l e > Prvni pokus </ t i t l e > </ head> <body> <h1> V i t e j t e! < / h1> <p>dnesni datum j e <%= new Date ( ). t o S t r i n g () % > </p> </ body> c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 21/42

Příklad - JSP Java2 Enterprise Edition <html> <head> < t i t l e > Prvni pokus< / t i t l e > < / head> <body> <h1> V i t e j t e < / h1> <p>dnesni datum j e Sun Feb 2 6 1 3 : 5 8 : 3 1 GMT+01:00 200 < / body> c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 22/42

Prvky JSP Java2 Enterprise Edition Direktivy <%@ page contenttype= text/html %>, Vložený úsek programu <% out.println("x : " + x); %>, Výraz x : <%= x %>, Vestavěné znaky akcí <jsp:include page="/headers/header.jsp"/>, Uživatelem definované značky <my:date />, <% @ taglib uri=http://lib.com/tags prefix="my" % c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 23/42

Java2 Enterprise Edition JSP - Expression language example 1/2 <html > <head> < t i t l e >JSP 2. 0 Expression Language Basic A r i t h m e t i c </ t i t l e > </ head> <body> <h1>jsp 2. 0 Expression Language Basic A r i t h m e t i c </ h1> <hr >... <br > < blockquote > <code> < t a b l e border= " 1 " > c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 24/42

Java2 Enterprise Edition JSP - Expression language example 2/2 <thead > <td ><b>el Expression </ b> </ td > <td ><b>result </ b> </ td > </ thead > < t r > <td >\ $ { 1 } < / td > <td >$ { 1 } < / td > </ t r > < t r > <td >\ $ { 1 + 2 } < / td > <td >$ { 1 + 2 } < / td > </ t r >... c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 25/42

Java2 Enterprise Edition Předdefinované proměnné HttpServletRequest request <%= request.getremotehost() %> HttpServletResponse response HttpSession session PrintWriter out ServlerContext application ServletConfig config PageContext pagecontext page (= this) c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 26/42

Java2 Enterprise Edition Výrazy a úseky programů <!DOCTYPE HTML PUBLIC " //W3C/ / DTD HTML 4.0 T r a n s i t <html > <head>< t i t l e >Ukazka JSP vyrazu a... < / t i t l e > </head> <body> Curent date / time : <%= new java. u t i l. Date()%><br > Remote host : <%= request. getremoteaddr()%><br > Session ID : <%= session. g e t I d ()%><br > Request URI: <%= request. getrequesturi()%><br > <% S t r i n g method = request. getmethod ( ) ; out. p r i n t l n ( " Method : " + method ) ; %> </ body> </ html > c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 27/42

Java2 Enterprise Edition Výrazy a úseky programů c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 28/42

Uživatelské značky Java2 Enterprise Edition Oddělení logiky aplikace od prezentace: Java Beans, uživatelské značky. Uživatelské akce jsou volány pomocí uživatelských značek. JSTL JavaServer Standard Tag Library. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 29/42

Co potřebujeme? Java2 Enterprise Edition JSP stránku využívající uživatelské značky - deklarace umístění souboru popisující knihovnu značek (Tag Library Descriptor - TLD). Tag Library Descriptor XML soubor popisující vlastnosti a umístění obslužného programu. Tag Handler - obslužný program, třída v Javě. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 30/42

JSP stránka Java2 Enterprise Edition Značky: Deklarace knihovny značek: <%@ taglib uri = "uri" prefix = "prefix" %> Jednoduchá značka: <prefix:name></tagprefix:name> Značka s atributy: <prefix:name attribute = "<%= val %>"/> Značka s tělem. Značka definující proměnnou. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 31/42

Java2 Enterprise Edition Tag Handler - implementace Implementace rozhraní javax.servlet.jsp.tagext.tag nebo javax.servlet.jsp.tagext.bodytag. Dědění za tříd javax.servlet.jsp.tagext.tagsupport nebo javax.servlet.jsp.tagext.bodytagsupport. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 32/42

Příklad - index.html Java2 Enterprise Edition <html> <head> <META HTTP EQUIV= " Content Type " CONTENT= " t e x t / html ; charset=windows 1250"> < t i t l e >Vstup na stranky< / t i t l e > < / head> <body> Vlozte jmeno : <br> <form action= " enter. j s p " method= " post " > <input type= " t e x t " name= " n " > <input type= " submit " name= " submit " value= "OK" > < / form> < / body> < / html> c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 33/42

Příklad - enter.jsp Java2 Enterprise Edition <%@ page contenttype= " t e x t / html ; charset=windows 1250 <%@ t a g l i b p r e f i x = "exm" u r i = "WEB INF / enter. t l d " %> <%@ t a g l i b p r e f i x = " fmt " u r i = "WEB INF / fmt. t l d " %> <html> <head>< t i t l e > Hello Name Tag< / t i t l e >< / head> <body> <fmt : requestencoding value= " windows 1250" / > <strong> V i t a j t e! < / strong> <p>< i > <exm : ent name= <%= request. getparameter ( " n " ) %> / > < / i ><p> <strong> P r i j d t e zas. < / strong> < / body> < / html> c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 34/42

Java2 Enterprise Edition Příklad - enter.tld 1/2 " h t t p : / / java. sun. com / j2ee / dtds / web j s p t a g l i b r a r y _ 1 <?xml version=" 1.0 " encoding= " ISO 8859 1"? > <!DOCTYPE t a g l i b PUBLIC " //Sun Microsystems, Inc. / / DTD JSP Tag L i b < t a g l i b > < t l i b v e r s i o n >1.0< / t l i b v e r s i o n > < j s p v e r s i o n >1.1< / j s p v e r s i o n > <shortname> i n t e r v a l < / shortname> < i n f o >Simple welcome l i b r a r y. < / i n f o > c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 35/42

Java2 Enterprise Edition Příklad - enter.tld 2/2 <tag> <name>ent< /name> < t a g class>exm. tags. Enter< / t a g c l a s s > < bodycontent >JSP< / bodycontent > < a t t r i b u t e > <name>name< / name> < r e quired>true< / r e q uired> < r t e x p r v a l u e > t r u e < / r t e x p r v a l u e > < / a t t r i b u t e > < / tag> < / t a g l i b > c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 36/42

Java2 Enterprise Edition Příklad - exm.tags.enter 1/3 package exm. tags ; import java. i o. ; import java. u t i l. Date ; import java. t e x t. DateFormat ; import javax. s e r v l e t. j s p. ; import javax. s e r v l e t. j s p. t a g e x t. ; public class E n t e r extends TagSupport { private S t r i n g name = " nobody " ; public void setname ( S t r i n g name) { i f (! name. equals ( " " ) ) { this. name = name ; } } c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 37/42

Java2 Enterprise Edition Příklad - exm.tags.enter 2/3 public i n t dostarttag ( ) throws JspTagException { return EVAL_BODY_INCLUDE; } public i n t doendtag ( ) throws JspTagException { DateFormat df = DateFormat. getdateinstance ( ) ; S t r i n g date = df. format (new Date ( ) ) ; t r y { JspWriter out = pagecontext. getout ( ) ; out. p r i n t ( " Hi, " +name+ " <br > " ) ; out. p r i n t ( "My name i s " + getclass ( ). getname ( ) + " today i s " + date + " <p/ > " ) ; } catch ( IOException ex ) { throw new JspTagException ( " Output E r r o r " ) ; } c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 38/42

Java2 Enterprise Edition Příklad - exm.tags.enter 3/3 return EVAL_PAGE; } } c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 39/42

Java2 Enterprise Edition JSTL JavaServer Standard Tag Library Core XML analýza <x:parse.../> transformace <x:transform xslt="..." xml="..."/> I18n (Internationalization) formátovaní textů <fmt:message key="..."/> formátovaní čísel a data/času <fmt:formatdate.../> Databáze volba zdroje dat <sql:setdatasource datasource="..."/> SQL dotazy a transakce <sql:query var="...>...</sql:query> c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 40/42

Odkazy Java2 Enterprise Edition http://java.sun.com/products/jsp/ pro všechny - http://interval.cz/serial.asp?serial=46 http://java.sun.com/products/servlet/ c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 41/42

Java2 Enterprise Edition Struktura webové aplikace Servlety -.class Statický obsah -.html,.jpg,.gif,... JSP -.jsp Knihovny tříd -.jar Soubor war. Vývoj: 1 Tomcat - běh webové aplikace, 2 NetBeans - ladění webové aplikace. c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních systémů 42/42