dezvoltare aplicatii Web cu JSP si XML Partea I: Fast Track JSP

daca ati avut oportunitatea de a construi aplicatii web folosind tehnologii precum Common Gateway Interface (CGI) si servlets, sunteti obisnuiti cu ideea de a scrie un program pentru a genera intreaga pagina (partea statica si dinamica) folosind acelasi program. Dacă sunteți în căutarea unei soluții în care să puteți separa cele două părți, nu căutați mai departe. Pagini JavaServer (JSP) sunt aici.

paginile JSP vă permit să separați prezentarea front-end de logica de afaceri (niveluri medii și back-end). Este o abordare excelentă pentru dezvoltarea rapidă a aplicațiilor (rad) pentru aplicațiile Web. Această serie de articole oferă un tutorial hands-on care explică modul de dezvoltare a aplicațiilor Web moderne pentru piața de astăzi și de mâine. Această serie începe cu acest articol, care explică conceptele și beneficiile tehnologiei JSP și apoi vă arată cum să utilizați această tehnologie interesantă și cum să creați componente reutilizabile pentru manipularea formularelor.

Web-ul dinamic

Web-ul a evoluat de la un sistem de informații distribuit hipermedia bazat pe rețea care oferă informații statice către o piață pentru vânzarea și cumpărarea de bunuri și servicii. Aplicațiile din ce în ce mai sofisticate pentru a permite această piață necesită o tehnologie pentru prezentarea informațiilor dinamice.

soluțiile de primă generație au inclus CGI, care este un mecanism pentru rularea programelor externe printr-un server web. Problema cu scripturile CGI este scalabilitatea; un nou proces este creat pentru fiecare cerere.

soluțiile de a doua generație includeau furnizori de servere web care furnizau plug-in-uri și API-uri pentru serverele lor. Problema este că soluțiile lor erau specifice produselor lor de server. De exemplu, Microsoft a furnizat Active Server Pages (ASP) care a facilitat crearea de conținut dinamic. Cu toate acestea, soluția lor a funcționat doar cu Microsoft IIS sau Personal Web Server. Prin urmare, dacă doriți să utilizați ASP, trebuie să vă angajați în produsele Microsoft și nu vă veți bucura de libertatea de a selecta serverul web preferat și sistemul de operare!

o altă tehnologie de a doua generație care este destul de populară în calculul întreprinderii este servleturile. Servleturile facilitează scrierea aplicațiilor din partea serverului folosind tehnologia Java. Problema cu CGI sau servlets, cu toate acestea, este că trebuie să urmați scrie, compila, și implementa ciclul de viață.

paginile JSP sunt o soluție de a treia generație care poate fi combinată cu ușurință cu unele soluții de a doua generație, creând conținut dinamic și făcând mai ușor și mai rapid construirea de aplicații bazate pe web care funcționează cu o varietate de alte tehnologii: servere web, browsere web, servere de aplicații și alte instrumente de dezvoltare.

JavaServer Pages (JSP)

tehnologia JSP este o specificație deschisă, disponibilă gratuit, dezvoltată de Sun Microsystems ca alternativă la tehnologia Microsoft Active Server Pages (ASP) și o componentă cheie a specificației Java 2 Enterprise Edition (J2EE). Multe dintre serverele de aplicații disponibile în comerț (cum ar fi BEA WebLogic, IBM WebSphere, Live JRun, Orion și așa mai departe) acceptă deja tehnologia JSP.

JSP versus ASP

JSP și ASP oferă funcționalități similare. Ambele utilizează etichete pentru a permite codul încorporat într-o pagină HTML, urmărirea sesiunii și conexiunea la baza de date. Unele dintre diferențele banale sunt:

  • paginile ASP sunt scrise în VBScript și paginile JSP sunt scrise în limbajul de programare Java. Prin urmare, paginile JSP sunt independente de platformă și paginile ASP nu sunt.
  • paginile JSP folosesc tehnologia JavaBeans ca arhitectură a componentelor, iar paginile ASP folosesc componente ActiveX.

