Kapitola 1. Přednáška 6 - komplexní podpora webových aplikací. Webové rámce. Obsah Webové aplikační rámce...............................................................................................1 Osnova .............................................................................................................2 Webový rámec ...................................................................................................2 Třívrstvá architektura...........................................................................................2 Koncepce MVC ..................................................................................................2 Přednosti MVC...................................................................................................2 Javové webové aplikace ...............................................................................................3 Javové webové aplikace .......................................................................................3 Javové webové aplikace (2)...................................................................................3 Javové webové aplikace (3)...................................................................................3 Javové webové kontejnery ....................................................................................3 Funkcionalita webových rámců......................................................................................4 Oddělení prezentační vrstvy ..................................................................................4 Oddělení prezentační vrstvy (2) .............................................................................4 Oddělení prezentační vrstvy (3) .............................................................................5 Funkcionalita webových rámců..............................................................................5 Správa zabezpečení - příklad .................................................................................6 Validace uživatelských vstupů...............................................................................6 Udržování informací o relaci .................................................................................7 Řízení toku aplikace ............................................................................................7 Příklad řízení toku - Struts ....................................................................................7 Zotavení z chyb ..................................................................................................7 Záznamy o událostech (logging) ............................................................................7 Internacionalizace a lokalizace...............................................................................8 Internacionalizace a lokalizace - příklad ..................................................................8 Zajištění perzistence objektů .................................................................................9 Škálovatelnost a distribuovanost ............................................................................9 Škálovatelnost a distribuovanost ............................................................................9 Podpora vývojovými prostředími ...........................................................................9 Přehled rámců ..................................................................................................10 Shrnutí............................................................................................................10 Webové aplikační rámce i Přednáška 6 - komplexní podpora webovych aplikací. Webové rámce. Osnova • Webový rámec a jeho architektura • Funkcionalita webovych rámců • Výstavba aplikací nad webovými rámci Webový rámec • Více či méně ucelené prostředí pro tvorbu (případně i nasazení) webovych aplikací středního rozsahu Není to knihovna! • Využívá "The Hollywood Principle": Do Not Call Us, We Will Call You! • Rámec "funguje sám", my jej modifikujeme a doplňujeme • Budeme diskutovat javové rámce Třívrstvá architektura Vrstvy "od uživatele dolů": 1. prezentační vrstva - ve webovych aplikacích HTML, CSS, JavaScript,... na klientovi (prohlížeči): JSP, serviety, XSLT, JSTL, JSF, šablony... 2. aplikační logika -javové objekty, JavaBeans, EJB... 3. databázová vrstva - DBMS dostupný přes JDBC Koncepce MVC • Model - objekty /data a jejich obslužné metody realizující vlastní aplikační logiku • View - pohled na data - prezentace, vstup od uživatele Controller - řídí tok zpracování - kdy se aktivuje jaká metoda modelu, jaký pohled se uplatní na výsledek,... Přednosti MVC 2 Přednáška 6 - komplexní podpora webových aplikací. Webové rámce. • Nezávislost modelu na zbylých částech • Jeho znovupoužitelnost • Na modelu a pohledech lze pracovat do jisté míry nezávisle - jsou požadovány jiné schopnosti (programátor vs. designér) Controller mnohdy programovat ani nemusíme - díky (webovým) rámcům! Javové webové aplikace Javové webové aplikace • Základem je Java Serviet API specifikuje Serviety, stránky JSP, knihovny značek, filtry, popisovače... • Jeho implementace jsou volně dostupné a dobře prozkoumané Javové webové aplikace (2) Java Serviety: • javové třídy rozšiřující typicky abstraktního předka javax.servlet.http.HttpServlet stránky JSP: • podobný princip jako ASP, PHP • při požadavku se přeloží do servietu Javové webové aplikace (3) • knihovny značek (Tag Libraries): pro JSP lze zadefinovat vlastní XML značky obsluhované javovým kódem a ty na stránkách JSP používat • filtry: než je HTTP požadavek předán servietu (JSP), může být filtrován, filtr je podobný servietu, lze filtrovat i vygenerovanou odpověď Javové webové kontejnery Kontejnery (Java Web Containers): 3 Přednáška 6 - komplexní podpora webových aplikací. Webové rámce. servery (programy) hostující javové webové aplikace Příklady (volně dostupné): • Apache (Jakarta) Tomcat • Jetty • LWS,Bajie,... Rozdíl oproti aplikačním serverům: • většinou nepodporují plnou specif. J2EE • nehostují EJB Funkcionalita webových rámců Oddělení prezentační vrstvy Oddělení prezentační vrstvy - většinou prostřednictvím jazyka šablon (template language) jako jsou: Velocity, WebMacro, FreeMarker, RIFE ... • nebo JSTL (std. knihovna značek) • moderně přes JSF (Java Server Faces) • napodobují klasické "desktopove" GUI v prostředí webové aplikace • případně transformace XSLT Oddělení prezentační vrstvy (2) Oddělení prezentační vrstvy Šablona Velocity - stránka jednoduchého weblogu #showWebsiteTitle() #showRSSAutodiscoveryLink() 4 Přednáška 6 - komplexní podpora webových aplikací. Webové rámce.
#showWebsiteTitle()

