Your Federal Quarterly Tax Payments are due April 15th Get Help Now >>

JSP (Java Server Pages) by wmp19316

VIEWS: 40 PAGES: 22

									                                                                         Java
                                                                         Prof. Dr. Michael Hendrix

                                JSP (Java Server Pages)


Eigenschaften

    serverseitige Sprache, hauptsächlich zu Verarbeitung von Client-Requests

    skriptähnlich

    einfach  schnelle Entwicklung von Anwendungen

    "Pure Java"

    Zugriff auf das gesamte Java-API

    Zugriff auf Datenbanken, Beans und Enterprise-Beans

    werden im JSP-Container ausgeführt

    JSP-Container wird in einem Webserver oder webfähigen Applikationsserver installiert

    i.a. übersetzt der Container die JSP-Seite vor der Ausführung in ein Servlet (Übersetzung
    kann auch manuell vorgenommen werden)
                                                                         Java
                                                                         Prof. Dr. Michael Hendrix

                                    JSP-Konstrukte


Basistypen

    Scripting Elements
          definieren Java Code  wird Teil des resultierenden Servlet

    Directives
         beeinflussen die Servlet-Struktur, z.B. import von Klassen, Vererbung etc.

    Actions
          definieren Komponenten, die benutzt werden sollen (z.B. Beans)
          steuern das Verhalten der JSP-Engine
                                                           Java
                                                           Prof. Dr. Michael Hendrix

                          Template Text: Statisches HTML


Normales HTML


Ausnahme: <% wird als <\% dargestellt
                                                            Java
                                                            Prof. Dr. Michael Hendrix

                                     Scripting Elements


fügen Java-Code in das Servlet ein

   Expressions
   Scriptlets
   Declarations


Expressions:

    Form:      <%= Ausdruck %>

    Ausdruck wird ausgewertet und in den Output eingefügt

    Current time: <%= new java.util.Date() %>

    Vordefinierte Variablen:

         request      =   HttpServletRequest
         response     =   HttpServletResponse
         session      =   HttpSession
         out          =   PrintWriter
                                                                        Java
                                                                        Prof. Dr. Michael Hendrix

Scriptlets

    Form:    <% Java Code %>

    fügt den Code in die entsprechende Servlet-Methode ein (z.B. in doGet)

    <%
    String queryData = request.getQueryString();
    out.println("Attached GET data: " + queryData);
    %>


    <% if (Math.random() < 0.5) { %>
    Have a <B>nice</B> day !
    <% } else { %>
    Have a <B>lousy</B> day !
    <% } %>

        if (Math.random() < 0.5) {
              out.println("Have a <B>nice</B> day !");
         } else {
              out.println("Have a <B>lousy</B> day !");
         }
                                                                        Java
                                                                        Prof. Dr. Michael Hendrix

Declarations

    Form:      <%! Java Code %>

    zum Definieren von z.B. Variablen oder Methoden

    werden in den Körper der Servlet-Klasse eingefügt (außerhalb der den Request
    verarbeitenden Methode)


    <%! private int accessCount = 0; %>
    Access to page since server reboot:
    <%= ++accessCount %>


    Declarations produzieren keinen Output !

    Sie kommen oft in Verbindung mit Expressions oder Scriptlets vor.
                                                        Java
                                                        Prof. Dr. Michael Hendrix

                                         Directives


beeinflussen die Gesamtstruktur einer Servlet-Klasse

Form:    <%@ directive attribute="value" %>

oder (mit mehreren Attributen)

Form:    <%@ directive attribute1="value1"
                       attribute2="value2"
                       ...
                       attributeN="valueN" %>


Zwei Typen von Directives:       1. page Directive
                                 2. include Directive
                                                                          Java
                                                                          Prof. Dr. Michael Hendrix

page Directive

    Importieren von Packages:

              <%@ page import="java.util.*" %>
              <%@ page import="java.util.*,java.awt.*" %>

    Spezifikation des MIME-Typs des Outputs

              <%@ page contentType="text/plain" %> (Default: text/html)
               <% response.setContentType("text/plain"); %>

    Infos

              <%@ page info="message" %>
              Der definierte String wird über die Methode getServletInfo wiedergegeben

    Sprache

              <%@ page language="java" %>
              zur Zeit ist "java" der einzig mögliche Wert

    u.s.w.
                                                                              Java
                                                                              Prof. Dr. Michael Hendrix

include Directive

    Einfügen von Dateien zur Übersetzungszeit

    Form:     <%@ include file="relative url" %>

    <HTML>
    <HEAD>
    <TITLE>Java Weiterbildung an der TFH Wildau</TITLE>
    </HEAD>

    <BODY>
    <%@ include file="navbar.html" %>            <!-- Navigationsleiste -->

    <!-- für diese Seite spezifischer Teil -->

    </BODY>
    </HTML>
                                                                       Java
                                                                       Prof. Dr. Michael Hendrix

                     Beispiel: Scripting Elements und Directives

<UL>
    <LI><B>Expression.</B><BR>
        Ihr Rechnername: <%= request.getRemoteHost() %>.

    <LI><B>Scriptlet.</B><BR>
        <% out.println("Attached GET data: " + request.getQueryString()); %>

    <LI><B>Declaration (plus Expression).</B><BR>
        <%! private int accessCount = 0; %>
        Access to page since server reboot: <%= ++accessCount %>

    <LI><B>Directive (plus Expression).</B><BR>
        <%@ page import = "java.util.*" %>
        Current date: <%= new Date() %>
</UL>
                                                                Java
                                                                Prof. Dr. Michael Hendrix

                        Vordefinierte Variablen


request       HttpServletRequest

response      HttpServletResponse

out           PrintWriter

session       HttpSession

application   ServletContext   ( getServletConfig().getContext() )

config        ServletConfig

pageContext   PageContext
                   neue Klasse in JSP, kapselt Server-spezifische Eigenschaften
                                                                       Java
                                                                       Prof. Dr. Michael Hendrix

                                        Actions


Konstrukte in XML Syntax zur Steuerung der Servlet-Engine


Mögliche Actions:

        jsp:include           File-Include zum Zeitpunkt des Request

        jsp:useBean           Suchen oder erzeugen eines JavaBean-Objektes

        jsp:setProperty       Setzen einer Bean-Property

        jsp:getProperty       Einfügen der Bean-Property in den Output

        jsp:forward           Weiterleiten eines Request an eine neue Seite

        jsp:plugin            Generiert Browser-spezifischen Code für das Java-PlugIn
                                                                        Java
                                                                        Prof. Dr. Michael Hendrix

jsp:include

    Form:     <jsp:include page="relative url" flush="true" />

    Einfügen einer Datei zum Zeitpunkt des Request
    (include Directive: Einfügen zum Zeitpunkt des Übersetzens)


    <OL>
        <LI><jsp:include   page="news/Item1.html"   flush="true"   />
        <LI><jsp:include   page="news/Item2.html"   flush="true"   />
        <LI><jsp:include   page="news/Item3.html"   flush="true"   />
        <LI><jsp:include   page="news/Item4.html"   flush="true"   />
    </OL>
                                                                       Java
                                                                       Prof. Dr. Michael Hendrix

jsp:useBean

    Form:     <jsp:useBean id="name" class="package.class" />

    Laden einer Java-Bean zur Nutzung in der JSP-Seite
         Instantiieren eines Objektes der Klasse package.class
         Binden an eine Referenz mit dem Namen name

    Attribute von jsp:useBean

            Âttribute                              Bedeutung
        id              Name der Referenz
        class           vollständiger Package-Name der Bean-Klasse
        scope           Context der Bean:
                             page (default)    nur aktuelle Seite
                             request           aktueller Client-Request
                             session           aktuelle Session
                             application       alle Seiten desselben ServletContext
        type            Typ der Referenz (Klasse, Mutterklasse, Interface)
        beanName        Name der Bean
                                                                Java
                                                                Prof. Dr. Michael Hendrix

Beispiel für jsp:useBean:

    <jsp:useBean id="test" class="mybeans.HelloMessage" />
    <jsp:setProperty name="test" property="message" value"HelloWorld" />
    <H1>Message: <I>
    <jsp:getProperty name="test" property="message" />
    </I></H1>


    package mybeans;
    public class HelloMessage implements Serializable
        {
        private String message = "Keine Botschaft definiert";

         public String getMessage()
             {
             return(message);
             }

         public void setMessage(String message)
             {
             this.message = message;
             }
         }
                                                                       Java
                                                                       Prof. Dr. Michael Hendrix

