Architektury informačních systémů
Obsah přednášky
Technologie Java Server Pages
z z z
doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes
[email protected]
z z z
Java Servlets Struktura webové aplikace Java Server Pages Komponenty Java Beans Uživatelské značky Knihovny značek (JSTL / Jakarta Struts)
Technologie JSP
Java Servlets z
z
Výhody servletů
Standardní metoda rozšiřování webových serverů o dynamické generování obsahu Základní rozhraní pro aplikace s tenkým klientem (webový prohlížeč)
z
Perzistence mezi voláními – rychlejší odezva na požadavky, sdílení dat z
z
z
Java Servlet Container
z Servlet
CGI – opakované zavádění
Přístup k celému Java API z
Web Browser
2
JDBC – databáze JAXP – práce s XML JNDI – adresářové služby
Servlet
Technologie JSP
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
3
Technologie JSP
4
1
Architektury informačních systémů
Servletový kontejner z
Zajišťuje běh servletu z z z z z
z
Typy servletových kontejnerů z
JVM Správa sezení Udržování kontextu Konfigurační informace Perzistence
z
z
z
z
z z
Technologie JSP
GenericServlet
1
getInitParameter(n) * 1
ServletRequest
servletInfo 1
Technologie JSP
6
Reprezentace požadavku
ServletConfig servletName
Apache Tomcat Sun ONE Server JBoss
5
Java Servlet API servletConfig
Jetty (Mortbay.com) WebSphere (IBM)
Samostatné aplikační servery z
Java Servlet API 2.4
Apache/JServ
S vestavěným WWW serverem z
Různí dodavatelé – standardizace z
Rozšíření WWW serveru
http://www.lib.com/catalog - context path
remoteHost, … parameter(name) reader
init() service(request, response) destroy()
servletContext
ServletContext attribute(n)
lastModified
getInitParameter(n)
doGet() doPost() …
javax.servlet.* javax.servlet.http.*
HttpServletRequest
HttpServlet
Technologie JSP
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
contextPath header(name) cookies[]
7
HttpSession session *
Technologie JSP
attribute(n) 1
removeAttribute(n) invalidate()
8
2
Architektury informačních systémů
Reprezentace odpovědi
Struktura webové aplikace
ServletResponse
z
contentType writer outputStream
Servlety z
z z z
addCookie(cookie) addHeader(name, value) sendError(sc, msg) Technologie JSP
z
z z
z z
… index.jsp
.jar
Technologie JSP
z
Direktivy
z
Vložený úsek programu
z
Výraz
z
Vestavěné značky akcí
z
Uživatelem definované značky
z
z
z
z
z
Při prvním požadavku, kontrolují se změny
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
images
10
Prvky JSP
Servlety na všechno Statický obsah HTML + servlety pro akce Dynamický obsah v rámci statického
Technologie JSP
web.xml
.jsp
9
Možnost editace HTML editory Kompilace na Java servlet z
lib
http://www.lib.com/catalog/WEB-INF/...
Oddělení prezentace od aplikační logiky Zjednodušení realizace stránek z
classes
.html, .jpg, .gif, …
Knihovny tříd z
Java Server Pages z
WEB-INF
JSP z
header(name)
.class
Statický obsah z
HttpServletResponse
http://www.lib.com/catalog
z
11
<%@ page contentType=“text/html” %> <% out.println(“x : “ + x); %> x : <%= x %> <jsp:include page=“/headers/header.jsp” /> <my:Date /> <% @ taglib uri=http://lib.com/tags prefix=“my” %>
Technologie JSP
12
3
Architektury informačních systémů
Příklad 1
Příklad 2
<%@ page contentType=“text/html; charset=iso-8859-2” %> <%@ page import=“java.util.*” %>
První pokus
<%@ page contentType="application/vnd.ms-excel" %> <% out.println("x\tx^2"); for(int i = 1; i <= 10; i++) { out.println(I + "\t“ + (i * i)); }
Vítejte na mé stránce Dnešní datum je <%= new Date().toString() %>
Technologie JSP
%> 13
Příklad 3
Technologie JSP
14
Předdefinované proměnné
<% Iterator i = cart.getItems().iterator(); while (i.hasNext()) { ShoppingCartItem item = (ShoppingCartItem)i.next(); BookDetails bd = (BookDetails)item.getItem(); %>
<%=item.getQuantity() %> <strong> /bookdetails?bookId=<%=bd.getBookId()%>"> <%=bd.getTitle()%> ... <% // End of while } %> Technologie JSP
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
z
HttpServletRequest request
z
HttpServletResponse response HttpSession session PrintWriter out ServlerContext application ServletConfig config PageContext pageContext page (= this)
z
z z z z z z
15
<%= request.getRemoteHost() %>
Technologie JSP
16
4
Architektury informačních systémů
Komponenty Java Beans
package cviceni2;
z
Konstruktor
z
Vlastnosti (properties)
z
z z z
public StringBean() {}
import java.util.Hashtable; import java.util.Collection; public class SeznamUzivatelu { private Hashtable tabulka = new Hashtable();
private String msg = “Nic”; public String getMsg() { return msg; } public void setMsg(String m) { msg=m; }
z
Metody
z
Události (events)
z
Příklad
public void uloz(Uzivatel u) { tabulka.put(u.getLogin(), u); }
public void clear() { msg = “Nic”; }
public Uzivatel hledej(String login) { return (Uzivatel)tabulka.get(login); } public Collection getSeznam() { return tabulka.values(); } }
Technologie JSP
17
Použití JavaBeans v JSP z z
<jsp:useBean id=“…” class=“…” scope=“…”/> z scope=“page” (implic. hodnota)
<jsp:useBean id=“sb” class=“StringBean“ />
Přístup k vlastnostem z
z
z
z
<jsp:getProperty name=“sb” property=“msg” />
z z
<jsp:setProperty name=“sb” property=“msg” value=“Ahoj” /> <jsp:setProperty name=“sb” property=“msg” param=“message” /> <jsp:setProperty name=“sb” property=“*” />
Technologie JSP
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
19
v objektu PageContext
scope=“application” z
Nastavení vlastnosti z
18
Sdílení komponent
Zavedení komponenty z
Technologie JSP
z
v objektu ServletContext sdílí se všemi servlety ve stejné aplikaci
z
scope=“session”
z
scope=“request”
z
z
v objektu HttpSession v objektu ServletRequest
Technologie JSP
20
5
Architektury informačních systémů
Uživatelské značky z
Třída obslužného programu (handler) z z
z
package tis.tags; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*;
rozhraní javax.servlet.jsp.tagext.Tag metody doStartTag(), doEndTag()
public class DatumTag extends TagSupport { public int doStartTag() { try { JspWriter out = pageContext.getOut(); out.print(new java.util.Date()); } catch( java.io.IOException e ) {…} return SKIP_BODY; } }
Deskriptor knihovny značek z
z
Příklad – DatumTag.java
soubor xxx.tld ve formátu XML
Soubor JSP používající značky z z
<%@ taglib uri=“xxx.tld” prefix=“xxx”%> <xxx:znacka param=“…”> …
Technologie JSP
21
Příklad – tis-taglib.tld
Technologie JSP
22
Příklad – tags.jsp
<%@ taglib uri="/WEB-INF/tis-taglib.tld" prefix=“tis" %> Dnes je
1.0 <jspversion>1.1 <shortname>tis Testy pro TIS datum tis.tags.DatumTag Vloží dnešní datum Technologie JSP
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
23
Technologie JSP
24
6
Architektury informačních systémů
JSTL – JavaServer Standard Tag Library z
z
z
z
Jakarta Struts Tag Library
Core z výrazy z tok řízení … z práce s URL XML z analýza <x:parse …/> z transformace <x:transform xslt=“…” xml=“…”/> I18n (Internationalization) z formátování textů z formátování čísel a data/času Database z volba zdroje dat <sql:setDataSource dataSource=“…”/> z SQL dotazy a transakce <sql:query var=“…>… Technologie JSP
z
bean
z
html
z
logic
z
template
z
tiles
z
z
z
z
z
definice a zpřístupnění JavaBeans z různých zdrojů HTML formuláře a další prvky uživ. rozhraní řízení toku aplikace práce se šablonami stránek tvorba stránek z komponent
25
Příklad
Technologie JSP
26
Literatura
<%@ page contentType="text/html; encoding=iso-8859-2" %> <%@ taglib uri="/WEB-INF/c.tld" prefix="c" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <jsp:useBean id="uzivatele" class="cviceni2.SeznamUzivatelu" scope="session"> <% uzivatele.uloz(new Uzivatel("wal314", "Johnny", "Walker")); %> Seznam uživatelů Technologie JSP
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
27
z
z z z
Marty Hall: Java servlety a stránky JSP. Neocortex, Praha, 2001, ISBN 80-86330-06-0 http://java.sun.com/products/jsp http://www.jboss.org http://jakarta.apache.org
Technologie JSP
28
7