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



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

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í:

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

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

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.

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

Architektura aplikace

X33EJA Enterprise Java

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

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

Tvorba informačních systémů

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

KIV/PIA Semestrální práce

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s.

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

Tvorba informačních systémů

Platformy / technologie. Jaroslav Žáček

Michal Krátký, Miroslav Beneš

Tvorba informačních systémů

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Tvorba informačních systémů

Technologie Java. Jaroslav Žáček

Java a J2EE. Cleverlance. Lukáš Marek lukas.marek@cleverlance.com

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

(Enterprise) JavaBeans. Lekce 7

ŠKOLENÍ PROGRAMOVACÍHO JAZYKA JAVA JAVA - ZÁKLADY

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

Server-side technologie pro webové aplikace

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

Tvorba informačních systémů

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

Tvorba informačních systémů

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition

Systémová administrace portálu Liferay

Komponentní technologie

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

Spring framework 2.0. Roman Pichlík CZJUG

Co je nového v Java EE 6

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

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

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

Platformy / technologie. Jaroslav Žáček

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

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

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

Tvorba informačních systémů

Tvorba informačních systémů

Aleš Rybák, Jiří Kadlec. Pluginy budoucnosti

Michal Krátký, Miroslav Beneš

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

Architektury informačních systémů

Web Services na SOAP

Architektury informačních systémů

E LEARNINGOVÁ WEBOVÁ APLIKACE PRO VÝUKU BIOMEDICÍNSKÉHO INŽENÝRSTVÍ Petr Huňka

Multiplatformní osobní organizér v jazyce Java

Web Frameworks Java Server Faces. Petr Aubrecht CA

Vývojařská Plzeň AngularJS

Proč Angular JS framework?

Databáze EMS podacích lístků

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Obsah. Předmluva Začínáme: překlad, spuštění a ladění 27

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

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Úvod do Web Services

WEBOVÉ APLIKAČNÍ RÁMCE

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

Webové programování a Open Source. Open-source. Liberix o.p.s

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

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

PHP Best Practices. Please try to fit your code to 80 columns. That's decimal 80. A. Morton

UNIVERZITA PARDUBICE

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

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Sem vložte zadání Vaší práce.

Zabezpečení platformy SOA. Michal Opatřil Corinex Group

Tablexia. Vývoj multiplatformních her pomocí opensource technologie libgdx. Matyáš Latner

Statická analýza kódu - za kód bez chyb

Tvorba informačních systémů

České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačové grafiky a interakce. Bakalářská práce Hodnocení restaurací

Technologie Java. Jaroslav Žáček

Tvorba informačních systémů

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

IBA CZ průmyslový partner FI MU

Ruby on Rails: zapomeňte na Javu

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

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

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

UNIVERZITA PARDUBICE DOPRAVNÍ FAKULTA JANA PERNERA

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

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

IS pro podporu BOZP na FIT ČVUT

JavaServer Faces Zdeněk Troníček

Sem vložte zadání Vaší práce.

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

J2EE Application Servers

Transkript:

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

Úvod Rekapitulace vstupních znalostí Standardy Nástroje (Běhové prostředí, nástroje pro vývoj) Servlety JSP JSP značky EL (Expression Language) Internacionalizace a lokalizace Připojení k databázi MVC Architektura MVC Best practices Proč webové frameworky 2 2011 IBA CZ, s.r.o.

Webové aplikace v Javě Podpora pro vývoj webových aplikací v Javě Součást platformy Java EE Aktuální verze je Java EE 6 (JSR 316) Platforma Java je pro tvorbu serverové části webových aplikací poměrně vhodná, oproti např. PHP umožňuje psát snadněji udržovatelné aplikace, dobře škáluje, má skvěle zvládnutou internacionalizaci. Klíčové specifikace Java Servlet 3.0 (JSR 315) JSP 2.2 (JSR 245) EL 2.2 (JSR 245) JSF 2.0 (JSR 314) JSTL 1.2 (JSR 052) 3 2011 IBA CZ, s.r.o.

Nástroje Běhové prostředí Webové aplikace v Javě vyžadují běhové prostředí. Hlavní komponentou je tzv. Servlet kontejner. Servlet kontejner může být součástí plnohodnotného aplikačního serveru (např. Websphere AS, WebLogic AS, Glassfish, JBoss), nebo může být dodáván v podstatě samostatně pouze s nejnutnějšími dalšími komponentami (např. Tomcat, Jetty). Servlet kontejner je obvykle dodáván i s vestavěným webovým serverem, nicméně je možné jej použít i s jiným webovým serverem (např. Apache). Aplikace se do běhového prostředí instalují ve formě archivů war. Vývojové prostředí NetBeans IDE IntelliJ IDEA Eclipse Rational Application Developer 4 2011 IBA CZ, s.r.o.

