http protokol 2. http, Úvod do java2ee java servlets · 2. http, Úvod do java2ee http protokol...

Post on 22-Aug-2020

8 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Tvorba informacních systému

Michal Krátký, Miroslav Beneš

1Katedra informatikyVŠB–Technická univerzita Ostrava

Tvorba informacních systému, 2006/2007

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 1/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Hypertext Transfer Protokol (HTTP)

Protokol pro prenos dat mezi webovým serverem aprohlížecem. Klient - server.Protokol aplikacní vrstvy, TCP, port 80.Požadavek (request) - odpoved’ (response).Aktuální verze 1.1.Metody: GET, PUT, POST, ...

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 2/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

HTTP požadavek

metoda URL_dokumentu verze_HTTPhlavickyprazdna_radka

telo_pozadavku

Príklad. Ukázka jednoduchého požadavku

GET /clanky/obsah.html HTTP/1.1User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)Host: www.server.cz

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 3/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

HTTP odpoved’

protokol stavovy_kod stavové_hlasenihlavickyprazdna_radkaobsah_odpovedi

Príklad: Ukázka odpovedi

HTTP/1.1 200 OKServer: Microsoft-IIS/5.0Date: Wed, 06 Dec 2000 13:37:40 GMTX-Powered-By: PHP/4.0.3pl1Content-type: text/html

<!DOCTYPE HTML PUBLIC ’-//W3C//DTD HTML 4.0 Transitional//EN’><html>...

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 4/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Omezení HTTP

Server nemá stále spojení s klienty a nemuže je protojednoznacne identifikovat - komplikace pro webovéaplikace.

Rešení:

Prenášení údaju v URL a skrytých polí formuláre -nebezpecné, komplikované,cookies,session promenné.

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 5/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Session, cookie

CookieKrátká informace, kterou si server uloží v prohlížeci.Pri následujících prístupech k témuž serveru je cookiezaslána zpet.Cookie je vázána na server a prípadne i na adresár.Nebezpecné – všechny stavové informace jsou v každémpožadavku/odpovedi.

SessionKaždému novému uživateli se priradí unikátní identifikátor(tzv. session-id).Predává se s každým požadavkem pomocí cookie neboparametru v URL, resp. skrytých polí ve formulári.Pomerne bezpecné – s každým požadavkem se prenášíjen malá cást dat a session-id.

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 6/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Odkazy

Libor Dostálek: Velký pruvodce protokoly TCP/IP asystémem DNS. Computer Press, 2002.Jirí Kosek: Protokol HTTP.http://badame.vse.cz/izi228/prednasky/http/frames.html, 2000.

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 7/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Architektura J2EE

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 8/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Java Servlets

Metoda rozširování webového serveru o dynamickégenerování obsahu.Rozhraní pro aplikace s tenkým klientem (webovýprohlížec).

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 9/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Výhody servletu

Perzistence mezi voláními – rychlejší odezva napožadavky, sdílení dat.Pro servlet je vytvoreno vlákno z bežícího JVM.

CGI – opakované zavádeníPrístup k celému Java API

JDBC – databázeJAXP – práce s XMLJNDI – adresárové služby

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 10/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Servletový kontejner

Zajišt’uje beh servletuJVM,Správa sezení (session),Udržovaní kontextu,Konfiguracní informace,Perzistence.

Ruzní dodavatele – standardizaceJava Servlet API 2.5 (aktuální verze).

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 11/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Typy servletových kontejneru

Rozšírení WWW serveruApache/JServ

S vestaveným WWW serveremJetty (Mortbay.com)WebSphere (IBM)

