JSP. Petr Aubrecht (CA) unzip; strip; touch; finger; mount; fsck; more; yes; unmount; sleep

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

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

Tvorba informačních systémů

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

Tvorba informačních systémů

Tvorba informačních systémů

KIV/PIA 2013 Jan Tichava

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ů

Technologie Java Server Pages

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

Tvorba informačních systémů

Tvorba informačních systémů

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

Michal Krátký, Miroslav Beneš

X33EJA Enterprise Java

Web Frameworks Java Server Faces. Petr Aubrecht CA

Tvorba informačních systémů

(Enterprise) JavaBeans. Lekce 7

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

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

JAVA. Webové aplikace Servlety, JSP

Spring framework 2.0. Roman Pichlík CZJUG

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

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

KIV/PIA Semestrální práce

JavaServer Faces Zdeněk Troníček

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

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

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

UJO Framework. revoluční architektura beans. verze

Aplikační rámce Jakarta Struts Framework

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

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

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

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

Aplikační rámce. Jakarta Struts Framework. Obsah přednášky. Aplikační rámce a knihovny. Co je to aplikační rámec? Enterprise Java Beans

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

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

Java Platform, Enterprise Edition (Java EE)

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

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

Java a Caché IV: Manipulace s objekty

Základy programování v jazyce JAVA

Java technologie pro webové aplikace

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

Architektura aplikace

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

NSWI096 - INTERNET JavaScript

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

Architektury informačních systémů

Architektury informačních systémů

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

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

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

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

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

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

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

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

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

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)

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í

Databáze EMS podacích lístků

Platformy / technologie. Jaroslav Žáček

Michal Augustýn Microsoft Most Valuable Professional

Formuláře. Internetové publikování. Formuláře - příklad

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

Část 1 Moderní JavaScript

Technologie JavaBeans

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

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Ant aneb Ferda Mravenec, práce všeho druhu

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

Stručný úvod pro programátory. Michal Kuchta

Elektronická podpora výuky předmětu Komprese dat

Technologie Java. Jaroslav Žáček

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Návrhové vzory pro J2EE. Miroslav Beneš

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

Návrhové vzory pro J2EE

Jaku b Su ch ý 1

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

Proč Angular JS framework?

Enterprise Java Beans 3.0

Pokročilé Webové služby a Caché security. Š. Havlíček

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

ISZR Referenční agent.net

Čipové karty Lekařská informatika

Tvorba informačních systémů

Spring portfolio. Tomáš Krátký

Michal Krátký, Miroslav Beneš

Objektově orientované programování

Internet cvičení. ZS 2009/10, Cvičení 3., Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Rezervační systém Tvorba WWW stránek

Transkript:

JSP Petr Aubrecht (CA) unzip; strip; touch; finger; mount; fsck; more; yes; unmount; sleep

Servlets and JSP -kontext: web interface

Process Flow -layers Web Tier EJB Tier

Servlety nebo PHP? - potřeba psát HTML stránky pohodlně - napojení na beany - stránku napíšeme deklarativně -nakonec se ještě naučíme, jak dělat aplikace ještě pohodlněji bez hluboké znalosti HTML, CSS a Javascriptu (JSF)

MVC -Proč? -Model data; entity beany (z databáze) -View nakonec HTML stránka - Controller session beany, zpracování formuláře -Kam spadá formulář? Znovuzobrazení chybně zadaných dat, řešení navigace, zobrazení výsledků, business logika? -Jeden vývojář je odborník na business logiku a druhý na HTML/CSS/Javascript? Jak mezi ně rozdělit práci? -Řešením je rozdělení: webový odborník píše HTML nebo JSP tagy a programátor implementuje tagy.

Struts - První široce přijímaný framework pro Javu - Mnoho aplikací v Javě (do)dnes používá Struts 1 - implementuje MVC -každé stránce odpovídá action, hlavní servlet zpracovává události a vyvolává akce -spravuje action bean, jejich automatické naplnění, transformace a validace -deklarativně popisuje tok stránek. Pro stránku existují forward labely (např. success, fail, které jsou v konfiguraci mapovány na konkrétní stránky)

