Tworzenie aplikacji internetowych przy użyciu JSP i XML część i: Fast Track JSP

jeśli miałeś okazję budować aplikacje internetowe przy użyciu technologii takich jak Common Gateway Interface (CGI) i servlets, jesteś przyzwyczajony do pomysłu napisania programu do generowania całej strony (części statycznej i dynamicznej) przy użyciu tego samego programu. Jeśli szukasz rozwiązania, w którym można oddzielić dwie części, nie szukaj dalej. JavaServer Pages (JSP) jest tutaj.

strony JSP umożliwiają oddzielenie prezentacji front-end od logiki biznesowej (warstwy środkowej i zaplecza). Jest to świetne podejście do szybkiego tworzenia aplikacji (RAD) do aplikacji internetowych. Ta seria artykułów zawiera praktyczny samouczek wyjaśniający, jak tworzyć nowoczesne aplikacje internetowe dla dzisiejszego i jutrzejszego rynku. Ta seria zaczyna się od tego artykułu, który wyjaśnia koncepcje i zalety technologii JSP, a następnie pokazuje, jak wykorzystać tę ekscytującą technologię i jak tworzyć komponenty wielokrotnego użytku do obsługi formularzy.

dynamiczna sieć

sieć ewoluowała z sieciowego systemu rozproszonej informacji hipermedialnej oferującego statyczne informacje na rynek sprzedaży i zakupu towarów i usług. Coraz bardziej wyrafinowane aplikacje umożliwiające korzystanie z tego rynku wymagają technologii prezentacji dynamicznych informacji.

rozwiązania pierwszej generacji zawierały CGI, który jest mechanizmem do uruchamiania zewnętrznych programów za pośrednictwem serwera www. Problemem ze skryptami CGI jest skalowalność; dla każdego żądania tworzony jest nowy proces.

rozwiązania drugiej generacji obejmowały dostawców serwerów internetowych dostarczających wtyczki i interfejsy API dla swoich serwerów. Problem polega na tym, że ich rozwiązania były specyficzne dla ich produktów serwerowych. Na przykład firma Microsoft udostępniła Active Server Pages (ASP), które ułatwiły tworzenie dynamicznej zawartości. Jednak ich rozwiązanie działało tylko z Microsoft IIS lub Personal Web Server. W związku z tym, jeśli chcesz korzystać z ASP, musisz zaangażować się w produkty firmy Microsoft i nie będziesz cieszyć się swobodą wyboru ulubionego serwera WWW i systemu operacyjnego!

kolejna technologia drugiej generacji, która jest dość popularna w komputerach korporacyjnych, to servlety. Servlety ułatwiają pisanie aplikacji po stronie serwera przy użyciu technologii Java. Problem z CGI lub serwletami polega jednak na tym, że musisz przestrzegać cyklu życia zapisu, kompilacji i wdrażania.

strony JSP To rozwiązanie trzeciej generacji, które można łatwo łączyć z niektórymi rozwiązaniami drugiej generacji, tworząc dynamiczną treść i ułatwiając i przyspieszając tworzenie aplikacji internetowych, które współpracują z wieloma innymi technologiami: Serwery WWW, przeglądarki internetowe, serwery aplikacji i inne narzędzia programistyczne.

JavaServer Pages (JSP)

Technologia JSP jest otwartą, swobodnie dostępną specyfikacją opracowaną przez Sun Microsystems jako alternatywa dla technologii Active Server Pages (ASP) firmy Microsoft i kluczowym elementem specyfikacji Java 2 Enterprise Edition (J2EE). Wiele dostępnych komercyjnie serwerów aplikacji (takich jak BEA WebLogic, IBM WebSphere, Live Jrun, Orion itd.) obsługuje już technologię JSP.

JSP kontra ASP

JSP i ASP zapewniają podobną funkcjonalność. Oba znaczniki umożliwiają osadzenie kodu na stronie HTML, Śledzenie sesji i połączenie z bazą danych. Niektóre trywialne różnice to:

  • strony ASP napisane są w języku VBScript, A strony JSP w języku programowania Java. Dlatego strony JSP są niezależne od platformy, A strony ASP nie.
  • strony JSP używają technologii JavaBeans jako architektury komponentów, A strony ASP używają komponentów ActiveX.