dincolo de aceste diferențe banale, există o serie de diferențe importante care vă pot ajuta în alegerea unei tehnologii pentru organizația dvs:

  • viteză și scalabilitate : deși paginile ASP sunt memorate în cache, ele sunt întotdeauna interpretate. În schimb, paginile JSP sunt compilate în Servleturi Java și încărcate în memorie prima dată când sunt apelate și executate pentru toate apelurile ulterioare. Acest lucru oferă pagini JSP aspeed și scalabilitate avantaj față de pagini ASP.
  • etichete extensibile : paginile JSP au o caracteristică avansată cunoscută sub numele de etichete extensibile. Acest mecanism permite dezvoltatorilor să creeze etichete personalizate. Cu alte cuvinte, etichetele EXTENSIBILE vă permit să extindeți sintaxa etichetei JSP pages. Nu puteți face acest lucru cu paginile ASP.
  • libertatea de alegere: dacă nu instalați Chili!Soft ASP, paginile ASP funcționează numai cu Microsoft IIS și Personal Web Server. Utilizarea paginilor ASP necesită un angajament față de produsele Microsoft, în timp ce paginile JSP nu vă leagă de niciun server web sau sistem de operare specific. Paginile JSP devin un standard larg acceptat.

pentru o comparație mai detaliată între paginile JSP și paginile ASP, consultați Compararea JSP și ASP.

mediu Software

pentru a rula pagini JSP, aveți nevoie de un server web cu un container web care este conform cu specificațiile JSP și servlet. Containerul web execută pe serverul web și gestionează execuția tuturor paginilor JSP și servleturilor care rulează pe acel server web. Tomcat 3.2.1 este o implementare de referință completă pentru specificațiile Java Servlet 2.2 și JSP 1.1. Descărcați și instalați versiuni binare ale Tomcat.

pentru a configura Tomcat:

  • setați variabila de mediu JAVA_HOME pentru a indica directorul rădăcină al instalării Java 2 Standard Edition (J2SE).
  • setați variabila de mediu TOMCAT_HOME pentru a indica directorul rădăcină al instalării Tomcat.
  • pentru a porni Tomcat, utilizați TOMCAT_HOME/bin/startup.bat Pentru windows sau startup.sh pentru UNIX.
    în mod implicit, va începe să asculte pe portul 8080.
  • salvați fișierele .jsp în TOMCAT_HOME/webapps/examples/jsp și clasele JavaBeans în TOMCAT_HOME/webapps/examples/web-inf/classes.

Notă: Dacă lucrați sub Windows, este posibil să primiți o eroare de mediu în afara spațiului atunci când încercați să porniți Tomcat. Există două moduri de a remedia acest lucru: fie modificați setarea inițială de memorie a ferestrei DOS la o valoare mai mare de 3200, fie editați configurația.fișier sys și adăugați următoarea linie: SHELL=c:\PATHTO\command.com /E:4096 /P.

cum funcționează paginile JSP

o pagină JSP este practic o pagină web cu HTML tradițional și biți de cod Java. Extensia de fișier a unei pagini JSP este „.jsp ” mai degrabă decât „.html” sau „.htm”, și care spune serverului că această pagină necesită o manipulare specială care va fi realizată printr-o extensie de server sau un plug-in. Iată un exemplu simplu:

proba 1: Data.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> 

acest exemplu conține HTML tradițional și un cod Java. Eticheta <% identifică începutul unui scriptlet, iar eticheta %> identifică sfârșitul unui scriptlet. Când date.jsp este solicitat de la un browser web, vedeți ceva similar cu figura 1.

Figura 1: data solicitării.jsp

în spatele scenei