Demonstrační příklad Vývojové prostředí Kde stáhnout (http://www.netbeans.org/) Jakou edici (buď Java EE nebo all) Jakou verzi (buď 6.9.1 nebo 7.0.1 obě podporují Java EE 6) Aplikační servery/web kontejnery Glassfish (pro Java EE 6 verze 3.0 nebo vyšší) Tomcat (pro Java EE 6 verze 7.0 nebo vyšší) NetBeans podporují i další, nicméně Glasfish a Tomcat jsou přímo přibaleny. Postup Nainstalujeme NetBeans Vytvoříme nový projekt typu webová aplikace Jako server vybereme Tomcat a jako verzi Java EE vybereme Java EE 6 Web. 5 2011 IBA CZ, s.r.o.

Servlety Servlet Základní komponenta pro tvorbu webových aplikací v Javě Rozšiřuje javax.servlet.http.httpservlet Označená anotací @WebServlet (dříve se příslušné informace uváděly do tzv. deployment deskriptoru) Zpracovává HTTP požadavky od klienta a generuje odpovědi 6 2011 IBA CZ, s.r.o.

Demonstrační příklad Postup Vytvoříme nový servlet Vysvětlíme si jeho jednotlivé části Upravíme kód servletu tak, aby generoval jednoduchý formulář a zpracovával výsledek Podíváme se na HttpServletRequest HttpServletResponse HttpSession RequestDispatcher Parametry Atributy Ukážeme si, jak vypadá deployment deskriptor (který je od verze Java EE 6 nepovinný) 7 2011 IBA CZ, s.r.o.

JSP Java Server Pages Servlety jsou mocný nástroj, ale pro vytváření převážně textového obsahu se nehodí. Proto existují tzv. Java Server Pages, které fungují na podobném principu jako PHP jde o textový dokument (obvykle ve formátu HTML), do kterého můžeme doplňovat tzv. Scriplety, tj. fragmenty kódu v jazyce Java. JSP stránky jsou ve skutečnosti také překládány do podoby servletů, provádí to ale zcela transparentně servletový kontejner. Demonstrační příklad Vytvoříme si ukázkovou JSP stránku a vložíme do ní scriplet. 8 2011 IBA CZ, s.r.o.

Knihovny JSP značek JSP značky Používání scripletů výrazně snižuje čitelnost stránek a velmi komplikuje údržbu. Naštěstí existuje alternativa v podobě tzv. JSP značek. Značky můžeme vytvářet sami, nebo používat již hotové knihovny značek. Existuje standardní knihovna značek JSTL (JSP Standard Tag Library). Expression Language Jazyk, který je možné používat v kombinaci s JSP značkami (viz příklad). Demonstrační příklad Nahradíme scriplety za JSP značky z JSTL a výrazy v EL. 9 2011 IBA CZ, s.r.o.

Servlety versus JSP Servlety Mohou generovat jakýkoliv obsah (textový i binární) Nevhodný pro dlouhé fragmenty textového obsahu JSP Mohou generovat pouze textový obsah Přehledné (zejména díky JSP značkám a EL) Nevhodné pro výkonný kód Závěr JSP stránky se hodí pro generování HTML stránek Servlety se hodí pro binární obsah (např. obrázky) nebo pro zpracování požadavků (např. formulářových dat apod.) 10 2011 IBA CZ, s.r.o.

Internacionalizace a lokalizace Základní třídy java.util.locale java.util.resourcebundle java.text.format java.text.messageformat Servlety Locale l = request.getlocale() Enumeration<Locale> en = request.getlocales() JSP a JSTL K lokalizaci JSP stránek se hodí knihovna JSTL: <%@ taglib prefix="f" uri="http://java.sun.com/jsp/jstl/fmt" %> <f:setbundle basename= Bundle" /> <f:message key= now_is" />: <f:formatdate value="${now}" type="both" datestyle="full" timestyle="full" timezone="${timezone}" /> 11 2011 IBA CZ, s.r.o.

Připojení k databázi Princip Pro přístup k databázi se používá JDBC Je potřeba JDBC driver (např. derbyclient.jar) Parametry připojení se uvádí ve formě tzv. jdbc url: jdbc:derby://localhost:1527/contactmanager Za konfiguraci připojení k databázi nezodpovídá aplikace, ale servlet kontejner nebo aplikační server Připojení k databázi je kontejnerem poskytováno prostřednictvím rozhraní DataSource buď pomocí Dependency Injection nebo pomocí JNDI. Postup nastavení u kontejneru Tomcat Konfiguraci připojení k databázi nastavit v context.xml Zkopírovat JDBC driver do příslušného adresáře Tomcatu (pokud spouštíme Tomcat 7.0.20 z prostředí NetBeans 7.0, jde o adresář ~/.netbeans/7.0/apache-tomcat-7.0.20_base/nblib) 12 2011 IBA CZ, s.r.o.

Připojení k databázi - příklad META-INF/context.xml: <Context antijarlocking="true" path="/contactmanager"> <Resource name="jdbc/contactmgr" auth="container" type="javax.sql.datasource" driverclassname="org.apache.derby.jdbc.clientdriver" username="app" password="app" url="jdbc:derby://localhost:1527/contactmanager"/> </Context> Přístup ze servletu prostřednictvím Dependency Injection @Resource(name="jdbc/contactmgr") private DataSource datasource; nebo @Resource(name="jdbc/contactmgr") void setdatasource(datasource datasource) { //... Zde použít datasource dle potřeby } 13 2011 IBA CZ, s.r.o.

Architektura MVC Prezentační vrstva je rozdělena na tři komponenty Model reprezentuje data, s nimiž pracujeme View je zodpovědná za zobrazení dat uživateli Controller zpracovává vstup od uživatele a je zodpovědná za řízení celého procesu Proč MVC Minimalizace závislostí Znovupoužitelnost Snadná změna nebo výměna kterékoliv komponenty s minimálním vlivem na ostatní komponenty Snadná údržba Za různé komponenty mohou mít zodpovědnost různí členové vývojového týmu Možnost využití různých technologií pro view vrstvu (JSP, XSLT, Šablony, PDF, apod.) 14 2011 IBA CZ, s.r.o.

Demonstrační příklad: Databáze kontaktů Model = ContactManagerBackend Contact reprezentuje entitu Kontakt ContactService umožňuje kontakty ukládat do databáze a načítat je z databáze View = JSP stránky listcontacts.jsp zobrazuje seznam kontaktů addcontact.jsp zobrazuje formulář pro přidání kontaktu Controller = ActionServlet Při zobrazování dat tato data načte z databáze prostřednictvím ContactService a zpřístupní je jako atribut pro příslušnou JSP stránku Při odeslání formuláře pro přidání nového kontaktu načte z formuláře zadané hodnoty a prostřednictví ContactService je uloží do databáze Řídí page flow (určuje která stránka se v kterém okamžiku zobrazí) 15 2011 IBA CZ, s.r.o.

Best practices Při vývoji webových aplikací dodržujte tyto zásady Používejte architekturu MVC a důsledně oddělujte aplikační vrstvu, prezentační vrstvu a kontrolér. Výrazně si tím usnadníte pozdější údržbu kódu. Používejte vhodný MVC framework, ušetří vám spoustu práce. Nikdy nepoužívejte scriplety, dejte přednost JSP značkám (např. JSTL) a EL. Další zdroje informací http://kore.fi.muni.cz/wiki/index.php/kategorie:webov %C3%A9_aplikace 16 2011 IBA CZ, s.r.o.

Proč webové frameworky Každá aplikace vyžaduje řešit standardní problémy Implementace architektury MVC Dekompozice aplikace s ohledem na udržovatelnost Propojení formulářů s modelem Validace vstupních dat, obsluha chyb. Internacionalizace a lokalizace Šablony rozložení (layout), skládání stránek Page flow atd. Pokud použijeme webový framework Nemusíme opakovaně psát kód pro řešení výše zmíněných problémů a můžeme se soustředit na vlastní problémovou doménu Nemusíme znovuvynalézat kolo Většinu věcí řešíme deklarativním způsobem Nedává žádný smysl psát webovou aplikaci bez použití vhodného webového frameworku 17 2011 IBA CZ, s.r.o.

Kontakty IBA CZ Petr Adámek University Relations petr.adamek@ibacz.eu IBA CZ, s.r.o. IBA CZ Development Center Petržílkova 2565/23 Křenová 72 158 00 Praha 5 602 00 Brno Tel.: (+420) 543 426 800 http://www.ibacz.eu/ 18 2011 IBA CZ, s.r.o.