Webanwendungsentwicklung mit JSP und XML Teil I: Fast Track JSP

Wenn Sie die Möglichkeit hatten, Webanwendungen mit Technologien wie Common Gateway Interface (CGI) und Servlets zu erstellen, sind Sie es gewohnt, ein Programm zu schreiben, um die gesamte Seite (den statischen und den dynamischen Teil) mit demselben Programm zu generieren. Wenn Sie nach einer Lösung suchen, in der Sie die beiden Teile trennen können, suchen Sie nicht weiter. JavaServer-Seiten (JSP) sind hier.

Mit JSP-Seiten können Sie die Front-End-Präsentation von der Geschäftslogik trennen (mittlere und Back-End-Ebene). Es ist ein großartiger Rapid Application Development (RAD) -Ansatz für Webanwendungen. Diese Artikelserie bietet ein praktisches Tutorial, in dem erklärt wird, wie moderne Webanwendungen für den Markt von heute und morgen entwickelt werden. Diese Serie beginnt mit diesem Artikel, der die Konzepte und Vorteile der JSP-Technologie erläutert und Ihnen dann zeigt, wie Sie diese aufregende Technologie nutzen und wiederverwendbare Komponenten für die Handhabung von Formularen erstellen.

Das dynamische Web

Das Web hat sich von einem netzwerkbasierten hypermedialen verteilten Informationssystem, das statische Informationen anbietet, zu einem Marktplatz für den Verkauf und Kauf von Waren und Dienstleistungen entwickelt. Die immer anspruchsvolleren Anwendungen, um diesen Markt zu ermöglichen, erfordern eine Technologie zur Darstellung dynamischer Informationen.

Zu den Lösungen der ersten Generation gehörte CGI, ein Mechanismus zum Ausführen externer Programme über einen Webserver. Das Problem bei CGI-Skripten ist die Skalierbarkeit; Für jede Anforderung wird ein neuer Prozess erstellt.

Zu den Lösungen der zweiten Generation gehörten Anbieter von Webservern, die Plug-Ins und APIs für ihre Server bereitstellten. Das Problem ist, dass ihre Lösungen spezifisch für ihre Serverprodukte waren. Microsoft hat beispielsweise Active Server Pages (ASP) bereitgestellt, mit denen dynamische Inhalte einfacher erstellt werden können. Ihre Lösung funktionierte jedoch nur mit Microsoft IIS oder Personal Web Server. Wenn Sie ASP verwenden wollten, mussten Sie sich daher auf Microsoft-Produkte festlegen, und Sie würden nicht die Freiheit genießen, Ihren bevorzugten Webserver und Ihr bevorzugtes Betriebssystem auszuwählen!

Eine weitere Technologie der zweiten Generation, die im Enterprise Computing sehr beliebt ist, sind Servlets. Servlets erleichtern das Schreiben serverseitiger Anwendungen mit Java-Technologie. Das Problem mit CGI oder Servlets besteht jedoch darin, dass Sie den Schreib-, Kompilier- und Bereitstellungslebenszyklus befolgen müssen.

JSP-Seiten sind eine Lösung der dritten Generation, die problemlos mit einigen Lösungen der zweiten Generation kombiniert werden kann, dynamische Inhalte erstellt und das Erstellen webbasierter Anwendungen, die mit einer Vielzahl anderer Technologien arbeiten, einfacher und schneller macht: webserver, Webbrowser, Anwendungsserver und andere Entwicklungstools.

JavaServer Pages (JSP)

Die JSP-Technologie ist eine offene, frei verfügbare Spezifikation, die von Sun Microsystems als Alternative zur Microsoft Active Server Pages (ASP) -Technologie entwickelt wurde und eine Schlüsselkomponente der Java 2 Enterprise Edition (J2EE)-Spezifikation darstellt. Viele der im Handel erhältlichen Anwendungsserver (wie BEA WebLogic, IBM WebSphere, Live JRun, Orion usw.) unterstützen bereits die JSP-Technologie.

JSP versus ASP

JSP und ASP bieten ähnliche Funktionen. Beide verwenden Tags, um eingebetteten Code in einer HTML-Seite, Sitzungsverfolgung und Datenbankverbindung zu ermöglichen. Einige der trivialen Unterschiede sind:

  • ASP-Seiten werden in VBScript und JSP-Seiten in der Programmiersprache Java geschrieben. Daher sind JSP-Seiten plattformunabhängig und ASP-Seiten nicht.
  • JSP-Seiten verwenden die JavaBeans-Technologie als Komponentenarchitektur und ASP-Seiten verwenden ActiveX-Komponenten.