când această pagină (date.jsp) este numit, acesta va fi compilat (de motorul JSP) într-un servlet java. În acest moment servletul este manipulat de motorul servletului la fel ca orice alt servlet. Motorul servlet încarcă apoi clasa servlet (folosind un încărcător de clasă) și o execută pentru a crea HTML dinamic pentru a fi trimis browserului, așa cum se arată în Figura 2. Pentru acest exemplu, servletul creează un obiect Date și îl scrie ca un șir la obiectul out, care este un flux de ieșire către browser.

Figura 2: Flux cerere / răspuns la apelarea unui JSP

la următoarea solicitare a paginii, motorul JSP execută servletul deja încărcat, cu excepția cazului în care pagina JSP s-a schimbat, caz în care este recompilat automat într-un servlet și executat.

elemente de Scripting

în exemplul date.jsp se folosește numele complet al clasei Date, inclusiv numele pachetului, care poate deveni plictisitor. Dacă doriți să creați o instanță de Date pur și simplu folosind: Date today = new Date(); fără a fi nevoie să specificați calea de clasă completă, utilizați Directiva page după cum urmează:

eșantionul 2 :data2.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>

cu toate acestea, un alt mod de a face același lucru folosind eticheta <%= este scriind:

eșantionul 3:DATA3.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> 

după cum puteți vedea, același lucru poate fi realizat folosind diferite etichete și tehnici. Există mai multe elemente de script JSP. Iată câteva reguli convenționale care vă vor ajuta să utilizați în mod eficient elementele de script JSP:

  • utilizați <% ... %> pentru a gestiona declarații, expresii sau orice alt tip de fragment valid de cod. Exemplul 1 de mai sus este un exemplu.
  • utilizați Directiva page ca în <%@page ... %> pentru a defini limbajul de scripting. De asemenea, poate fi folosit pentru a specifica import declarații. Iată un exemplu:
    <%@page language="java" import="java.util.*" %>.
  • utilizați <%! .... %> pentru a declara variabile sau metode. De exemplu:
    <%! int x = 10; double y = 2.0; %>.
  • utilizați <%= ... %> pentru a defini o expresie și a arunca rezultatul ca String. De exemplu:
    <%= a+b %> sau <%= new java.util.Date() %>.
  • utilizați Directiva include ca în <%@ include ... %> pentru a insera conținutul unui alt fișier în fișierul JSP principal. De exemplu:
    <%@include file="copyright.html" %>.

formulare de manipulare

una dintre cele mai comune părți ale aplicațiilor de comerț electronic este un formular HTML în care utilizatorul introduce unele informații, cum ar fi numele și adresa. Folosind JSP, datele formularului (informațiile pe care utilizatorul le introduce în formular) sunt stocate în obiectul request care este trimis din browser către containerul JSP. Solicitarea este procesată și rezultatul este trimis prin obiectul response înapoi în browser. Aceste două obiecte sunt implicit disponibile pentru dvs.

pentru a demonstra cum să gestionați formularele HTML folosind JSP, iată un exemplu de formular cu două câmpuri: unul pentru nume și celălalt pentru e-mail. După cum puteți vedea, formularul HTML este definit într-un fișier sursă JSP. Metoda request.getParameter este utilizată pentru a prelua datele din formular în variabile create folosind etichete JSP.

pagina process.jsp tipărește fie un formular, fie informațiile furnizate de utilizator, în funcție de valorile câmpurilor formularului. Dacă valorile formularului sunt null formularul este afișat, în caz contrar, sunt afișate informațiile furnizate de utilizator. Rețineți că formularul este creat și este gestionat de cod în același fișier JSP.

proba 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> 

dacă process.jsp este solicitat de la un server web, vedeți ceva similar cu figura 3.

Figura 3: proces.JSP loaded

introduceți numele și adresa de e-mail și faceți clic pe proces pentru a trimite formularul pentru procesare și vedeți ceva similar cu figura 4.

Figura 4: Forma este procesată

componente reutilizabile

