Hlavní navigace

Apache Struts 1.1: plugin Tiles a systém logování

Lukáš Zapletal 27. 5. 2003

V závěrečném dílu našeho seriálu se věnujeme pluginu Tiles a systému logování. Nakonec si něco přečtete o budoucnosti systému Struts a jeho vztahu k projektu JSF (Java Server Faces).

Když se webová aplikace rozroste natolik, že ji používá mnoho uživatelů, většinou se přejde k portálovému systému. Uživatelé se do aplikace nahlásí a mají možnost si modifikovat vzhled. Účetní chce například na první stránce posledních dvacet operací na pokladně a manažer by na úvodní stránce měl raději na očích odkazy na nejnovější články z oboru. Díky Tiles je tohle všechno hračkou.

Plugin Tiles dokonale využil tří základních značek systému Struts pro vytváření šablon a značně je rozšířil. Základní myšlenka spočívá v tom, že si vytvoříte tzv. kousky (tiles), které pak naskládáte na stránku. Tyto kousky mohou využít jednoduché dědičnosti, takže nad jejich vzhledem získáváte flexibilní kontrolu.

Typickým příkladem může být menu, které se obvykle vyskytuje nahoře či vlevo na stránce. Do základní šablony (layout) vložíte tedy kousek nazvaný mainmenu. Jednotlivé sekce portálu pak mohou implementovat mainmenu a dodat některé položky navíc. Tiles lze také přidělovat stránkám dynamicky. Můžete tak jednoduše vytvořit průvodce (wizardy), okna s oušky (tabs) či umožnit uživateli kompletně přizpůsobit vzhled.

Samozřejmostí je podpora lokalizace. Jednotlivé kousky mohou být na serveru ve více jazykových verzích a aplikace (resp. uživatel) může rozhodnout, kterou předložit ke zobrazení. Tiles nabízí mnoho předdefinovaných kousků pro různé účely. Za všechny bych rád jmenoval například Rss Channel, který umožňuje s minimálním úsilím zobrazit na portálu RSS kanál (například serveru root.cz). Zájemcům doporučuji prozkoumat domovskou stránku projektu, kde je k nalezení také on-line demo.

Pokud jste již někdy programovali webovou aplikaci, jistě jste narazili na věčný problém – logování (ve smyslu manipulace a zapisování ladících a chybových informací – nebudu překládat). Ať tedy chcete ladit, nebo sledovat nasazenou aplikaci, musíte většinou vymýšlet nějaký způsob, jak toho dosáhnout. Problém logování byl již v Javě mnohokrát řešen. Existuje několik projektů, které se logováním zabývají a asi nejznámější knihovnou je LOG4J(OpenSource projekt, který byl dokonce úspěšně portován i na jiné jazyky, jako jsou C++, C# a Python). Máte také možnost použít logovací API, která se nacházejí v Javě 1.4 a vyšší.

Ačkoliv se logovací knihovny zabývají poměrně jednoduchou problematikou, mohou se zdát poněkud složité. Proto vývojáři Struts doporučují využít jednoduchou knihovnu z projektu Commons, která nese název commons-logging (dále jen CL). CL je podprojektem Jakarty (ta je součástí Apache) zastřešujícím několik (desítek) skutečně malých řešení (knihovniček), která jsou obvykle nesmírně užitečná. CL se nalézá také v binární distribuci projektu Struts.

O co jde? Místo toho, abyste používali přímo nějaké konkrétní API, používáte CL jako most mezi aplikací a logovacím systémem (CL zvládne například LOG4J nebo JDK1.4 Logging). Použití je skutečně přímočaré a jasné a díky snadné konfiguraci (pomocí systémové proměnné nebo speciálního souboru commons-logging.properties, který musí být v adresáři WEB-INF/classes) si můžete vybrat, kterou implementaci hodláte používat. Právě v tom je síla, protože se můžete bez jakékoliv změny nebo rekompilace kódu rozhodnout, zda chcete logování vypnout, ukládat do souboru, či něco jiného. Součástí CL je také třída, která vypisuje všechny zprávy na konzoli, a třída, která všechny záznamy zahazuje (obdoba /dev/null), takže pro začátek ani nemusíte žádnou jinou implementaci instalovat. Můžete si také vytvořit vlastní implementaci a zapisovat např. do databáze či posílat SMS.

Tabulka č. 435
Log log = LogFactory.getLog("cz.root.test");

log.debug("Počet objednávek" + orders.length());

if (log.isInfoEnabled()){
  StringBuffer buf = new StringBuffer();
  buf.append("Přihlášený uživatel: ");
  buf.append("Jméno: " + user.getGivename());
  buf.append("Příjmení: " + user.getSurname());
  buf.append("Email: " + user.getEmail());
  log.info(buf.toString());
}

Příklad použití commons-logging API

Na příkladu je vidět, jak se CL používá. Vytvoříte si instanci loggeru a pak do něj zapisujete (co jiného). Každou instanci si pojmenujete, abyste mohli informace třídit, a můžete využít následujících stupňů vážnosti: debug, error, fatal, info, trace, warn.Všimněte si, že pokud hodláte do logu zapsat větší množství informací, jejichž sestavení trvá déle, je vhodnější nejprve zjistit, zda je logování zapnuto (metody isXxxEnabled), aby se zbytečně nevolala metoda pro vložení záznamu, která by stejně nic neudělala. Logovat můžete i výjimky, což bude asi vhodné. Na závěr paragrafu bych rád podotknul, že tuto knihovnu můžete využívat kdekoliv, což vřele doporučuji.

A co budoucnost? Na programu je sjednocení s JSF (Java Server Faces). Vývojáři (nejen) u Sunu si totiž všimli, že konkurenční technologie (např. ASP.NET) umožňuje přehledně generovat (renderovat) HTML pomocí speciálních XML značek. Tyto značky lze navíc komfortně „naklikat“ v různých IDE prostředích tak, jako by stránky byly formuláře v jazyce Visual Basic. Což o to, ono to s technologií JSP jde, jak jsme se přesvědčili v tomto seriálu. Jenže pro Struts žádný GUI editor není (myslím, že firma Borland v tomto podniká jisté kroky) a je zde potřeba tyto značky sjednotit. Proto se připravuje projekt, který by se měl stát součástí standardní instalace JSP kontejnerů a to je právě JSF.

Díky JSF budou mít vývojáři jednotné JSP značky pro tvorbu HTML komponent (textbox, listbox, tlačítko, imagemap…) tak, jak je tomu u Struts již nyní. Specifikace bude samozřejmě promyšlena do nejmenších detailů. JSF bude též nabízet přepínání mezi cílovou technologií (WAP, HTML…). Vývojáři Struts slibují, že jakmile vyjde finální specifikace JSF, Struts budou tyto značky podporovat a doporučovat pro nové projekty. Vizuálním GUI nástrojům pro rychlou tvorbu webových aplikací pak nic nebude stát v cestě.

http://jakarta­.apache.org/strut­s/

Našli jste v článku chybu?

30. 5. 2003 14:22

Fjey (neregistrovaný)

Dekuji autorovi za vyborny serial. Uz jsem o Struts cetl nekolik (zahranicnich) clanku, ktere zpravidla zduraznovaly, ze Struts jsou implementaci MVC, usnadnuji praci s formulari atd., ale tento serial mi pripada zatim nejlepsi a poskytl mi jasnou predstavu, o cem Struts jsou a co by obnaselo zacit je pouzivat.
Pral bych si, aby serial pokracoval a prinesl dalsi podrobnosti (treba jako protivaha obsahleho serialu o Zope).


DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte