ha lehetősége volt webes alkalmazásokat készíteni olyan technológiák felhasználásával, mint a Common Gateway Interface (CGI) és a servlets, akkor megszokta azt az elképzelést, hogy egy programot írjon az egész oldal (a statikus és a dinamikus rész) generálására ugyanazon program segítségével. Ha olyan megoldást keres, amelyben elválaszthatja a két részt, ne keressen tovább. JavaServer oldalak (JSP)itt.
a JSP-oldalak lehetővé teszik, hogy elkülönítse a front-end prezentációt az üzleti logikától (középső és back-end szintek). Ez egy nagyszerű gyors alkalmazásfejlesztés (Rad) megközelítés a webes alkalmazásokhoz. Ez a cikksorozat gyakorlati bemutatót nyújt, amely elmagyarázza, hogyan lehet modern webes alkalmazásokat fejleszteni a mai és a holnapi piac számára. Ez a sorozat ezzel a cikkel kezdődik, amely elmagyarázza a JSP technológia koncepcióit és előnyeit, majd bemutatja, hogyan használhatja ezt az izgalmas technológiát, és hogyan hozhat létre újrafelhasználható összetevőket az űrlapok kezeléséhez.
a dinamikus Web
a Web egy hálózati alapú hipermédia elosztott információs rendszerből fejlődött ki, amely statikus információkat kínál áruk és szolgáltatások eladására és vásárlására. Az egyre kifinomultabb alkalmazások, amelyek lehetővé teszik ezt a piacot, dinamikus információk bemutatására szolgáló technológiát igényelnek.
az első generációs megoldások tartalmazzák a CGI-t, amely a külső programok webkiszolgálón keresztüli futtatásának mechanizmusa. A CGI szkriptek problémája a skálázhatóság; minden kéréshez új folyamat jön létre.
a második generációs megoldások közé tartoztak a webszerver-gyártók, amelyek plug-ineket és API-kat biztosítottak szervereikhez. A probléma az, hogy megoldásaik kifejezetten a szerver termékeikre vonatkoztak. A Microsoft például aktív Kiszolgálóoldalakat (ASP) biztosított, amelyek megkönnyítették a dinamikus tartalom létrehozását. Megoldásuk azonban csak a Microsoft IIS vagy a Personal Web Server segítségével működött. Ezért, ha használni akarta az ASP-t, el kellett köteleznie magát a Microsoft termékek mellett, és nem élvezné a kedvenc webszerver és operációs rendszer kiválasztásának szabadságát!
egy másik második generációs technológia, amely meglehetősen népszerű a vállalati számítástechnikában, a servlets. A servletek megkönnyítik a szerveroldali alkalmazások írását Java technológiával. A CGI vagy a Servlet esetében azonban az a probléma, hogy követnie kell az írási, fordítási és üzembe helyezési életciklust.
a JSP pages egy harmadik generációs megoldás, amely könnyen kombinálható néhány második generációs megoldással, dinamikus tartalmat hozva létre, és megkönnyítve és gyorsabbá téve a webalapú alkalmazások létrehozását, amelyek számos más technológiával működnek: webszerverek, webböngészők, alkalmazáskiszolgálók és egyéb fejlesztőeszközök.
JavaServer Pages (JSP)
a JSP technológia egy nyílt, szabadon elérhető specifikáció, amelyet a Sun Microsystems fejlesztett ki a Microsoft Active Server Pages (ASP) technológiájának alternatívájaként, és a Java 2 Enterprise Edition (J2EE) specifikáció kulcsfontosságú eleme. Számos kereskedelmi forgalomban kapható alkalmazáskiszolgáló (például BEA WebLogic, IBM WebSphere, Live JRun, Orion stb.) már támogatja a JSP technológiát.
JSP versus ASP
a JSP és az ASP hasonló funkciókat biztosít. Mindkettő címkéket használ, hogy lehetővé tegye a beágyazott kódot egy HTML-oldalon, a munkamenet-követést és az adatbázis-kapcsolatot. Néhány triviális különbség a következő:
- az ASP oldalak VBScript nyelven, a JSP oldalak pedig Java programozási nyelven vannak írva. Ezért a JSP oldalak platformfüggetlenek, az ASP oldalak pedig nem.
- a JSP-oldalak a JavaBeans technológiát használják komponens architektúraként, az ASP-oldalak pedig ActiveX-összetevőket használnak.
ezen triviális különbségeken túl számos fontos különbség van, amelyek segíthetnek a szervezet technológiájának kiválasztásában:
- sebesség és skálázhatóság : bár az ASP-oldalak gyorsítótárban vannak, mindig értelmezik őket. Ezzel szemben a JSP oldalakat Java Servlet-ekbe fordítják, és az első híváskor betöltik a memóriába, majd végrehajtják az összes későbbi híváshoz. Ez ad JSP oldalak aspeed és skálázhatóság előnye ASP oldalak.
- bővíthető címkék : a JSP-oldalak fejlett funkcióval rendelkeznek, amelyet bővíthető címkéknek neveznek. Ez a mechanizmus lehetővé teszi a fejlesztők számára, hogy egyedi címkéket hozzanak létre. Más szavakkal, a bővíthető címkék lehetővé teszik a JSP pages címke szintaxisának kiterjesztését. Ezt nem teheti meg ASP oldalakkal.
- választás szabadsága : hacsak nem telepíti a Chili-t!Soft ASP, ASP oldalak csak a Microsoft IIS és a Personal Web Server. Az ASP-oldalak használata megköveteli a Microsoft-termékek iránti elkötelezettséget, míg a JSP-oldalak nem kötik Önt semmilyen konkrét webszerverhez vagy operációs rendszerhez. A JSP oldalak széles körben támogatott szabványokká válnak.
a JSP-oldalak és az ASP-oldalak részletesebb összehasonlítását lásd: JSP-és ASP-oldalak összehasonlítása.
szoftverkörnyezet
a JSP-oldalak futtatásához olyan webkiszolgálóra van szükség, amely megfelel a JSP és a servlet specifikációinak. A webtároló a webkiszolgálón fut, és kezeli az adott webkiszolgálón futó összes JSP-oldal és szervlet végrehajtását. A Tomcat 3.2.1 egy teljes referencia implementáció a Java Servlet 2.2 és JSP 1.1 specifikációkhoz. Töltse le és telepítse a Tomcat bináris verzióit.
a Tomcat konfigurálása:
- állítsa be a
JAVA_HOME
környezeti változót úgy, hogy a Java 2 Standard Edition (J2SE) telepítésének gyökérkönyvtárára mutasson. - állítsa be a
TOMCAT_HOME
környezeti változót úgy, hogy a Tomcat telepítésének gyökérkönyvtárára mutasson. - a Tomcat indításához használja a
TOMCAT_HOME/bin/startup.bat
parancsot windows vagy astartup.sh
parancsot UNIX esetén.
alapértelmezés szerint a 8080-as porton kezd el hallgatni. - mentse el
.jsp
fájljaitTOMCAT_HOME/webapps/examples/jsp
– be, a JavaBeans osztályait pedigTOMCAT_HOME/webapps/examples/web-inf/classes
– ba.
Megjegyzés: Ha Windows alatt dolgozik, előfordulhat, hogy a Tomcat indításakor hiba lép fel. Ennek két módja van: vagy módosítsa a DOS ablak kezdeti memóriabeállítását 3200-nál nagyobb értékre, vagy szerkessze a konfigurációt.sys fájlt, és adja hozzá a következő sort: SHELL=c:\PATHTO\command.com /E:4096 /P
.
hogyan működnek a JSP oldalak
a JSP oldal alapvetően egy weboldal, amely hagyományos HTML-t és Java kódokat tartalmaz. A JSP oldal fájlkiterjesztése “.jsp “helyett”.html “vagy”.htm”, amely azt mondja a szervernek, hogy ez az oldal speciális kezelést igényel, amelyet egy szerver kiterjesztés vagy plug-in hajt végre. Íme egy egyszerű példa:
1. minta: dátum.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>
ez a példa hagyományos HTML-t és néhány Java kódot tartalmaz. A <%
címke a parancsfájl elejét, a %>
címke pedig a parancsfájl végét azonosítja. Ha date.jsp
– et kér egy webböngészőből, akkor az 1.ábrához hasonlót lát.
1. ábra: Dátum kérése.jsp
a színfalak mögött
amikor ezt az oldalt (date.jsp)
meghívják, a JSP motor lefordítja egy java servletbe. Ezen a ponton a servlet kezeli a servlet motor, mint bármely más servlet. A servlet motor ezután betölti a servlet osztályt (egy class loader segítségével), és végrehajtja, hogy dinamikus HTML-t hozzon létre, amelyet el kell küldeni a böngészőnek, a 2.ábrán látható módon. Ebben a példában a servlet létrehoz egy Date
objektumot, és azt karakterláncként írja a out
objektumhoz, amely a böngésző kimeneti folyama.
2. ábra: Request / Response Flow JSP
meghívásakor a következő alkalommal, amikor az oldalt kérik,a JSP motor végrehajtja a már betöltött szervletet, kivéve, ha a JSP oldal megváltozott, ebben az esetben automatikusan újrafordítja egy servletbe és végrehajtja.
Script elemek
a date.jsp
példában a teljes Date
osztálynevet használjuk, beleértve a csomag nevét is, ami unalmassá válhat. Ha Date
példányt szeretne létrehozni egyszerűen a következővel: Date today = new Date();
anélkül, hogy meg kellene adnia a teljes osztályútvonalat, használja a page
irányelvet az alábbiak szerint:
2.Minta :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>
mégis, egy másik módja annak, hogy ugyanazt a dolgot használja a <%=
címke használatával:
3.Minta: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>
mint látható, ugyanazt a dolgot különböző címkékkel és technikákkal lehet elérni. Számos JSP szkript elem létezik. Íme néhány hagyományos szabály, amely segít a JSP szkriptelemek hatékony használatában:
- a
<% ... %>
használatával kezelheti a deklarációkat, kifejezéseket vagy bármilyen más típusú érvényes kódrészletet. A fenti 1. minta egy példa. - használja a
page
irányelvet, mint a<%@page ... %>
a szkriptnyelv meghatározásához. Aimport
utasítások megadására is használható. Íme egy példa:
<%@page language="java" import="java.util.*" %>
. - használja a
<%! .... %>
értéket változók vagy metódusok deklarálásához. Például:
<%! int x = 10; double y = 2.0; %>
. - használja a
<%= ... %>
kifejezést, és adja meg az eredménytString
– ként. Például:<%= a+b %>
vagy<%= new java.util.Date() %>
. - használja a
include
irányelvet, mint a<%@ include ... %>
egy másik fájl tartalmának beszúrásához a fő JSP fájlba. Például:
<%@include file="copyright.html" %>
.
űrlapok kezelése
az e-kereskedelmi alkalmazások egyik leggyakoribb része egy HTML űrlap, amelybe a felhasználó beír néhány információt, például nevet és címet. A JSP használatával az űrlap adatai (a felhasználó által az űrlapon megadott információk) a request
objektumba kerülnek, amelyet a böngésző küld a JSP tárolóba. A kérés feldolgozásra kerül, és az eredmény a response
objektumon keresztül visszakerül a böngészőbe. Ez a két objektum implicit módon elérhető az Ön számára.
annak bemutatására, hogyan kell kezelni a HTML űrlapokat a JSP segítségével, Itt van egy példa űrlap két mezővel: az egyik a név, a másik az e-mail. Mint látható, a HTML űrlapot egy JSP forrásfájl határozza meg. A request.getParameter
metódust az űrlap adatainak JSP címkékkel létrehozott változókká történő lekérésére használják.
a process.jsp
oldal nyomtatja ki az űrlapot vagy a felhasználó által megadott információkat az űrlap mezőinek értékeitől függően. Ha az űrlap értéke null
, akkor az űrlap jelenik meg, ellenkező esetben a felhasználó által megadott információk jelennek meg. Vegye figyelembe, hogy az űrlapot ugyanabban a JSP fájlban lévő kód hozza létre és kezeli.
4. minta: folyamat.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>
ha process.jsp
– ot kér egy webszerverről, akkor a 3.ábrához hasonlót lát.
3. ábra: folyamat.jsp loaded
írja be nevét és e-mail címét, majd kattintson a Process (folyamat) gombra, hogy elküldje az űrlapot feldolgozásra, és valami hasonlót lát, mint a 4.ábra.
4. ábra: Az űrlap feldolgozása
újrafelhasználható összetevők
a fenti példa űrlap egyszerű abban az értelemben, hogy nincs sok kód. Ha több kódról van szó, akkor fontos, hogy ne keverje össze az üzleti logikát a kezelőfelület bemutatásával ugyanabban a fájlban. Az üzleti logika elválasztása a bemutatástól lehetővé teszi mindkét oldal módosítását anélkül, hogy befolyásolná a másikat. Azonban a termelés JSP kódot kell korlátozni front end bemutatása. Szóval, hogyan valósítja meg az üzleti logika részét?
itt jönnek a JavaBeans játszani. Ez a technológia egy hordozható, platformfüggetlen komponensmodell, amely lehetővé teszi a fejlesztők számára, hogy összetevőket írjanak és mindenhol újra felhasználják őket. A JSP összefüggésében a JavaBeans üzleti logikát tartalmaz, amely adatokat ad vissza egy JSP oldal szkriptjéhez, amely viszont formázza a JavaBean komponensből visszaküldött adatokat a böngésző általi megjelenítés céljából. A JSP-oldal JavaBean-összetevőt használ az általa biztosított tulajdonságok beállításával és megszerzésével.
mik az előnyei
számos előnye van a JavaBeans használatának a JSP-oldalak bővítéséhez:
- újrafelhasználható alkatrészek: különböző alkalmazások képesek lesznek újra felhasználni az összetevőket.
- az üzleti logika és a prezentációs logika elválasztása: az adatok megjelenítésének módját az üzleti logika befolyásolása nélkül módosíthatja.
- szellemi tulajdonának védelme a forráskód biztonságos megőrzésével.
példa: JavaBeans használata JSP-vel
most nézzük meg, hogyan módosíthatjuk a fenti process.jsp
példát a JavaBeans használatához. A fenti formában két mező van: name
és email
. A JavaBeans – ban ezeket tulajdonságoknak nevezik. Tehát először írj egy JavaBean komponenst setX
és getX
metódusokkal, ahol X a tulajdonság neve. Például, ha van get és set metódusod: setName
és getName
, akkor van egy name
néven ismert tulajdonságod. Az 5. minta FormBean
komponenst mutat.
a jó alkatrészeknek képesnek kell lenniük arra, hogy együttműködjenek a különböző gyártók más alkatrészeivel. Ezért az alkatrészek újrafelhasználásának elérése érdekében két fontos szabályt kell követni (amelyeket a JavaBeans architektúra ír elő) :
- a bean osztálynak meg kell adnia egy konstruktort argumentumok nélkül, így a
Beans.instantiate
használatával hozható létre. - a bean osztálynak támogatnia kell a perzisztenciát a
Serializable
vagyExternalizable
interfész megvalósításával.
5.Minta: FormBean.java
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; } }
a FormBean
összetevő használatához a JSP fájlban meg kell példányosítani a bean összetevőt. Ez a <jsp:useBean>
címkével történik. A következő sor <jsp:setProperty>
a bab példányosításakor kerül végrehajtásra, és a bab tulajdonságainak inicializálására szolgál. Ebben az esetben mindkét tulajdonság ( name
és email
) egyetlen utasítással van beállítva. Alternatív megoldásként lehetőség van a tulajdonságok egyesével történő beállítására, de először le kell szereznie az űrlap dátumát. Íme egy példa arra, hogyan állíthatja be a name
tulajdonságot:
<%! String yourname, youremail; %> <% yourname = request.getParameter("name"); %> <jsp:setProperty name="formbean" property="name" value="<%=yourname%>"/>
miután a tulajdonságokat inicializálták az űrlapból lekért adatokkal, a tulajdonságértékek a <jsp:getProperty>
használatával kerülnek lekérésre a else
részben, amint azt a 6.minta mutatja.
6.Minta: folyamat2.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>
következtetés
a minőségi gyártású webes alkalmazások fejlesztése iránt érdeklődő fejlesztőknek meg kell ismerkedniük olyan technológiákkal, amelyek nemcsak a mai, hanem a holnap piacán is alkalmazhatók, nevezetesen a JSP és az XML. A következő cikk megvitatja a JSP technológia által biztosított képességeket, amelyek ideálisak az XML használatához; és megmutatja, hogyan lehet hatékonyan használni a JSP-t XML-vel. A JSP és az XML kiváló kombinációt jelent az információkat megosztó webes alkalmazások számára,mivel a JSP oldalak XML támogatással rendelkeznek, JSP egyedi címkekönyvtárak formájában. Maradjon velünk további információkért erről a sorozat következő cikkében.