jsp:setProperty

    ruft die set-Methode einer Property

    Attribute von jsp:setProperty

             Attribute                               Bedeutung
         name               Name der Bean-Referenz
         property           Bean-Property (*  alle Properties)
         value (optional)   Wert für Bean-Property
                            Strings werden automatisch in entsprechenden Typ konvertiert
                            value und param dürfen nicht gemeinsam benutzt werden
         param (optional)   Wert = entsprechender Request-Parameter
                            Falls nicht vorhanden  nichts passiert

    Beispiel:

         <jsp:setProperty name="test" property="message" param="msg" />
                                                                      Java
                                                                      Prof. Dr. Michael Hendrix

jsp:getProperty

    1. ruft die get-Methode einer Property
    2. konvertiert das Ergebnis in einen String
    3. fügt den String in den Output


    Form:       <jsp:getProperty name="referenceName" property="prop" />


    Beispiel:

        <jsp:getProperty name="test" property="message" />
                                                                   Java
                                                                   Prof. Dr. Michael Hendrix

Beispiel: Ausgabe von Primzahlen

    <H1>Ausgabe von Primzahlen</H1>
    <jsp:useBean id="primeTable" class="mybeans.NumberedPrimes" />

    <jsp:setProperty name="primeTable" property="numDigits" />
    <jsp:setProperty name="primeTable" property="numPrimes" />

    <jsp:getProperty name="primeTable" property="numDigits" /> Primzahlen:
    <jsp:getProperty name="primeTable" property="numberedList" />


Ausgabe:

           Ausgabe von Primzahlen
           60 Primzahlen:

             1. . . .
             2. . . .
             3. . . .
             4. . . .
             5. . . .
                                                                       Java
                                                                       Prof. Dr. Michael Hendrix

Gerüst der Bean-Klasse zur Ausgabe von Primzahlen

    package mybeans;

    import java.util.*;

    public class NumberedPrimes implements Serializable
        {
        private Vector primes;
        private int numDigits = 50;
        private int numPrimes = 15;

         public String getNumberedList() { /* hier findet die Berechnung statt */ }
         public int getNumPrimes() { return(numPrimes); }
         public void setNumPrimes(int numPrimes) { this.numPrimes = numPrimes; }
         public int getNumDigits() { return(numDigits); }
         public void setNumDigits(int numDigits) { this.numDigits = numDigits }
         public Vector getPrimes() { return(primes); }
         public void setPrimes(Vector primes) { this.primes = primes; }
         }
                                                         Java
                                                         Prof. Dr. Michael Hendrix

jsp:forward

    zum Weiterleiten des Requests an eine andere Seite

    <jsp:forward page="/utils/ErrorReporter.jsp" />

    <jsp:forward page="<%= someJavaExpression %>" />
                                                                        Java
                                                                        Prof. Dr. Michael Hendrix

                      Kommentare und spezielle Character

       Syntax                                         Zweck
<%-- Kommentar --%>   JSP Kommentar
                      HTML Kommentar
<!-- Kommentar -->
                      Achtung: JSP Elemente werden ausgeführt
<\%                   <% im Templatetext
%\>                   %> in Scripting Elements
                      ersetzt in Attributen, die in Hochkommata (' . . . ')eingefasst sind,
\'
                      das Zeichen '
                      ersetzt in Attributen, die in Anführungszeichen (" . . . ")eingefasst
\"
                      sind, das Zeichen "
%\>                   %> in einem Attribut
<\%                   <% in einem Attribut
                                                                           Java
                                                                           Prof. Dr. Michael Hendrix

            Starten von JSWDK (Java Server Pages Web Development Kit)


1. Kopieren der JSP-Datei ins Verzeichnis webpages

2. Servlet registrieren: Policy-File webpages/Web_Inf/servlets.properties editieren

3. Pfad auf JAVA_HOME\jre\bin setzen

4. Start des Servers (Port: 8080): startserver.bat

5. URL: http://localhost:8080/name.jsp


                                    Beenden von JSWDK

Aufruf von: stopserver.bat

								
To top