forma de exemplu de mai sus este simplă în sensul că nu există prea mult cod implicat. Atunci când este implicat mai mult cod, atunci este important să nu se amestece logica de afaceri cu prezentarea front-end în același fișier. Separarea logicii de afaceri de prezentare permite modificări în ambele părți, fără a afecta cealaltă parte. Cu toate acestea, codul JSP de producție ar trebui să se limiteze la prezentarea front-end. Deci, cum implementați partea de logică de afaceri?

acesta este locul în care JavaBeans vin să joace. Această tehnologie este un model portabil, independent de platformă, care permite dezvoltatorilor să scrie componente și să le reutilizeze peste tot. În contextul JSP, JavaBeans conțin logica de afaceri care returnează datele într-un script pe o pagină JSP, care la rândul său formatează datele returnate din componenta JavaBean pentru afișare de către browser. O pagină JSP utilizează o componentă JavaBean prin setarea și obținerea proprietăților pe care le oferă.

care sunt beneficiile

există mai multe beneficii pentru utilizarea JavaBeans pentru a mări paginile JSP:

  • componente reutilizabile: diferite aplicații vor putea reutiliza componentele.
  • separarea logicii de afaceri și a logicii de prezentare: puteți modifica modul în care sunt afișate datele fără a afecta logica de afaceri.
  • protejarea proprietății intelectuale prin păstrarea codului sursă în siguranță.

exemplu: folosind JavaBeans cu JSP

acum, să vedem cum de a modifica process.jsp exemplul de mai sus pentru a utiliza JavaBeans. În forma de mai sus, acestea sunt două câmpuri: name și email. În JavaBeans, acestea se numesc proprietăți. Deci, mai întâi scrieți o componentă JavaBean cu setX și getX metode, unde X este numele proprietății. De exemplu, dacă aveți metode get și set: setName și getName atunci aveți o proprietate cunoscută sub numele de name. Eșantionul 5 prezintă o componentă FormBean.

componentele bune trebuie să poată interopera cu alte componente de la diferiți furnizori. Prin urmare, pentru a realiza reutilizarea componentelor, există două reguli importante (care sunt impuse de arhitectura JavaBeans) de urmat:

  1. clasa bean trebuie să furnizeze un constructor fără argumente, astfel încât să poată fi creat folosind Beans.instantiate.
  2. clasa bean trebuie să sprijine persistența prin implementarea interfeței Serializable sau Externalizable.

Proba 5: 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; } } 

pentru a utiliza componenta FormBean în fișierul JSP, trebuie să instantiați componenta bean. Aceasta se face folosind eticheta <jsp:useBean>. Următoarea linie <jsp:setProperty> este executată atunci când fasolea este instanțiată și utilizată pentru a inițializa proprietățile fasolei. În acest caz, ambele proprietăți ( name și email) sunt setate folosind o singură instrucțiune. Alternativ, este posibil să setați proprietățile pe rând, dar mai întâi trebuie să preluați data formularului. Iată un exemplu despre cum ați seta proprietatea name :

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

odată ce proprietățile au fost inițializate cu datele preluate din formular, valorile proprietății sunt preluate pentru prezentare folosind <jsp:getProperty> în partea else, așa cum se arată în eșantionul 6.

proba 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> 

concluzie

dezvoltatorii interesați să dezvolte aplicații web de producție de calitate ar trebui să se familiarizeze cu tehnologii care sunt aplicabile nu numai pentru piața de astăzi, ci și pentru cea de mâine, și anume JSP și XML. Următorul articol va discuta despre capacitățile pe care tehnologia JSP le oferă, care sunt ideale pentru lucrul cu XML; și vă va arăta cum să utilizați în mod eficient JSP cu XML. JSP și XML fac o combinație excelentă pentru aplicațiile web care partajează informații, deoarece paginile JSP au suport XML încorporat chiar în ele sub formă de biblioteci de etichete personalizate JSP. Rămâneți la curent pentru mai multe informații despre acest lucru în următorul articol din această serie.

Lasă un răspuns

Adresa ta de email nu va fi publicată.