#showWebsiteDescription()

#showWeblogCategoryChooser()
#showWeblogEntries("_day" 15)
#showReferers( 40 25 )
Oddělení prezentační vrstvy (3) Stránka využívající JSF <%@ taglib uri="http://Java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://jakarta.apache.org/struts/tags-faces" prefix="s" %> Funkcionalita webových rámců Správa zabezpečení - např. deklarativní nařízení přihlašování • použití nastavení Java Security Manageru • pak lze na serveru hostovat i nedůvěryhodný "zákaznický" kód • lze také použít filtry (jakási vnitřní "autentizační proxy") • Vše směřuje k deklarativní specifikaci zabezpečení - snadněji se udržuje 5 Přednáška 6 - komplexní podpora webových aplikací. Webové rámce. Správa zabezpečení - příklad Příklad konfigurace Java Security Manageru (Apache Tomcat 5): The permission granted to your JDBC driver grant CodeBase "j ar:file:${Catalina.home}/webapps/examples/WEB-INF/lib/driver.jar! permission java.net.SocketPermission "dbhost.mycompany.com:5432", connect"; };. . . // These permissions apply to the container's core code, plus any additional libra grant CodeBase "file:${Catalina.home}/server/-" { permission j ava.security.AllPermission; }; Validace uživatelských vstupů Řada rámců podporuje deklarativní specifikaci uživatelských vstupů • datový typ, formát, přípustné rozmezí hodnot... • a j ej ich dekódování • znakové sady, různé národní zvyklosti Pokročilé rámce: • řízení toku při vyplňování formulářů (průvodci jako u desktopových GUI) • automatické generování fyz. podoby form. Příklad specifikace zpracování uživ. vstupů - rámec Struts
6 Přednáška 6 - komplexní podpora webových aplikací. Webové rámce.
... Udržování informací o relaci Mezi jednotlivými interakcemi s uživatelem je uchován stav dané relace - • Překlenuje bezestavovost HTTP • V javových aplikacích pomocí objektů javax.servlethttp.HttpSession Řízení toku aplikace • Rozsáhlejší aplikace mívají složitou navigační strukturu • v MVC modelu řídí navigaci Controller • navigace bývá v rámcích popisována deklarativně Příklad řízení toku - Struts Oction path="/listFlights" type="foo.bar.FlightSearchAction" name="FlightSearchForm" scope="request" input="/faces/FlightSearch.j sp"> Zotavení z chyb • Opět deklarativně bývá popsáno řízení toku po vzniku chybového stavu (výjimky) • Umožňuje bezpečně pokrýt i neočekávané chyby a zaznamenat je, poslat informaci správci... Záznamy o událostech (logging) Cíl: 7 Přednáška 6 - komplexní podpora webových aplikací. Webové rámce. S minimálním "obtěžováním" programátora zajistit kontrolu nad chodem aplikace ve fázi tvorby, ladění i ostrého provozu Java nabízí několik "logging API": • od Java 1.4: balík java.util.logging • kdekoli: balíky log4j • zastřešující: Jakarta Commons Logging Pomocí Aspect-oriented Programming lze logování řešit ještě méně invazivně Internacionalizace a lokalizace Rozlišujeme: Internationalization (il8n) Localization (11 On) Co znamenají národní zvyklosti: • texty v nabídkách, ovládacích prvcích,... • formáty výpisu data, času, měny, vícemístných a desetinných čísel lexikografické řazení Internacionalizace a lokalizace - příklad <%@ taglib uri="http://Java.sun.com/jstl/fmt" prefix="fmt" %> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> I18N Example Přednáška 6 - komplexní podpora webových aplikací. Webové rámce.

">
    (English) (Spanish)
Zajištění perzistence objektů • Objektový model v paměti vs. data na discích (v databázi) • Rámce do jisté míry vzájemné převody automatizují • Většinou používají osvědčený produkt třetí strany - např. Hibernate, PO JO Š kál ovate I n os t a distribuovanost • Výkon aplikace nelze zvyšovat pouze hardwarovými prostředky nebo optimalizací • Zejména dnes je levnějším řešením použít svazek (cluster) "běžně výkonných" počítačů namísto jednoho supervýkonného • Více zatížená aplikace musí být schopna výkon škálovat Š kál ovate I n os t a distribuovanost Řešením j sou tzv. aplikační servery • poskytují middleware: komplexní prostředí pro běh rozsáhlých (podnikových) aplikací • míří nad schopnosti běžných webových rámců - ty ale většinou podporují/využívají Podpora vývojovými prostředími 9 Přednáška 6 - komplexní podpora webových aplikací. Webové rámce. • Eclipse (+Struts Studio) volně dostupný • Borland JBuilder (+InternetBeans Express) Přehled rámců • Web Application Framework Research proj ect - http ://www.waferproj ect. org. Shrnutí • Webové rámce usnadňují tvorbu středně rozsáhlých aplikací s webovým rozhraním • Realizují oddělení jednotlivých vrstev, jsou postavené na koncepci MVC • Programátorovi nabízejí infrastrukturu, která "funguje sama" a on ji doplňuje • Kromě toho poskytují řadu dalších drobných služeb 10