Kapitola 7. Sitemesh

Obsah

Instalace
Architektura
Analyzátory a mapovače aplikačního rámce SiteMesh
ConfigDecoratorMapper
ConfigDecoratorMapperForMVCProjects
LanguageDecoratorMapper
AgentDecoratorMapper
PrintableDecoratorMapper
PageDecoratorMapper
ParameterDecoratorMapper
Ostatní dekorátory
SessionDecoratorMapperForSpringSessionLocaleResolver
Tvorba dekorátorů
SiteMesh a jeho podpora šablonovacích jazyků
Závěr

Používání nástrojů a technologií, které dokáží zjednodušit práci, je nedílná součást vývoje software. Aplikační rámec Sitemesh [2] je ve zkratce nástroj, který minimalizuje psaní a údržbu HTML kódu prezentační vrstvy na nutné minimum a nejen to. Tento nástroj si nyní představíme.

SiteMesh je aplikační rámec poskytující prostředky pro snadnější tvorbu a správu vzhledu (layout) webových aplikací. V podstatě jde o aplikaci založenou na technologii filtrů ze specifikace servletů jazyka Java [6], která dokáže odekorovat jednotlivé HTML stránky a tím docílit jejich jednotný vzhled.

SiteMesh je aplikace s volně šířitelným zdrojovým kódem, která je vyvíjena v rámci projektu OpenSymphony [3] známém to distributoru dalších špičkových JEE komponent. Z neoficiálních zdrojů vyplývá, že jeho vývoj byl v rámci projektu OpenSymphony zastaven a přesunut na adresu java.net [4], kde si ho v současnosti můžeme stáhnout v aktuální stabilní verzi 2.3.

Pro jednoduchost zde uvedeme a dále bude počítat s tím, že SiteMesh je schopen dekorovat především HTML stránky. Jak si ukážeme později, toto vyjádření je poněkud nepřesné, nicméně pro tuto chvíli naprosto dostačující pro pochopení následujícícho textu.

Jelikož SiteMesh pracuje pouze s výstupy uživatelských požadavků na aplikaci, můžeme jej snadno zaintegrovat do již běžících projektů. Pro jeho nasazení a používání není nutná žádná úprava zdrojových kódů existující aplikace. Další bezespornou výhodou aplikačního rámce SiteMesh je, že není vázaný na žádnou technologii tak, jako je vázáno použití konkurenční technologie Tiles [5] na rámec Jakarta Struts [6].

SiteMesh je také vhodný pro integraci více různých aplikací, zvláště pak, klademe-li důraz na jejich společný vzhled.

Jeho instalaci si nyní ukážeme na naší aplikaci.

Instalace

Aplikační rámec SiteMesh je reprezentován implementací rozhraní Filter nazvané PageFilter. V podkapitole 2.2. se seznámíme s architekturou tohoto rámce podrobněji. Pro potřeby instalace je tato informace dostačující.

Instalaci třídy PageFilter provedeme ve web.xml naší aplikace. Nastavíme ho tak, aby byl aktivován v případě libovolného požadavku na naši aplikaci.

<filter>
  <filter-name>sitemesh</filter-name>
  <filter-class>
    com.opensymphony.module.sitemesh.filter.PageFilter
  </filter-class>
</filter>

<filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

Dále vytvoříme soubor /WEB-INF/decorators.xml , kde uvedeme jména dekorátorů používaných naší aplikací.

<decorators defaultdir="/WEB-INF/decorators">
  ...
  <decorator name="public" page="public.jsp">
      <pattern>/*</pattern>
  </decorator>
  ...  
</decorators>

Na ukázce vidíme definovaný dekorátor se jménem public reprezentovaný souborem public.jsp, který bude aplikován na všechny požadavky na naši aplikaci v případě, že by decorators.xml neobsahoval žádné další definice dekorátorů. Naše aplikace obsahuje více dekorátorů, se kterými se seznámíme v podkapitole 2.3.

Nyní potřebujeme vytvořit vlastní dekorátor. Dekorátor je JSP stránka obsahující speciální uživatelské značky aplikačního rámce SiteMesh. Soubor nazveme public.jsp a uložíme do /WEB-INF/decorators/.

<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" 
           prefix="decorator" %>
<%@ page session="true" contentType="text/html; charset=utf-8" 
         pageEncoding="utf-8" %>
<html>
  <head>
    <title><decorator:title /></title>
    <decorator:head />
  </head>
  <body>
     <h1>Sportovní portál<h1>
     <decorator:body /></td>
  </body>
</html>

Na názorném příkladu vidíte jednoduchý dekorátor. V naší aplikaci obsahuje dekorátor public.jsp složitější HTML konstrukce, jak se můžete sami přesvědčit, proto není vhodný pro tento ilustrační příklad.

Dekorátor obsahuje uživatelskou značku <decorator:title /> a <decorator:body />, které slouží pro nahrazení obsahem elementu <title> a <body> dekorované stránky. Více se o uživatelských značkách dozvíte v podkapitole 2.4.

Nyní máme vše nakonfigurované, a tedy můžeme zkusit přistoupit k nějaké běžné stránce v naší aplikaci. Vidíme, že stránka je dekorovaná podle našich představ.

Samotnou funkcionalitu tohoto rámce lze jednoduše charakterizovat několika slovy. Rámec je schopen zachytit příchozí požadavek na aplikaci, rozebrat původně odkazovanou stránku a získat z ní potřebná data. Tuto stránku je schopen poté odekorovat vybraným dekorátorem a jako celek vrátit uživateli.



Komentáře

Téma neobsahuje žádné komentáře.

Vložit komentář

Můžete používat značkovací jazyk Texy!


Jméno:
E-mail:
Url:
Komentář:
1 + 2 =
 
MoroSystems, s.r.o.