Struts example public class SampleAction extends Action { public ActionForward execute(actionmapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { } String param = request.getparameter( param1 ); if(param.equals( )) { } return mapping.findforward( fail );...processing... request.setattribute( result, result); return mapping.findforward( success );

JSP intro -JSP se inspirovalo v některých ohledech frameworkem Struts - větší tlak na MVC, ačkoliv stále ještě nedotažené -orientuje se na view, jde především o HTML výstup -JSP se překládá na servlet, ale není potřeba ho uvádět ve web.xml kontejner udělá všechnu otrockou práci za nás

JSP jak to vypadá Java uvnitř HTML <html><head>...</head><body> <h1>násobilka 7</h1> <table> <% for(int i=1;i<=10;i++) { %> <tr><td><%= i %></td><td><%=i*7%></td></tr> <% } %> </table></body></html>

JSP lifecycle - překlad při prvním přístupu - refresh dělá kontejner sám - kontejner potřebuje překladač! - výsledný servlet si lze prohlédnout -NB umí krokovat i JSP Create Source User Request Server File Changed? Compile Execute Servlet

JSP scriptlets -<% code %> -vložení Java kódu, do výsledného servletu se prostě okopíruje do zpracující metody - <%= expression %> -ve výsledku se stane argumentem out.println(expr) - <%! init-block %> -inicializační blok, stane se součástí třídy, používá se pro definici data memberů a metod -<%@directive %> -direktivy ovlivňující zpracování zprávy - <%-- comment --%> - není součástí výstupu

JSP init block <%! private BookDBAO bookdbao; public void jspinit() {...getservletconfig()... bookdbao = new BookDBAO(); } public void jspdestroy() { bookdbao.cleanup(); } %>

JSP directives - <%@page import= java.util.*,java.math.* %> -zpracování aktuálního souboru, viz následující slide - <%@ page errorpage="errorpage.jsp" %> -je to pohodlnější a flexibilnější než ve web.xml -<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -použití knihoven (musí být k dispozici odpovídající knihovna, která registruje dané url - <%@include file="response.jsp" %> -vkládání

JSP page directive - <%@ page contenttype="text/html; charset=utf-8" %> - MIME typ návratové stránky a znaková sada! - <%@ page import="java.util.* %> - Which classes are imported - <%@ page isthreadsafe="true" %> <%!--Default --%> - <%@ page isthreadsafe="false" %> - How multithreading is handled

Servlety a JSP vs MVC Pure Servlet Public class OrderServlet { public void doget ( ){ if( isordervalid (req )){ saveorder (req ); out. println ( <html> ); out. println ( <body> ); private void isordervalid (.){ } private void } } saveorder (.){ Request processing presentation Servlet Public class OrderServlet { public void doget ( ){ if(bean. isordervalid (..)){ bean. saveorder (.); } } forward( conf. jsp ); JSP <html> <body> < ora : loop name = order >.. </ ora :loop> <body> </html> JavaBeans isordervalid ( ) Business logic saveorder ( )

JSP po překladu <h1>hello World!</h1> <p>it's <%= new Date() %></p> PageContext pagecontext = _jspxfactory.getpagecontext(this, request, response, null, true, 8192, true); HttpSession session = pagecontext.getsession(); ServletContext application = pagecontext.getservletcontext(); ServletConfig config = pagecontext.getservletconfig(); JspWriter out = pagecontext.getout(); Object page = this; response.setcontenttype("text/html;charset=utf-8"); out.write(" <h1>hello World!</h1>\n"); out.write(" <p>it's "); out.print( new Date() ); out.write("</p>\n");

Objekty k dispozici - request (HttpServletRequest) - response (HttpServletRepsonse) - session (HttpSession) - application(servletcontext) - out (of type JspWriter) - config (ServletConfig) - pagecontext

Použití JavaBean - POJO (nikoliv JEE beany) -<jsp:usebean id="cart" class="cart.shoppingcart" scope="session"/> -daná beana bude k dispozici v daném scope kontejner ji vytvoří s pravuje sám -<jsp:getproperty name="cart" property="price" /> -out.println(cart.getprice());

Porovnání použití beany <% ShoppingCart cart = (ShoppingCart)session.getAttribute("cart"); if (cart == null) { cart = new ShoppingCart(); session.setattribute("cart", cart); } %> versus <jsp:usebean id="cart" class="cart.shoppingcart" scope="session"/>

Zpracování formuláře <jsp:setproperty name="beanname" property="propname"/> <% %> String bookid = request.getparameter("bookid"); bookdb.setbookid(bookid); <jsp:setproperty name="beanname" property="*"/> -inspirace Struts, všechny property dané beany jsou načteny (existují-li dané parametry)

Složitější příklad <jsp:usebean id="locales" scope="application" class="mylocales"/> <form name="localeform" action="index.jsp" method="post"> <select name=locale> <% Iterator i = locales.getlocalenames().iterator(); String selectedlocale = request.getparameter("locale"); while (i.hasnext()) { String locale = (String)i.next(); if (selectedlocale!= null && selectedlocale.equals(locale) ) { %> <option selected><%=locale%></option> <% } else { %> <option><%=locale%></option> <% } } %> </select> <input type="submit" name="submit" value="get Date"> </form>

Vkládání dalších stránek -include directive -<%@ include file="banner.jsp" %> -zpracování během překladu -jsp:include element -<jsp:include page="date.jsp"/> -zpracování za běhu -pomalejší, ale dynamičtější

Forward <jsp:forward page="..." > <jsp:param name="param1" value="value1"/> </jsp:forward> -proč se parametry zadávají takto? -url rewriting

JSP 2.0 - expression language -rozpoznán ve statickém textu a atributech tagu <%=item.getname()%> ${item.name} <% Map m = (Map)pageContext.getAttribute("state"); State s = ((State)m.get("CZ")); if( s!= null ) { %> <%= s.getcapitol() %> <% } %> ${state["cz"].capitol}

JSTL - JSTL zjednodušují tyto oblasti: -Core (c): proměnné, podmínky, iterace, podpora práce s URL - I18n (ftm): locale, formátování (datum, čísla,...) - XML (x): přístup k XML datům, transformace - Funkce (fn): kolekce, manipulace se stringy,... - DB (sql): přístup k databázím -rychlé prototypování, neukážeme, aby vás to nelákalo použít

JSTL Core -Jiné cykly a iterace - <c:foreach var="customer" items="${customers}"> <c:if test="${customer.address.country == 'USA'}"> ${customer}<br> </c:if> </c:foreach> - <c:foreach var="item" items="${enumeration}" begin="2" end="10" step="2"> <c:out value="${item}"/><br> </c:foreach> - <c:foreach var="token" items="bleu,blanc,rouge"> <c:out value="${token}"/><br> </c:foreach>

JSTL Core - Rozdělení textu na tokeny <c:fortokens var="token" items="one,two,three" delims=","> <c:out value="${token}"/> </c:fortokens> - Složitější výstupy <c:out value="${customer.phonecell}" escapexml="false"> <font color="red">no cell phone specified</font> </c:out> <c:out value escapexml default="def. value"/> - Je-li u c:out parametr java.io.reader, přečtou se z něj data a vloží se do výstupu

JSTL Core - Větvení (switch) <c:foreach var="customer" items="${customers}"> <c:choose> <c:when test="${customer.address.country == 'USA'}"> <font color="blue"> </c:when> <c:when test="${customer.address.country == 'Canada'}"> <font color="red"> </c:when> <c:otherwise> <font color="green"> </c:otherwise> </c:choose> ${customer}</font><br> </c:foreach>

JSTL XML -Práce s XML <c:set var="xmltext"> <a> <b><c>foo</c></b> <d>bar</d> </a> </c:set> <x:parse var="a" doc="${xmltext}" /> <x:out select="$a//c[@id= 123 ]"/> <x:out select="$a/a/d"/> - x:out funguje podobně jako c:out (navíc XPath konverze)

JSTL I18n a formátování -Z requestu lze zjistit preferované locale uživatele (ukázka nastavení ve Firefoxu) - Nastavení locale -<fmt:setlocale>... přepíše nastavení klienta -<fmt:requestencoding>... prepíše encoding klienta - Lokalizace textů -<fmt:bundle>... resource bundle pro stránku -<fmt:message key="..."> s <fmt:param> podtagem <fmt:setbundle>

JSTL I18n a formátování - Formátování čísel a data -<fmt:formatnumber>, <fmt:parsenumber> -<fmt:formatdate>, <fmt:parsedate> -<fmt:settimezone>, <fmt:timezone > - Příklad použití <fmt:setlocale value="de"/> <fmt:bundle basename="cz.myapp.resources"> <fmt:message>greetingmorning</fmt:message> </fmt:bundle>

Reference na knihovny tagů -web.xml <jsp-config> <taglib> <taglib-uri>/tlt</taglib-uri> <taglib-location>/web-inf/lib.tld</taglib-location> </taglib> </jsp-config> <%@ taglib prefix="tlt" uri="/tlt"%> - Přímá reference <%@ taglib prefix="tlt" uri="/web-nf/iterator.tld"%> - Absolutní reference <%@ taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core"%>

Summary - JSP slouží jako prezentační vrstva pro webovou aplikaci. -Seznámili jste se se základy JSP, JSTL. -Nyní byste měli umět view, alespoň pokud ovládáte HTML+CSS. -Model obstarávají entity beany (aka JPA). -Controller si probereme příště (session beans). -Pokud nechcete zabředávat do problémů JSP a chcete dělat cool aplikace, přespříští přednáška bude o JSF.

Materiály k předmětu - java.sun.com - hromady materiálů, tutoriálů - www.javapassion.com - výborný zdroj informací, slidy* -http://java.sun.com/products/jsp/ -Java servlety a stránky JSP - Enterprise JavaBeans 3.0, O'Reilly, 2006 * některé obrázky a slidy byly převzaty odsud