LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Apache Struts (1) - začínáme

Úvodní díl seriálu o vývoji webových aplikací s tímto frameworkem.

4.2.2005 10:00 | Miroslav Holubec | Články autora | přečteno 16689×

Úvod

Tímto článkem bych chtěl začít sérii tutoriálů týkající se frameworku Apache Struts. Tento framework (česky rámec) si klade za cíl usnadnit práci všem lidem podílejících se na tvorbě webových aplikací a webu obecně. Je vyvíjen v Apache Software Foundation pod hlavičkou projektů Jakarta (jedná se o projekty, jenž mají něco společného s Javou, např. webový kontejner Tomcat). V článcích budu popisovat nejnovější verzi Struts 1.2.4, která přináší několik podstatných výhod oproti předchozím vydáním.

Model-View-Controller

Aplikace psaná v Struts musí splňovat především MVC (Model-View-Controller) paradigma, což je soubor obecných pravidel týkajících se vývoje aplikace. MVC je minimálně o deset let starší, nežli web v podobě jak ho známe (na bázi hypertextových dokumentů), jeho vznik se datuje na přelom roku 1978-79. MVC určuje striktní rozdělení aplikace na tři oddělené části

  • Model - vlastní aplikační logika aplikace
  • View - stará se o zobrazování dat
  • Controller - určuje řízení toku

Pokud se při vývoji budeme tímto rozdělením řídít, získáme především nepředstavitelnou výhodu v znovupoužitelnosti aplikace. Není pak problém převést stávající webovou aplikaci na rozhraní swing (javovské GUI) jenom tím, že nahradíme stávající vrstvu View. Stejně tak jsme nezávislí na výběru výstupu od běžného HTML, až po univerzální XML, ze kterého lze XSLT transformací vyrobit opravdu cokoliv. Struts implementuje vrstvu Controller, v části Model dokáže spolupracovat se stávajícími technologiemi pro přístup k datům jako je třeba JDBC a EJB, stejně dobře jako k produktům Hibernate, iBATIS, nebo Object Relational Bridge. V části View nám framework nechává volnou ruku, standartně podporuje JavaServer Pages včetně JSTL a JSF, ale problémy nemá ani s Velocity Templates, XSLT, a jinými prezentačními systémy.

Porovnání s PHP

Tato sekce je určena především stávajícím programátorům webu v PHP, jenž má nesporně mnoho výhod, ale pro rozsáhlejší aplikace se příliš nehodí. Před časem jsem vyvíjel e-shop v PHP, přičemž jsem musel téměř na každé stránce obsáhnout spoustu věcí typu, zda je uživatel již přihlášen, validaci formulářů, i18n a dalších. Rok poté si zadavatel usmyslel, že by chtěl změnit design a přejít z HTML 4.01 s rámy na XHTML. Určitě si dokážete představit moje nadšení z téměř stejného množství práce, jako kdybych začínal od píky. XHTML sice již částečně řeší oddělení návrhu designu od textu, ale to je jenom jehla v kupě sena.

Typická webová aplikace v php používá Page-centric design. Řízení toku, samotnou logiku aplikace a přístup do databáze si musí každá stránka vyřešit sama.

Page-centric design

Apache Struts používá Servlet-centric design. Zde všechny předchozí služby zpracovává servlet, jenž představuje centrální bod celé aplikace.

Servlet-centric design

Tedy rozdíl je snad více než zřejmý. Zatímco servlet nám řídí tok - určuje mapování jednotlivých akcí, hlídá vstupy z formulářů (provádí validaci vstupů), implementuje i18n (internacionalizaci) přičemž nepovolí jakoukoliv nežádoucí operaci (uživatel nemá šanci dostat se někam kam nemá přístup), u PHP si všechny tyto fce musíme implementovat na jednotlivých stránkách. Další výhodou servletu je, že jakmile je zkompilován a načten do paměti, pak už jen reaguje na požadavky klientů (pro více požadavků najednou si vytvoří nové vlákno). Z toho pramení značná rychlost oproti interpretovaným jazykům. Poslední věcí jest bezpečnější prostředí pro uložení zdrojových kódů, klient má totiž do adresářů s JSP stránkami zakázaný přístup (zdrojové soubory v javě, jenž implementují samotnou logiku aplikace, se na server samozřejmě neukládají).

Porovnejme typickou stránku v PHP, kde se běžně kříží zdrojový kód aplikace s HTML tagy, s JSP stránkou pod STRUTS:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html:html>
  <head>
    <title><bean:message key="hello.jsp.title"/></title>
    <html:base/>
  </head>
  <body bgcolor="white"><p>

    <h2><bean:message key="hello.jsp.page.heading"/></h2><p>

    <html:img srcKey="image.logo" altKey="image.logo.alt"/>
    
    
    <html:errors/><p>

    <logic:present name="examples.hello" scope="request">
       <h2>
         <bean:message key="hello.jsp.text.hello"/>
         <bean:write name="examples.hello" property="person" />!<p>
       </h2>
    </logic:present>

    <html:form action="/HelloWorld.do" focus="username" >

      <bean:message key="hello.jsp.prompt.person"/>
      <html:text property="person" size="16" maxlength="16"/><br>

      <html:submit property="submit" value="Submit"/>
      <html:reset/>

    </html:form><br>

    <html:img page="/struts-power.gif" alt="Powered by Struts"/>

  </body>
</html:html>

Vidíme, že stránka je pěkně přehledná bez zbytečného kódu, jenž dělá často webovým designerům problémy, vyskytují se pouze nové značky Struts, značně podobné běžnému HTML. Tyto speciální tagy, jsou již také běžně podporovány designerskými nástroji (např. Macromedia Dreamweaver). Navíc je automaticky vyřešena podpora všech známých jazyků podporovaných Locales, všechen text a jména souborů obrazků jsou uloženy ve zvláštních souborech jako unicode, tj. není problém váš web přeložit třeba do japonštiny :)

Samozřejmě neříkám, že PHP nebo jiné technologie jsou k ničemu, hodí se však na rychlé a jednoduché aplikace, zatímco těžiště Struts je ve velikých znovupoužitelných aplikacích určených nejenom pro web.

Co bude potřeba

K tomu abyste mohli vyvíjet pod Struts je potřeba mít nainstalované Java Development Kit, nejlépe ve verzi 1.4.2 nebo novější. Dále je nutné mít nainstalován JSP kontejner, mohu doporučit Tomcat nebo ještě lépe aplikační server JBoss, jenž mi přišel snazší na správu a nastavení. Pro snadnou kompilaci aplikací je vhodné mít nainstalován Apache Ant, a pro přístup k databázi ovladač JDBC (najdete u své oblíbené databáze). A samozřejmně samotný framework Struts.

Příště

V dalším díle již položíme kostru naší první aplikaci, upravíme si web.xml a struts-config.xml, probereme ActionController a ošetření vyjímek.

Verze pro tisk

pridej.cz

 

DISKUZE

obrázky 7.2.2005 11:09 Miroslav Holubec




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

13.9.2017 8:00 /František Kučera

Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).


Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

31.8.2017 12:11 / Jaromir Obr
Re: ukůládání dat ze souboru

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze