vývoj webových aplikací s JSP a XML Část I: Fast Track JSP

pokud jste měli možnost vytvářet webové aplikace pomocí technologií, jako je Common Gateway Interface (CGI) a servlety, jste zvyklí na myšlenku napsat program pro generování celé stránky (statické a dynamické části) pomocí stejného programu. Pokud hledáte řešení, ve kterém můžete obě části oddělit, už nehledejte. Stránky javaserveru (JSP) jsou zde.

JSP stránky umožňují oddělit front-end prezentaci od obchodní logiky (střední a back-end úrovně). Je to skvělý rychlý vývoj aplikací (RAD) přístup k webovým aplikacím. Tato série článků poskytuje praktický návod vysvětlující, jak vyvíjet moderní webové aplikace pro dnešní a zítřejší trh. Tato série začíná tímto článkem, který vysvětluje koncepty a výhody technologie JSP, a poté vám ukáže, jak využít tuto vzrušující technologii, a jak vytvořit opakovaně použitelné komponenty pro manipulaci s formuláři.

Dynamický Web

Web se vyvinul ze síťového distribuovaného informačního systému hypermedia, který nabízí statické informace, na tržiště pro prodej a nákup zboží a služeb. Stále sofistikovanější aplikace umožňující tento trh vyžadují technologii pro prezentaci dynamických informací.

řešení první generace zahrnovala CGI, což je mechanismus pro spouštění externích programů prostřednictvím webového serveru. Problém s CGI skripty je škálovatelnost; nový proces je vytvořen pro každý požadavek.

řešení druhé generace zahrnovala dodavatele webových serverů poskytující plug-iny a API pro své servery. Problém je v tom, že jejich řešení byla specifická pro jejich serverové produkty. Společnost Microsoft například poskytla Aktivní stránky serveru (ASP), které usnadnily vytváření dynamického obsahu. Jejich řešení však fungovalo pouze s Microsoft IIS nebo osobním webovým serverem. Pokud byste tedy chtěli používat ASP, museli byste se zavázat k produktům společnosti Microsoft a neměli byste si užívat svobody výběru svého oblíbeného webového serveru a operačního systému!

další technologií druhé generace, která je v podnikových výpočtech velmi populární, jsou servlety. Servlety usnadňují psaní aplikací na straně serveru pomocí technologie Java. Problém s CGI nebo servlety je však v tom, že musíte sledovat životní cyklus zápisu, kompilace a nasazení.

JSP stránky jsou řešení třetí generace, které lze snadno kombinovat s některými řešeními druhé generace, vytvářet dynamický obsah a usnadňovat a rychleji vytvářet webové aplikace, které pracují s řadou dalších technologií: webové servery, Webové prohlížeče, aplikační servery a další vývojové nástroje.

JavaServer Pages (JSP)

technologie JSP je otevřená, volně dostupná SPECIFIKACE vyvinutá společností Sun Microsystems jako alternativa k technologii ASP (Active Server Pages) společnosti Microsoft a klíčová součást SPECIFIKACE Java 2 Enterprise Edition (J2EE). Mnoho komerčně dostupných aplikačních serverů (například BEA WebLogic, IBM WebSphere, Live JRun, Orion atd.)

JSP versus ASP

JSP a ASP poskytují podobné funkce. Oba používají značky k umožnění vloženého kódu na stránce HTML, sledování relace a připojení k databázi. Některé z triviálních rozdílů jsou:

  • stránky ASP jsou psány v VBScript a stránky JSP jsou psány v programovacím jazyce Java. Proto JSP stránky jsou nezávislé na platformě a asp stránky nejsou.
  • stránky JSP používají technologii JavaBeans jako architekturu komponent a stránky ASP používají komponenty ActiveX.

Kromě těchto triviálních rozdílů existuje řada důležitých rozdílů, které vám mohou pomoci při výběru technologie pro vaši organizaci:

  • rychlost a škálovatelnost: ačkoli jsou stránky ASP ukládány do mezipaměti, jsou vždy interpretovány. Naproti tomu JSP stránky jsou zkompilovány do Java servletů a načteny do paměti při prvním volání a provedeny pro všechna následující volání. To dává JSP stránky aspeed a škálovatelnost výhodu oproti ASP stránek.
  • Extensible Tags : stránky JSP mají pokročilou funkci známou jako extensible tags. Tento mechanismus umožňuje vývojářům vytvářet vlastní značky. Jinými slovy, rozšiřitelné značky umožňují rozšířit syntaxi značek stránek JSP. Nemůžete to udělat se stránkami ASP.
  • svoboda volby: pokud neinstalujete Chili!Soft ASP, ASP stránky pracují pouze s Microsoft IIS a osobní webový Server. Používání stránek ASP vyžaduje závazek k produktům společnosti Microsoft, zatímco stránky JSP vás nezavazují k žádnému konkrétnímu webovému serveru nebo operačnímu systému. Stránky JSP se stávají široce podporovaným standardem.

podrobnější srovnání stránek JSP a stránek ASP naleznete v části porovnání JSP a ASP.

softwarové prostředí

Chcete-li spustit stránky JSP, potřebujete webový server s webovým kontejnerem, který odpovídá specifikacím JSP a servlet. Webový kontejner se spouští na webovém serveru a řídí provádění všech stránek JSP a servletů běžících na tomto webovém serveru. Tomcat 3.2.1 je kompletní referenční implementace pro SPECIFIKACE Java Servlet 2.2 a JSP 1.1. Stáhněte a nainstalujte binární verze Tomcat.

nastavení Tomcat:

  • nastavte proměnnou prostředí JAVA_HOME tak, aby ukazovala na kořenový adresář instalace Java 2 Standard Edition (J2SE).
  • nastavte proměnnou prostředí TOMCAT_HOME tak, aby ukazovala na kořenový adresář instalace Tomcat.
  • Chcete-li spustit Tomcat, použijte TOMCAT_HOME/bin/startup.bat pro windows nebo startup.sh pro UNIX.
    ve výchozím nastavení začne poslouchat na portu 8080.
  • uložte soubory .jsp do TOMCAT_HOME/webapps/examples/jsp a třídy JavaBeans do TOMCAT_HOME/webapps/examples/web-inf/classes.

Poznámka: Pokud pracujete v systému Windows, může se při pokusu o spuštění aplikace Tomcat zobrazit chyba prostředí mimo prostor. Existují dva způsoby, jak to opravit: buď změňte počáteční nastavení paměti okna DOS na hodnotu větší než 3200, nebo upravte konfiguraci.soubor sys a přidejte následující řádek: SHELL=c:\PATHTO\command.com /E:4096 /P.

Jak stránky JSP fungují

stránka JSP je v podstatě webová stránka s tradičním HTML a kousky kódu Java. Přípona souboru stránky JSP je“.jsp „spíše než“.html“ nebo „.htm“, a to říká serveru, že tato stránka vyžaduje speciální zpracování, které bude provedeno rozšířením serveru nebo plug-inem. Zde je jednoduchý příklad:

vzorek 1: Datum.jsp

 <HTML><HEAD><TITLE>JSP Example</TITLE></HEAD><BODY BGCOLOR="ffffcc"><CENTER><H2>Date and Time</H2><% java.util.Date today = new java.util.Date();out.println("Today's date is: "+today);%></CENTER> </BODY> </HTML> 

tento příklad obsahuje tradiční HTML a některé Java kód. Značka <% označuje začátek skriptu a značka %> označuje konec skriptu. Když je date.jsp požadováno z webového prohlížeče, uvidíte něco podobného obrázku 1.

postava 1: Žádost o datum.jsp

v zákulisí

když je tato stránka (date.jsp) volána, bude kompilována (motorem JSP) do java servletu. V tomto okamžiku je servlet zpracováván servletovým motorem stejně jako jakýkoli jiný servlet. Motor servlet pak načte třídu servlet (pomocí zavaděče třídy) a provede ji tak, aby vytvořila dynamický HTML, který má být odeslán do prohlížeče, jak je znázorněno na obrázku 2. Pro tento příklad servlet vytvoří objekt Date a zapíše jej jako řetězec do objektu out, což je výstupní proud do prohlížeče.

Obrázek 2: Tok požadavků/odpovědí při volání JSP

při příštím požadavku na stránku spustí motor JSP již načtený servlet, pokud se stránka JSP nezměnila, v takovém případě se automaticky překompiluje do servletu a provede se.

skriptovací prvky

v příkladu date.jsp je použit úplný název třídy Date včetně názvu balíčku, což může být únavné. Pokud chcete vytvořit instanci Date jednoduše pomocí: Date today = new Date();, aniž byste museli zadávat celou cestu třídy, použijte direktivu page následovně:

ukázka 2 :date2.jsp

 <%@page import="java.util.*" %><HTML> <HEAD> <TITLE>JSP Example</TITLE> </HEAD> <BODY BGCOLOR="ffffcc"><CENTER> <H2>Date and Time</H2> <% java.util.Date today = new java.util.Date();out.println("Today's date is: "+today);%></CENTER></BODY> </HTML>

dalším způsobem, jak udělat totéž pomocí značky <%=, je psaní:

ukázka 3: date3.jsp

 <%@page import="java.util.*" %> <HTML> <HEAD> <TITLE>JSP Example</TITLE> </HEAD> <BODY BGCOLOR="#ffffcc"> <CENTER> <H2>Date and Time</H2> Today's date is: <%= new Date() %> </CENTER> </BODY> </HTML> 

jak vidíte, totéž lze provést pomocí různých značek a technik. Existuje několik skriptovacích prvků JSP. Zde jsou některá konvenční pravidla, která vám pomohou efektivně používat skriptovací prvky JSP:

  • použijte <% ... %> pro zpracování deklarací, výrazů nebo jakéhokoli jiného typu platného úryvku kódu. Příklad 1 výše je příkladem.
  • k definování skriptovacího jazyka použijte direktivu page jako v <%@page ... %>. Lze jej také použít k zadání import příkazů. Zde je příklad:
    <%@page language="java" import="java.util.*" %>.
  • použijte <%! .... %> k deklarování proměnných nebo metod. Například:
    <%! int x = 10; double y = 2.0; %>.
  • použijte <%= ... %> k definování výrazu a obsazení výsledku jako String. Například:
    <%= a+b %> nebo <%= new java.util.Date() %>.
  • použijte direktivu include jako v <%@ include ... %> pro vložení obsahu jiného souboru do hlavního souboru JSP. Například:
    <%@include file="copyright.html" %>.

Manipulační formuláře

jednou z nejběžnějších částí aplikací elektronického obchodu je formulář HTML, kde uživatel zadá některé informace, jako je jméno a adresa. Pomocí JSP se data formuláře (informace, které uživatel zadá ve formuláři) uloží do objektu request, který je odeslán z prohlížeče do kontejneru JSP. Požadavek je zpracován a výsledek je odeslán přes objekt response zpět do prohlížeče. Tyto dva objekty jsou implicitně k dispozici.

Chcete-li ukázat, jak zacházet s HTML formuláři pomocí JSP, zde je příklad formuláře se dvěma poli: jedno pro jméno a druhé pro e-mail. Jak vidíte, formulář HTML je definován ve zdrojovém souboru JSP. Metoda request.getParameter se používá k načtení dat z formuláře do proměnných vytvořených pomocí značek JSP.

stránka process.jsp vytiskne buď formulář, nebo informace poskytnuté uživatelem v závislosti na hodnotách polí formuláře. Pokud jsou hodnoty formuláře null, zobrazí se formulář, jinak se zobrazí informace poskytnuté uživatelem. Všimněte si, že formulář je vytvořen a zpracováván kódem ve stejném souboru JSP.

vzorek 4: proces.jsp

 <HTML> <HEAD> <TITLE>Form Example</TITLE> </HEAD> <BODY BGCOLOR="#ffffcc"> <% if (request.getParameter("name")==null && request.getParameter("email") == null) { %> <CENTER> <H2>User Info Request Form</H2> <FORM METHOD="GET" ACTION="/developer/technicalArticles/xml/WebAppDev/process.jsp"> <P> Your name: <input type="text" name="name" size=26> <P> Your email: <input type="text" name="email" size=26> <P> <input type="submit" value="Process"> </FORM> </CENTER> <% } else { %> <%! String name, email; %> <% name = request.getParameter("name"); email = request.getParameter("email"); %> <P> <B>You have provided the following info</B>: <P> <B>Name</B>: <%= name %><P> <B>Email</B>: <%= email %> <% } %> </BODY> </HTML> 

pokud je process.jsp požadováno z webového serveru, uvidíte něco podobného obrázku 3.

obrázek 3: proces.jsp loaded

zadejte své jméno a e-mail a kliknutím na proces odešlete formulář ke zpracování a uvidíte něco podobného obrázku 4.

obrázek 4: Formulář je zpracován

opakovaně použitelné komponenty

výše uvedený příklad formuláře je jednoduchý v tom smyslu,že se nejedná o mnoho kódu. Pokud se jedná o více kódu, je důležité nemíchat obchodní logiku s frontendovou prezentací ve stejném souboru. Oddělení obchodní logiky od prezentace umožňuje změny na obou stranách, aniž by to ovlivnilo druhou stranu. Nicméně, výroba JSP kód by měl být omezen na front-end prezentaci. Jak tedy implementujete část obchodní logiky?

to je místo, kde JavaBeans přijít hrát. Tato technologie je přenosný model komponent nezávislý na platformě, který umožňuje vývojářům psát komponenty a znovu je používat všude. V kontextu JSP obsahují JavaBeans obchodní logiku, která vrací data do skriptu na stránce JSP, což zase formátuje data vrácená z komponenty JavaBean pro zobrazení prohlížečem. Stránka JSP používá komponentu JavaBean nastavením a získáním vlastností, které poskytuje.

jaké jsou výhody

používání JavaBeans k rozšíření stránek JSP má několik výhod:

  • opakovaně použitelné komponenty: různé aplikace budou moci komponenty znovu použít.
  • oddělení obchodní logiky a prezentační logiky: můžete změnit způsob zobrazení dat bez ovlivnění obchodní logiky.
  • ochrana duševního vlastnictví udržováním zdrojového kódu v bezpečí.

příklad: použití JavaBeans s JSP

nyní se podívejme, jak upravit výše uvedený příklad process.jsp tak, aby používal JavaBeans. Ve výše uvedeném tvaru jsou to dvě pole: name a email. V JavaBeans se nazývají vlastnosti. Takže nejprve napíšete komponentu JavaBean s metodami setX a getX, kde X je název vlastnosti. Pokud máte například metody get a set: setName a getName , pak máte vlastnost známou jako name. Vzorek 5 ukazuje složku FormBean.

dobré komponenty musí být schopny spolupracovat s jinými komponenty od různých dodavatelů. Proto pro dosažení opětovného použití komponent existují dvě důležitá pravidla (která jsou uložena architekturou JavaBeans), která je třeba dodržovat:

  1. vaše třída bean musí poskytnout Konstruktor bez argumentů, aby mohl být vytvořen pomocí Beans.instantiate.
  2. vaše třída bean musí podporovat vytrvalost implementací rozhraní Serializable nebo Externalizable.

Vzorek 5: FormBean.Jáva

 package userinfo; import java.io.*; public class FormBean implements Serializable { private String name; private String email; public FormBean() { name = null; email = null; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setEmail(String email) { this.email = email; } public String getEmail() { return email; } } 

Chcete – li použít komponentu FormBean v souboru JSP, musíte vytvořit komponentu bean. To se provádí pomocí značky <jsp:useBean>. Další řádek <jsp:setProperty> se provede, když je fazole instantována a používá se k inicializaci vlastností fazole. V tomto případě jsou obě vlastnosti ( name a email) nastaveny pomocí jediného příkazu. Alternativně je možné nastavit vlastnosti jeden po druhém, ale nejprve je třeba načíst datum formuláře. Zde je příklad, jak byste nastavili vlastnost name :

 <%! String yourname, youremail; %> <% yourname = request.getParameter("name"); %> <jsp:setProperty name="formbean" property="name" value="<%=yourname%>"/> 

jakmile jsou vlastnosti inicializovány s daty načtenými z formuláře, hodnoty vlastností jsou načteny pro prezentaci pomocí <jsp:getProperty> v části else, jak je ukázáno ve vzorku 6.

vzorek 6: proces2.jsp

 <jsp:useBean class="userinfo.FormBean"/><jsp:setProperty name="formbean" property="*"/> <HTML> <HEAD><TITLE>Form Example</TITLE></HEAD><BODY BGCOLOR="#ffffcc"><% if (request.getParameter("name")==null && request.getParameter("email") == null) { %><CENTER><H2>User Info Request Form </H2><form method="GET" action="/developer/technicalArticles/xml/WebAppDev/process2.jsp"><P>Your name: <input type="text" name="name" size=27><p> Your email: <input type="text" name="email" size=27> <P> <input type="submit" value="Process"></FORM></CENTER><% } else { %><P><B>You have provided the following info</B>: <P> <B>Name</B>: <jsp:getProperty name="formbean"property="name"/> <P> <B>Email</B>: <jsp:getPropertyname="formbean" property="email"/> <% } %> </BODY> </HTML> 

závěr

vývojáři, kteří mají zájem o vývoj kvalitních produkčních webových aplikací, by se měli seznámit s technologiemi, které jsou použitelné nejen pro dnešní trh, ale i pro zítřejší trh, jmenovitě JSP a XML. Další článek bude diskutovat o možnostech, které technologie JSP poskytuje a které jsou ideální pro práci s XML; a ukázat vám, jak efektivně používat JSP s XML. JSP a XML jsou vynikající kombinací pro webové aplikace, které sdílejí informace, protože stránky JSP mají podporu XML zabudovanou přímo do nich ve formě vlastních knihoven značek JSP. Zůstaňte naladěni pro více informací o tom v dalším článku v této sérii.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.