Java Server-side. Štěpán Kuchař. stepan.kuchar@vsb.cz. VŠB-TUO FEI Katedra informatiky



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

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

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

Tvorba informačních systémů

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

Tvorba informačních systémů

Tvorba informačních systémů

Tvorba informačních systémů

X33EJA Enterprise Java

Tvorba informačních systémů

(Enterprise) JavaBeans. Lekce 7

Michal Krátký, Miroslav Beneš

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

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

Technologie JavaBeans

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

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

Architektury informačních systémů

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

KIV/PIA 2013 Jan Tichava

Tvorba informačních systémů

Architektury informačních systémů

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

Technologie Java Server Pages

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

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

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

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

Platformy / technologie. Jaroslav Žáček

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

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

Softwarové komponenty a Internet

Architektura aplikace

Tvorba informačních systémů

Server-side technologie pro webové aplikace

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

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

UJO Framework. revoluční architektura beans. verze

Java technologie pro webové aplikace

Tvorba informačních systémů

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

Tvorba informačních systémů

Web Services na SOAP

Úvod do Web Services

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

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

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

Tvorba informačních systémů

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

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

WPA - Konfigurace Java EE aplikace (Maven, struktura war arch. kontejnerem Tomcat 8

Michal Krátký, Miroslav Beneš

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

1 Webový server, instalace PHP a MySQL 13

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

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Technologie Java. Jaroslav Žáček

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

Spring framework 2.0. Roman Pichlík CZJUG

Reranking založený na metadatech

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ÉMATICKÝ OKRUH Softwarové inženýrství

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

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

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Systémová administrace portálu Liferay

Úvod do tvorby internetových aplikací

Návrhové vzory pro J2EE

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

IS pro podporu BOZP na FIT ČVUT

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

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

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

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

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

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

1. Webový server, instalace PHP a MySQL 13

KIV/PIA Semestrální práce

Michal Krátký, Miroslav Beneš

Tvorba informačních systémů

Oddělení webového a aplikačního serveru. Běží zde několik aplikací.

JavaServer Faces Zdeněk Troníček

Základy programování v jazyce JAVA

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

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

Skriptovací jazyky. Obsah

Webové rozhraní TELEFONNÍ STYK POD KONTROLOU NÁSTROJ PRO ŘÍZENÍ CHODU CALL CENTRA A ZPRACOVÁNÍ TELEFONNÍCH HOVORŮ. Funkcionalita

Obsah. Předmluva Kapitola 1 Úvod 1. Web v kostce 1 Kdo je webmaster? 4 Doporučená literatura 4. Kapitola 2 Přehled jazyka HTML 5

RESTful web service v Javě

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

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

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

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

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

Instalace a konfigurace web serveru. WA1 Martin Klíma

Obsah přednášky. Vývoj aplikací řízený testy. Extrémní programování (XP) Požadavky na nástroje pro XP. Testování aplikací

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

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

Transkript:

Java Server-side Štěpán Kuchař stepan.kuchar@vsb.cz VŠB-TUO FEI Katedra informatiky

Trocha historie 500 před n. l. Pythagoras založil bratrstvo vyznávající reinkarnaci, vegetariánství, mystický význam čísel a odmítání fazolí (beans) jako potravy (obsahují duše zemřelých) 850 n. l. arabský pasák koz Kaldi zjistil, že se jeho stádo chová divně a objevil kávu a účinky kofeinu. konec 17. století pěstování kávových zrn na ostrově Java, spojení názvu s kávou obecně 1995 jazyk Oak firmy Sun má problémy s názvem, zvolen název Java a spojení produktů s kávou

Java Editions J2SE Standard Edition standardní Java API, jak ho znáte J2ME Micro Edition okleštěná SE pro mobilní zařízení J2EE Enterprise Edition dodatečné knihovny a nástroje pro enterprise aplikace součástí jsou i knihovny pro tvorbu serverside webových aplikací

Java Server-side Java Servlet specifická Java třída obsahuje metody, kterými zpracovává příchozí HTTP požadavky a generuje na ně odpovědi JSP webová stránka rozšířená o speciální značky vykonávající určitou logiku JSF nádstavba nad JSP mocnější UI komponenty, event-driven přístup

Java Servlet normální třída dědící z třídy javax.servlet.http.httpservlet (J2EE) obsahuje zpracování příchozích požadavků a generuje na ně HTTP odpovědi void doget(httprequest request, HttpResponse response) void dopost(httprequest request, HttpResponse response) void dohead(httprequest request, HttpResponse response) void doxyz(httprequest request, HttpResponse response)

Java Servlet příklad import java.io.*; import javax.servlet.http.*; public class Priklad extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response){ response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println(" <head>"); out.println(" <title>hello</title>"); out.println(" </head>"); out.println("<body>"); out.println(" <h1>hello World Wide Web</h1>"); out.println("</body>"); out.println("</html>"); } }

Servlet Container komponenta webového serveru zajišťuje chod Servletů typy kontejnerů rozšíření webového serveru (Apache/JServ,...) s vestavěným web serverem (Jetty,...) aplikační server (Tomcat, JBoss,...) HTTP požadavek Web server klient Servlet container HTTP odpověď Servlet Servlet

Nasazení Servletů nutnost dodržet specifickou adresářovou strukturu při nasazení webové aplikace webovou aplikaci je pak možné zabalit do war souboru (web archive) war archív = přejmenovaný zip s konkrétní strukturou war se pak nasadí rovnou do servlet kontejneru (v Apache Tomcat do adresáře webapps)

Struktura webové aplikace povinný adresář WEB-INF adresář classes přeložené třídy aplikace adresář lib potřebné jar knihovny soubor web.xml konfigurace aplikace veškerý obsah WEB-INF je nepřístupný klientovi (nejde se na něj dostat přes URL) nepovinný adresář META-INF soubor MANIFEST.MF kdy/kdo/čím vytvořil

Konfigurace webové aplikace web.xml XML soubor obsahující veškerou konfiguraci <?xml version="1.0" encoding="utf-8"?> <web-app> <display-name>příklad</display-name> <description>příklad servletu</description> <servlet> <servlet-name>pojmenovani_servletu</servlet-name> <servlet-class>cz.vsb.cs.priklad</servlet-class> </servlet> <servlet-mapping> <servlet-name>pojmenovani_servletu</servlet-name> <url-pattern>/hello.do</url-pattern> </servlet-mapping> </web-app>

HTTP Sessions rozhraní javax.servlet.http.httpsession součást objektu HttpRequest /* nastavení atributu do session (metoda getsession automaticky session vytvoří, pokud ještě neexistuje) */ request.getsession().setattribute( nazevattr, hodnota ); // získání hodnoty atributu ze session Object value = request.getsession().getattribute( nazevattr ); // zrušení session request.getsession().invalidate(); // nastavení délky neaktivity před zrušením v sekundách request.getsession().setmaxinactiveinterval(300); // tento atribut je možné nastavit i ve web.xml

Vlastnosti Servletů přístup k Java API možnost vrstvit aplikace rozdělením logiky do více tříd tvorba kódu stránky přímo ve třídě prezentační část je součástí logiky spousta zbytečného kódu jeden Servlet odpovídá jednomu URL složitá konfigurace

Java Server Pages webová stránka se speciálními značkami možnost psát do stránky přímo Java kód podobnost s PHP opačný přístup k webu než Servlety Servlet je logika, která generuje stránku JSP je stránka, která obsahuje logiku JSP jsou však nakonec kompilovány na Servlety

Prvky JSP direktivy informace pro překladač do Servletů <%@ page contenttype= text/html; charset=utf-8 %> <%@ page import= java.util.* %> <%@ include file="include.jsp" %> scriptlety - kód ve stránce <% libovolný Java kód %> <%= výpis na výstup %> <%! definice metody %> JSP značky

Scriptlety v JSP <%@ page contenttype= text/html; charset=utf-8 %> <html> <head> <title>první pokus</title> </head> <body> <table> <% for( int i = 0; i < 10; i++){ %> <tr> <td><% out.print(i); %></td> <td><%= i*i %></td> </tr> <% } %> </table> </body> </html>