Neben diesen trivialen Unterschieden gibt es eine Reihe wichtiger Unterschiede, die Ihnen bei der Auswahl einer Technologie für Ihr Unternehmen helfen können:

  • Geschwindigkeit und Skalierbarkeit : ASP-Seiten werden zwar zwischengespeichert, aber immer interpretiert. Im Gegensatz dazu werden JSP-Seiten in Java-Servlets kompiliert und beim ersten Aufruf in den Speicher geladen und für alle nachfolgenden Aufrufe ausgeführt. Dies gibt JSP-Seiten Aspeed und Skalierbarkeit Vorteil gegenüber ASP-Seiten.
  • Erweiterbare Tags : JSP-Seiten verfügen über eine erweiterte Funktion, die als erweiterbare Tags bezeichnet wird. Mit diesem Mechanismus können Entwickler benutzerdefinierte Tags erstellen. Mit anderen Worten, mit erweiterbaren Tags können Sie die JSP pages-Tag-Syntax erweitern. Sie können dies nicht mit ASP-Seiten tun.
  • Wahlfreiheit : Es sei denn, Sie installieren Chili!Soft ASP, ASP-Seiten funktionieren nur mit Microsoft IIS und Personal Web Server. Die Verwendung von ASP-Seiten erfordert eine Verpflichtung zu Microsoft-Produkten, während JSP-Seiten Sie nicht an einen bestimmten Webserver oder ein bestimmtes Betriebssystem binden. JSP-Seiten werden zu einem weit verbreiteten Standard.

Einen detaillierteren Vergleich zwischen JSP-Seiten und ASP-Seiten finden Sie unter Vergleichen von JSP und ASP.

Softwareumgebung

Zum Ausführen von JSP-Seiten benötigen Sie einen Webserver mit einem Webcontainer, der den JSP- und Servlet-Spezifikationen entspricht. Der Webcontainer wird auf dem Webserver ausgeführt und verwaltet die Ausführung aller JSP-Seiten und Servlets, die auf diesem Webserver ausgeführt werden. Tomcat 3.2.1 ist eine vollständige Referenzimplementierung für die Spezifikationen Java Servlet 2.2 und JSP 1.1. Laden Sie Binärversionen von Tomcat herunter und installieren Sie sie.

So konfigurieren Sie Tomcat:

  • Setzen Sie die Umgebungsvariable JAVA_HOME auf das Stammverzeichnis Ihrer Java 2 Standard Edition (J2SE)-Installation.
  • Setzen Sie die Umgebungsvariable TOMCAT_HOMEauf das Stammverzeichnis Ihrer Tomcat-Installation.
  • Um Tomcat zu starten, verwenden Sie TOMCAT_HOME/bin/startup.bat für Windows oder startup.sh für UNIX.
    Standardmäßig wird Port 8080 abgehört.
  • Speichern Sie Ihre .jsp -Dateien in TOMCAT_HOME/webapps/examples/jsp und Ihre JavaBeans-Klassen in TOMCAT_HOME/webapps/examples/web-inf/classes.

Hinweis: Wenn Sie unter Windows arbeiten, wird beim Versuch, Tomcat zu starten, möglicherweise ein Umgebungsfehler außerhalb des Speicherplatzes angezeigt. Es gibt zwei Möglichkeiten, dies zu beheben: Ändern Sie entweder die anfängliche Speichereinstellung des DOS-Fensters auf einen Wert größer als 3200 ODER bearbeiten Sie die Konfiguration.sys-Datei und fügen Sie die folgende Zeile hinzu: SHELL=c:\PATHTO\command.com /E:4096 /P.

Funktionsweise von JSP-Seiten

Eine JSP-Seite ist im Grunde eine Webseite mit traditionellem HTML und Java-Code. Die Dateierweiterung einer JSP-Seite lautet „.jsp“ statt „.html“ oder „.htm“, und das teilt dem Server mit, dass diese Seite eine spezielle Behandlung erfordert, die von einer Servererweiterung oder einem Plug-In durchgeführt wird. Hier ist ein einfaches Beispiel:

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

Dieses Beispiel enthält traditionelles HTML und etwas Java-Code. Das Tag <% kennzeichnet den Anfang eines Scriptlets und das Tag %> kennzeichnet das Ende eines Scriptlets. Wenn date.jsp von einem Webbrowser angefordert wird, sehen Sie etwas Ähnliches wie Abbildung 1.

Abbildung 1: Anforderungsdatum.jsp

Hinter den Kulissen

Wenn diese Seite (date.jsp) aufgerufen wird, wird sie (von der JSP-Engine) in ein Java-Servlet kompiliert. Zu diesem Zeitpunkt wird das Servlet wie jedes andere Servlet von der Servlet-Engine verarbeitet. Die Servlet-Engine lädt dann die Servlet-Klasse (mit einem Klassenlader) und führt sie aus, um dynamisches HTML zu erstellen, das an den Browser gesendet werden soll (siehe Abbildung 2). In diesem Beispiel erstellt das Servlet ein Date -Objekt und schreibt es als Zeichenfolge in das out -Objekt, das ein Ausgabestream für den Browser ist.

Abbildung 2: Anforderungs- / Antwortfluss Beim Aufruf einer JSP

Bei der nächsten Anforderung der Seite führt die JSP-Engine das bereits geladene Servlet aus, es sei denn, die JSP-Seite hat sich geändert.

Skriptelemente

Im date.jsp -Beispiel wird der vollständige Date -Klassenname einschließlich des Paketnamens verwendet, was mühsam werden kann. Wenn Sie eine Instanz von Date einfach mit: Date today = new Date(); erstellen möchten, ohne den vollständigen Klassenpfad angeben zu müssen, verwenden Sie die Direktive page wie folgt:

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

Eine andere Möglichkeit, dasselbe mit dem <%= -Tag zu tun, besteht darin, Folgendes zu schreiben:

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

Wie Sie sehen, kann dasselbe mit verschiedenen Tags und Techniken erreicht werden. Es gibt mehrere JSP-Skriptelemente. Hier sind einige konventionelle Regeln, die Ihnen helfen, JSP-Skriptelemente effektiv zu verwenden:

  • Verwenden Sie <% ... %>, um Deklarationen, Ausdrücke oder andere gültige Codeausschnitte zu verarbeiten. Beispiel 1 oben ist ein Beispiel.
  • Verwenden Sie die Direktive page wie in <%@page ... %>, um die Skriptsprache zu definieren. Es kann auch verwendet werden, um import -Anweisungen anzugeben. Hier ist ein Beispiel:
    <%@page language="java" import="java.util.*" %> .
  • Verwenden Sie <%! .... %>, um Variablen oder Methoden zu deklarieren. Beispiel:
    <%! int x = 10; double y = 2.0; %>.
  • Verwenden Sie <%= ... %>, um einen Ausdruck zu definieren und das Ergebnis in String umzuwandeln. Beispiel:
    <%= a+b %> oder <%= new java.util.Date() %>.
  • Verwenden Sie die Direktive include wie in <%@ include ... %> , um den Inhalt einer anderen Datei in die JSP-Hauptdatei einzufügen. Beispiel:
    <%@include file="copyright.html" %>.

Umgang mit Formularen

Einer der häufigsten Teile von E-Commerce-Anwendungen ist ein HTML-Formular, in das der Benutzer einige Informationen wie Name und Adresse eingibt. Mit JSP werden die Daten des Formulars (die Informationen, die der Benutzer in das Formular eingibt) im request -Objekt gespeichert, das vom Browser an den JSP-Container gesendet wird. Die Anforderung wird verarbeitet und das Ergebnis wird über das response -Objekt zurück an den Browser gesendet. Diese beiden Objekte stehen Ihnen implizit zur Verfügung.

Um zu demonstrieren, wie HTML-Formulare mit JSP behandelt werden, finden Sie hier ein Beispielformular mit zwei Feldern: eines für Name und das andere für E-Mail. Wie Sie sehen, ist das HTML-Formular in einer JSP-Quelldatei definiert. Die request.getParameter -Methode wird verwendet, um Daten aus dem Formular in Variablen abzurufen, die mit JSP-Tags erstellt wurden.

Die process.jsp -Seite druckt entweder ein Formular oder die vom Benutzer bereitgestellten Informationen in Abhängigkeit von den Werten der Formularfelder. Wenn die Werte des Formulars null sind, wird das Formular angezeigt, andernfalls werden die vom Benutzer angegebenen Informationen angezeigt. Beachten Sie, dass das Formular von Code in derselben JSP-Datei erstellt und verarbeitet wird.

Beispiel 4: Prozess.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> 

Wenn process.jsp von einem Webserver angefordert wird, sehen Sie etwas Ähnliches wie Abbildung 3.

Abbildung 3: Prozess.jsp loaded

Geben Sie Ihren Namen und Ihre E-Mail-Adresse ein und klicken Sie auf Verarbeiten, um das Formular zur Verarbeitung zu senden.

Abbildung 4: Formular wird verarbeitet

Wiederverwendbare Komponenten

Das obige Beispielformular ist einfach in dem Sinne, dass nicht viel Code enthalten ist. Wenn mehr Code beteiligt ist, dann ist es wichtig, nicht Geschäftslogik mit Front-End-Präsentation in der gleichen Datei zu mischen. Die Trennung der Geschäftslogik von der Präsentation ermöglicht Änderungen auf beiden Seiten, ohne die andere zu beeinflussen. Der Produktions-JSP-Code sollte jedoch auf die Front-End-Präsentation beschränkt sein. Wie implementieren Sie den Geschäftslogikteil?

Hier kommen JavaBeans ins Spiel. Diese Technologie ist ein portables, plattformunabhängiges Komponentenmodell, mit dem Entwickler Komponenten schreiben und überall wiederverwenden können. Im Kontext von JSP enthalten JavaBeans eine Geschäftslogik, die Daten an ein Skript auf einer JSP-Seite zurückgibt, das wiederum die von der JavaBean-Komponente zurückgegebenen Daten zur Anzeige durch den Browser formatiert. Eine JSP-Seite verwendet eine JavaBean-Komponente, indem sie die von ihr bereitgestellten Eigenschaften festlegt und abruft.

Was sind die Vorteile

Die Verwendung von JavaBeans zur Erweiterung von JSP-Seiten bietet mehrere Vorteile:

  • Wiederverwendbare Komponenten: verschiedene Anwendungen können die Komponenten wiederverwenden.
  • Trennung von Geschäftslogik und Präsentationslogik: Sie können die Art und Weise ändern, wie Daten angezeigt werden, ohne die Geschäftslogik zu beeinträchtigen.
  • Schützen Sie Ihr geistiges Eigentum, indem Sie den Quellcode sicher aufbewahren.

Beispiel: Verwenden von JavaBeans mit JSP

Lassen Sie uns nun sehen, wie Sie das obige process.jsp -Beispiel ändern, um JavaBeans zu verwenden. Im obigen Formular sind dies zwei Felder: name und email. In JavaBeans werden diese Eigenschaften genannt. Zuerst schreiben Sie eine JavaBean-Komponente mit den Methoden setX und getX, wobei X der Eigenschaftsname ist. Wenn Sie beispielsweise die Methoden get und set haben: setName und getName, haben Sie eine Eigenschaft mit dem Namen name. Beispiel 5 zeigt eine FormBean-Komponente.

Gute Komponenten müssen mit anderen Komponenten verschiedener Hersteller zusammenarbeiten können. Um die Wiederverwendung von Komponenten zu erreichen, müssen daher zwei wichtige Regeln (die von der JavaBeans-Architektur auferlegt werden) befolgt werden:

  1. Ihre Bean-Klasse muss einen Konstruktor ohne Argumente bereitstellen, damit er mit Beans.instantiate erstellt werden kann.
  2. Ihre Bean-Klasse muss Persistenz unterstützen, indem Sie die Schnittstelle Serializable oder Externalizable implementiert.

Beispiel 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; } } 

Um die Komponente FormBean in der JSP-Datei zu verwenden, müssen Sie die Bean-Komponente instanziieren. Dies geschieht mit dem <jsp:useBean> -Tag. Die nächste Zeile <jsp:setProperty> wird ausgeführt, wenn die Bean instanziiert wird, und zum Initialisieren der Bean-Eigenschaften verwendet. In diesem Fall werden beide Eigenschaften ( name und email) mit einer einzigen Anweisung festgelegt. Alternativ ist es möglich, die Eigenschaften einzeln festzulegen, aber zuerst müssen Sie das Datum des Formulars abrufen. Hier ist ein Beispiel, wie Sie die Eigenschaft name:

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

Sobald die Eigenschaften mit den aus dem Formular abgerufenen Daten initialisiert wurden, werden Eigenschaftswerte zur Darstellung mit <jsp:getProperty> im else -Teil abgerufen, wie in Beispiel 6 gezeigt.

Beispiel 6: process2.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> 

Fazit

Entwickler, die an der Entwicklung hochwertiger Produktions-Webanwendungen interessiert sind, sollten sich mit Technologien vertraut machen, die nicht nur für den heutigen, sondern auch für den zukünftigen Markt anwendbar sind, nämlich JSP und XML. Im nächsten Artikel werden die Funktionen der JSP-Technologie erläutert, die sich ideal für die Arbeit mit XML eignen. und zeigen Ihnen, wie Sie JSP effektiv mit XML verwenden. JSP und XML sind eine hervorragende Kombination für Webanwendungen, die Informationen austauschen, da auf JSP-Seiten XML-Unterstützung in Form von benutzerdefinierten JSP-Tag-Bibliotheken integriert ist. Weitere Informationen dazu finden Sie im nächsten Artikel dieser Serie.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.