Samostatné aplikacní serveryApache TomcatSun ONE ServerJBoss

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 12/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Java Servlet API

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 13/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Reprezentace požadavku

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 14/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Reprezentace odpovedi

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 15/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Príklad - HelloWorld 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 Hel loWorld extends Ht tpSe rv l e t{

public void doGet ( Ht tpServ le tRequest request ,HttpServletResponse response )

throws IOException , Serv le tExcept ion{

response . setContentType ( " t e x t / html " ) ;P r i n t W r i t e r out = response . ge tWr i t e r ( ) ;

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 16/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Príklad - HelloWorld 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 >He l lo 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>Hel lo World ! < / h1>" ) ;out . p r i n t l n ( " </body>" ) ;out . p r i n t l n ( " </ html > " ) ;

}}

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 17/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Príklad - HelloWorld

<html><head>< t i t l e >Hel lo World ! < / t i t l e >< / head><body><h1>Hel lo World ! < / h1>< / body>< / html>

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 18/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

JavaServer Pages

1 Rozdílná filosofie oproti servletu – možnost editace HTMLeditory.

2 Kompilace na servletPri prvním požadavku, kontrolují se zmeny.

3 Zjednodušení realizace stránek, možnosti:Servlety generující všechny stránky,Statický obsah HTML + servlety pro akce,Dynamicky obsah v rámci statického.

4 Oddelení prezentace od aplikacní logiky pomocíuživatelských znacek.

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 19/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Príklad - JSP

<%@ page contentType=" t e x t / html ;charset=windows−1250" %>

<%@ page import=" java . u t i l .∗ " %><html ><head>

< t i t l e >Prvn i 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-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 20/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Príklad - JSP

<html><head>

< t i t l e >Prvn i 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 2006< / p>< / body>

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 21/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Prvky JSP

Direktivy<%@ page contentType=’text/html’ %>,

Vložený úsek programu<% out.println("x : " + x); %>,

Výrazx : <%= x %>,

Vestavené znaky akcí<jsp:include page="/headers/header.jsp"/>,

Uživatelem definované znacky<my:Date />,

<% @ taglib uri=http://lib.com/tags prefix="my" %>,

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 22/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

JSP - Expression language example 1/2

<html ><head>

< t i t l e >JSP 2 . 0 Expression Language −Basic Ar i t hmet i c </ t i t l e >

</head><body>

<h1>JSP 2 . 0 Expression Language −Basic Ar i thmet i c </h1>

<hr > . . .<br ><blockquote >

<code>< tab le border= " 1 ">

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 23/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

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-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 24/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Preddefinované promenné

HttpServletRequest request<%= request.getRemoteHost() %>

HttpServletResponse response

HttpSession session

PrintWriter outServlerContext applicationServletConfig config

PageContext pageContextpage (= this)

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 25/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Výrazy a úseky programu

<!DOCTYPE HTML PUBLIC " − / /W3C/ / DTD HTML 4.0 T r a n s i t i o n a l / / EN"><html >

<head>< t i t l e >Ukazka JSP vyrazu a . . . < / t i t l e > </head><body>

Curent date / t ime : <%= new java . u t i l . Date()%><br >Remote host : <%= request . getRemoteAddr()%><br >Session ID : <%= session . ge t Id ()%><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-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 26/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Výrazy a úseky programu

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 27/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Uživatelské znacky

Oddelení logiky aplikace od prezentace:Java Beans,uživatelské znacky.

Uživatelské akce jsou volány pomocí uživatelských znacek.JSTL – JavaServer Standard Tag Library.

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 28/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Co potrebujeme?

JSP stránku využívající uživatelské znacky - deklaraceumístení souboru popisující knihovnu znacek (Tag LibraryDescriptor - TLD).Tag Library Descriptor – XML soubor popisující vlastnosti aumístení obslužného programu.Tag Handler - obslužný program, trída v Jave.

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 29/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

JSP stránka

Deklarace knihovny znacek:<%@ taglib uri = "uri" prefix = "prefix" %>

Znacky:

Jednoduchá znacka:<prefix:name></tagPrefix:name>

Znacka s atributy:<prefix:name attribute = "<%= val %>"/>

Znacka s telem.Znacka definující promennou.

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 30/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Tag Handler - implementace

Implementace rozhraníjavax.servlet.jsp.tagext.Tag nebojavax.servlet.jsp.tagext.BodyTag.Dedení za trídjavax.servlet.jsp.tagext.TagSupport nebojavax.servlet.jsp.tagext.BodyTagSupport.

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 31/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Príklad - index.html

<html><head>

<META HTTP−EQUIV=" Content−Type "CONTENT=" t e x t / html ; charset=windows−1250">

< t i t l e >Vstup na s t ranky< / t i t l e >< / head>

<body>Vloz te jmeno : <br><form action=" enter . j sp " method=" post ">

< input type=" t e x t " name=" n ">< input type=" submit " name=" submit " value="OK">

< / form>< / body>< / html>

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 32/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Príklad - enter.jsp

<%@ 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 / en ter . 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 >Hel lo Name Tag< / t i t l e >< / head><body>

<fmt : requestEncoding value=" windows−1250" / ><st rong> V i t a j t e ! < / s t rong><p>< i ><exm: ent name=’<%= request . getParameter ( " n " ) %> ’ / >< / i ><p><st rong> P r i j d t e zas . < / s t rong>

< / body>< / html>

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 33/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Príklad - enter.tld 1/2

<?xml vers ion=" 1.0 " encoding=" ISO−8859−1" ?>< !DOCTYPE t a g l i b

PUBLIC " − / /Sun Microsystems , Inc . / / DTD JSP Tag L i b r a r y 1 . 1 / /EN"" h t t p : / / java . sun . com/ j2ee / dtds / web−j s p t a g l i b r a r y _ 1 _ 1 . dtd ">

< 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 spve rs i on >1.1< / j spve rs i on ><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-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 34/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Príklad - enter.tld 2/2

<tag><name>ent< /name>< tagc lass>exm. tags . Enter< / tagc lass><bodycontent>JSP< / bodycontent>< a t t r i b u t e >

<name>name< /name><requ i red> t rue < / requ i red>< r t exp rva lue > t rue < / r t exp rva lue >

< / a t t r i b u t e >< / tag>< / t a g l i b >

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 35/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Prí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 sp . ∗ ;import javax . s e r v l e t . j sp . tagex t . ∗ ;

public class Enter 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 ( " " ) ) {th is . name = name ;

}}

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 36/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Prí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 d f = DateFormat . getDateInstance ( ) ;S t r i n g date = df . format (new Date ( ) ) ;t ry {

JspWr i te r 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 ( IOExcept ion ex ) {throw new JspTagException ( " Output Er ro r " ) ;

}

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 37/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Príklad - exm.tags.Enter 3/3

return EVAL_PAGE;}

}

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 38/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

JSTL – JavaServer Standard Tag Library

CoreXML

analýza <x:parse .../>transformace<x:transform xslt="..." xml="..."/>

I18n (Internationalization)formátovaní textu <fmt:message key="..."/>formátovaní císel a data/casu <fmt:formatDate .../>

Databázevolba zdroje dat<sql:setDataSource dataSource="..."/>SQL dotazy a transakce<sql:query var="...>...</sql:query>

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 39/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Odkazy

http://java.sun.com/products/jsp/

JavaServer Pages pro všechny -http://interval.cz/serial.asp?serial=46

http://java.sun.com/products/servlet/

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 40/41

2. HTTP, Úvod do Java2EEHTTP ProtokolJava ServletsJavaServer Pages

Struktura webové aplikace

Servlety - .classStatický obsah - .html, .jpg, .gif, . . .JSP - .jspKnihovny tríd - .jar

Soubor war.

Vývoj:

1 Tomcat - beh webové aplikace,2 NetBeans - ladení webové aplikace.

c©2006-2007 Michal Krátký, Miroslav Beneš Tvorba informacních systému 41/41

top related