poza tymi błahymi różnicami istnieje wiele ważnych różnic, które mogą pomóc w wyborze technologii dla Twojej organizacji:

  • szybkość i skalowalność: chociaż strony ASP są buforowane, zawsze są interpretowane. Natomiast strony JSP są kompilowane do serwletów Java i ładowane do pamięci przy pierwszym wywołaniu i wykonywane dla wszystkich kolejnych wywołań. Daje to ASPEED i skalowalność stron JSP przewagę nad stronami ASP.
  • Extensible Tags : strony JSP mają zaawansowaną funkcję znaną jako extensible tags. Mechanizm ten umożliwia programistom tworzenie niestandardowych tagów. Innymi słowy, znaczniki rozszerzalne pozwalają rozszerzyć składnię znaczników JSP pages. Nie można tego zrobić ze stronami ASP.
  • wolność wyboru: chyba, że zainstalujesz Chili!Soft ASP, ASP pages działają tylko z Microsoft IIS i Personal Web Server. Korzystanie ze stron ASP wymaga zaangażowania w produkty firmy Microsoft, natomiast strony JSP nie wiążą użytkownika z żadnym konkretnym serwerem internetowym ani systemem operacyjnym. Strony JSP stają się powszechnie obsługiwanym standardem.

aby uzyskać bardziej szczegółowe porównanie stron JSP i stron ASP, zobacz porównywanie JSP i ASP.

środowisko oprogramowania

aby uruchamiać strony JSP, potrzebny jest serwer WWW z kontenerem sieci Web zgodnym ze specyfikacjami JSP i servlet. Kontener sieci Web jest wykonywany na serwerze sieci Web i zarządza wykonaniem wszystkich stron JSP i serwletów uruchomionych na tym serwerze sieci web. Tomcat 3.2.1 jest kompletną implementacją referencyjną dla specyfikacji Java Servlet 2.2 i JSP 1.1. Pobierz i zainstaluj binarne wersje programu Tomcat.

aby skonfigurować Tomcat:

  • Ustaw zmienną środowiskową JAVA_HOME tak, aby wskazywała na katalog główny instalacji Java 2 Standard Edition (J2SE).
  • Ustaw zmienną środowiskową TOMCAT_HOME, aby wskazywała na katalog główny instalacji Tomcat.
  • aby uruchomić Tomcat, użyj TOMCAT_HOME/bin/startup.bat Dla windows lub startup.sh Dla UNIX.
    domyślnie zacznie nasłuchiwać na porcie 8080.
  • Zapisz pliki .jsp w TOMCAT_HOME/webapps/examples/jsp i klasy JavaBeans w TOMCAT_HOME/webapps/examples/web-inf/classes.

Uwaga: Jeśli pracujesz w systemie Windows, podczas próby uruchomienia programu Tomcat może pojawić się błąd środowiska poza miejscem. Istnieją dwa sposoby, aby to naprawić: albo zmienić początkowe ustawienie pamięci okna DOS na wartość większą niż 3200 lub edytować konfigurację.plik sys i dodać następujący wiersz: SHELL=c:\PATHTO\command.com /E:4096 /P.

jak działają strony JSP

strona JSP jest w zasadzie stroną internetową z tradycyjnym HTML i bitami kodu Java. Rozszerzenie pliku strony JSP jest „.jsp „zamiast”.html” lub „.htm”, a to mówi serwerowi, że ta strona wymaga specjalnej obsługi, która zostanie wykonana przez rozszerzenie serwera lub wtyczkę. Oto prosty przykład:

próbka 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> 

ten przykład zawiera tradycyjny kod HTML i trochę kodu Java. Znacznik <% określa początek skryptu, a znacznik %> określa koniec skryptu. Gdy żądana jest wartość date.jsp z przeglądarki internetowej, widać coś podobnego do rysunku 1.

Rysunek 1: wnioskująca Data.jsp

za kulisami

kiedy ta strona (date.jsp) zostanie wywołana, zostanie ona skompilowana (przez silnik JSP) do serwletu java. W tym momencie servlet jest obsługiwany przez silnik servlet, tak jak każdy inny servlet. Silnik servleta następnie ładuje klasę servleta (używając class loader) i wykonuje ją w celu utworzenia dynamicznego kodu HTML, który ma zostać wysłany do przeglądarki, jak pokazano na rysunku 2. W tym przykładzie servlet tworzy obiekt Date i zapisuje go jako łańcuch znaków do obiektu out, który jest strumieniem wyjściowym do przeglądarki.

Rysunek 2: przepływ żądania / odpowiedzi podczas wywoływania JSP

następnym razem, gdy strona jest żądana, silnik JSP wykonuje już załadowany servlet, chyba że strona JSP się zmieniła, w którym to przypadku jest automatycznie rekompilowana do serwletu i wykonywana.

Elementy Skryptowe

w przykładzie date.jsp używana jest pełna nazwa klasy Date wraz z nazwą pakietu, co może stać się uciążliwe. Jeśli chcesz utworzyć instancję Date po prostu za pomocą: Date today = new Date(); bez konieczności podawania pełnej ścieżki klasy, użyj dyrektywy page w następujący sposób:

przykład 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>

jednak Innym sposobem zrobienia tego samego przy użyciu znacznika <%= jest napisanie:

Sample 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 widać, to samo można osiągnąć za pomocą różnych tagów i technik. Istnieje kilka elementów skryptowych JSP. Oto kilka konwencjonalnych reguł, które pomogą Ci efektywnie korzystać z elementów skryptów JSP:

  • użyj <% ... %> do obsługi deklaracji, wyrażeń lub dowolnego innego typu poprawnego fragmentu kodu. Przykład 1 powyżej jest przykładem.
  • użyj dyrektywy page jak w <%@page ... %>, aby zdefiniować język skryptowy. Może być również użyty do określenia poleceń import. Oto przykład:
    <%@page language="java" import="java.util.*" %>.
  • użyj <%! .... %>, aby zadeklarować zmienne lub metody. Na przykład:
    <%! int x = 10; double y = 2.0; %>.
  • użyj <%= ... %>, aby zdefiniować wyrażenie i odrzucić wynik jako String. Na przykład:
    <%= a+b %> lub <%= new java.util.Date() %>.
  • użyj dyrektywy include jak w <%@ include ... %>, aby wstawić zawartość innego pliku do głównego pliku JSP. Na przykład:
    <%@include file="copyright.html" %>.

Obsługa formularzy

jedną z najczęstszych części aplikacji ecommerce jest formularz HTML, w którym użytkownik wprowadza pewne informacje, takie jak imię i nazwisko oraz adres. Korzystając z JSP, dane formularza (informacje, które użytkownik wprowadza w formularzu) zostają zapisane w obiekcie request, który jest wysyłany z przeglądarki do kontenera JSP. Żądanie jest przetwarzane, a wynik jest wysyłany przez obiekt response z powrotem do przeglądarki. Te dwa obiekty są domyślnie dostępne dla Ciebie.

aby zademonstrować, jak obsługiwać formularze HTML za pomocą JSP, oto przykładowy formularz z dwoma polami: jednym dla nazwy i drugim dla wiadomości e-mail. Jak widać, formularz HTML jest zdefiniowany w pliku źródłowym JSP. Metoda request.getParameter służy do pobierania danych z formularza do zmiennych utworzonych za pomocą znaczników JSP.

strona process.jsp drukuje formularz lub informacje podane przez użytkownika w zależności od wartości pól formularza. Jeśli wartość formularza wynosi null, formularz jest wyświetlany, w przeciwnym razie wyświetlana jest informacja podana przez użytkownika. Zauważ, że formularz jest tworzony i obsługiwany przez KOD w tym samym pliku JSP.

próbka 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> 

jeśli żądana jest wartość process.jsp z serwera sieci web, zobaczysz coś podobnego do rysunku 3.

Rysunek 3: Proces.JSP załadowany

Wpisz swoje imię i adres e-mail i kliknij proces, aby przesłać formularz do przetworzenia, a zobaczysz coś podobnego do rysunku 4.

Rysunek 4: Formularz jest przetwarzany

Komponenty wielokrotnego użytku

powyższy przykładowy formularz jest prosty w tym sensie, że nie ma w nim zbyt wiele kodu. W przypadku większej ilości kodu ważne jest, aby nie mieszać logiki biznesowej z prezentacją front-end w tym samym pliku. Oddzielenie logiki biznesowej od prezentacji pozwala na zmiany po obu stronach bez wpływu na drugą. Jednak produkcyjny kod JSP powinien być ograniczony do prezentacji front-end. Jak więc wdrożyć część logiki biznesowej?

to tam JavaBeans przychodzą grać. Ta technologia jest przenośnym, niezależnym od platformy modelem komponentów, który pozwala programistom pisać komponenty i używać ich ponownie wszędzie. W kontekście JSP, JavaBeans zawiera logikę biznesową, która zwraca dane do skryptu na stronie JSP, która z kolei formatuje dane zwrócone z komponentu JavaBean do wyświetlenia przez przeglądarkę. Strona JSP używa komponentu JavaBean, ustawiając i pobierając właściwości, które zapewnia.

jakie są korzyści

istnieje kilka korzyści z używania JavaBeans do rozszerzania stron JSP:

  • elementy wielokrotnego użytku: różne aplikacje będą mogły ponownie wykorzystać komponenty.
  • rozdzielenie logiki biznesowej i logiki prezentacji: możesz zmienić sposób wyświetlania danych bez wpływu na logikę biznesową.
  • Ochrona Własności Intelektualnej poprzez zabezpieczenie kodu źródłowego.

przykład: używanie JavaBeans z JSP

teraz zobaczmy, jak zmodyfikować powyższy przykład process.jsp, aby używać JavaBeans. W powyższym formularzu są to dwa pola: name i email. W JavaBeans są one nazywane właściwościami. Najpierw piszesz komponent JavaBean za pomocą metod setX i getX, gdzie X jest nazwą właściwości. Na przykład, jeśli masz metody get I set: setName i getName, to masz właściwość znaną jako name. Próbka 5 pokazuje komponent FormBean.

dobre komponenty muszą być w stanie współdziałać z innymi komponentami od różnych dostawców. Dlatego, aby osiągnąć ponowne użycie komponentów, istnieją dwie ważne reguły (które są narzucone przez architekturę JavaBeans), które należy przestrzegać:

  1. Twoja klasa bean musi dostarczać konstruktora bez argumentów, więc może być utworzona przy użyciu Beans.instantiate.
  2. Twoja klasa bean musi obsługiwać trwałość poprzez implementację interfejsu Serializable lub Externalizable.

Próbka 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; } } 

aby użyć komponentu FormBean w pliku JSP, musisz utworzyć instancję komponentu bean. Odbywa się to za pomocą tagu <jsp:useBean>. Następna linia <jsp:setProperty> jest wykonywana, gdy Bean jest instancjowany i używana do inicjalizacji właściwości bean. W tym przypadku obie właściwości ( name i email) są ustawiane za pomocą jednego polecenia. Alternatywnie, można ustawić właściwości pojedynczo, ale najpierw musisz pobrać datę formularza. Oto przykład ustawienia właściwości name :

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

po zainicjowaniu właściwości za pomocą danych pobranych z formularza, wartości właściwości są pobierane do prezentacji za pomocą <jsp:getProperty> w części else, jak pokazano w próbce 6.

próbka 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> 

wniosek

Programiści zainteresowani tworzeniem wysokiej jakości produkcyjnych aplikacji internetowych powinni zapoznać się z technologiami, które mają zastosowanie nie tylko na dzisiejszym rynku, ale także na jutrzejszym, a mianowicie JSP i XML. W następnym artykule omówimy możliwości, jakie zapewnia technologia JSP, która idealnie nadaje się do pracy z XML; i pokażemy, jak skutecznie korzystać z JSP z XML. JSP i XML stanowią doskonałe połączenie dla aplikacji internetowych, które udostępniają informacje, ponieważ strony JSP mają wbudowaną obsługę XML w postaci niestandardowych bibliotek tagów JSP. Więcej informacji na ten temat znajdziecie w następnym artykule z tej serii.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.