JSP značky možnost definice speciálních XML značek provádějících nějakou logiku logika značek je popsána Java třídami dědícími z tříd v balíku javax.servlet.jsp.tagext oddělení prezentace od logiky možnost tvorby vlastních značek mnohem přehlednější než scriptlety několik základních značek nedostačující volně použitelné knihovny značek podobnost s komponentním programováním

JSTL knihovna Java Server Pages Standard Tag Library knihovna základních užitečných značek programové struktury - <c:if>, <c:foreach>,... internacionalizace - <fmt:message>,... práce s databází - <sql:query>, <sql:update>,... práce s XML - <x:parse>, <x:transform>,... nahrazují nejčastější operace ze scriptletů k popisu výrazů používá speciální jazyk výrazů Expression Language

Expression Language (EL) zapisuje se pomocí ${...} všude, kde je třeba pracovat s výrazy, proměnnými, apod. popisuje všechny potřebné operace aritmetické, logické, relační, ternární operátory práce s poli, kolekcemi, zobrazeními, objekty implicitní objekty request, session,... získávání hodnot z formuláře <c:out value= ${param.jmeno} />

Příklad s JSTL značkami <%@ page contenttype="text/html; charset=utf-8" %> <%@ taglib uri="jstl/core" prefix="c" %> <html> <body> <table> <c:foreach begin="1" end="10" var="i"> <tr> <td><c:out value="${i}" /></td> <td><c:out value="${i*i}" /></td> </tr> </c:foreach> </table> </body> </html>

Java Beans komponentní technologie Javy JavaBean je jednoduchá komponenta, která poskytuje data a zpracovává události struktura JavaBean implementace Serializable rozhraní konstruktor bez parametrů getter/setter metody podle Java konvence (getname/setname, kde name je atribut beanu) listeneři na události

Java Beans v EL EL umí pracovat s daty obsaženými v beanech jednoduchý přístup přes tečkovou konvenci převádí se na volání getter/setter metod příslušného atributu <c:out value= ${mybean.name} /> <% out.write(mybean.getname()); %> <c:set target= ${mybean} property= name value= newname /> <% mybean.setname( newname ); %>

Nasazení JSP JSP stránky umístěny kdekoli mimo adresáře WEB-INF a META-INF musí být přístupné klientovi přes URL popisné soubory značek *.tld v adresáři WEB-INF rozšíření konfigurace web.xml <taglib> <taglib-uri>uri z direktivy taglib</taglib-uri> <taglib-location>cesta k TLD</taglib-location> </taglib>

Vlastnosti JSP scriptlety logika je součástí prezentace malá přehlednost a těžká spravovatelnost nepoužitelné pro velké projekty značky oddělení logiky od prezentace ne vše pokryjí knihovní značky pracnost složité vrstvení aplikace

Kombinace JSP a Servletů Servlet pracuje s daty, JSP zobrazuje data striktní oddělení prezentace od logiky v JSP jen knihovny pro zobrazování obsahu JSTL core + knihovny s grafickými prvky Servlet přidá zpracovaná data do atributů požadavku a přesměruje jej na JSP klient HTTP požadavek Servlet rozšířený HTTP požadavek HTTP odpověď JSP

Kombinace JSP a Servletů public class SimpleServlet extends HttpServlet { public void doget(request, response) { request.setattribute("mydata","nejaka moje data"); RequestDispatcher dispatcher = request.getrequestdispatcher("/view.jsp"); dispatcher.forward(request, response); } }... <p> data ze servletu: <c:out value= ${mydata} /> </p>... JSP Servlet

Nasazení JSP a Servletů *.class soubory Servletů jsou umístěny do WEB-INF/classes JSP se často umisťují i do adresáře WEB-INF je to umožněno tím, že na JSP se neodkazuje přímo uživatel, ale Servlet vhodné kvůli schování JSP před uživatelem, protože JSP vyžaduje pro správnou funkčnost data, která naplní Servlet web.xml prvky pro Servlety i JSP v jednom

MVC Frameworky návrhový vzor Model-View-Controller zjednodušují práci s JSP/JSF a Servlety jediný Servlet slouží jako řadič provádí přesměrování všech requestů slouží jako jediný vstupní bod upravuje formát dat v requestu, provádí validaci dat, apod. Jakarta Struts, Spring framework,...