• Save
Einführung in die Java-Webentwicklung - Part II - [2 of 3] - Java Server Pages - JSP  (in german)
Upcoming SlideShare
Loading in...5
×
 

Einführung in die Java-Webentwicklung - Part II - [2 of 3] - Java Server Pages - JSP (in german)

on

  • 1,220 views

Einführung in den Technologienstack der Java Enterprise Edition (JEE) zum Bauen von komplexen Webapplikationen. ...

Einführung in den Technologienstack der Java Enterprise Edition (JEE) zum Bauen von komplexen Webapplikationen.

In der Prsäntation wurden die folgenden Technologien betrachtet: reilnes HTTP-Format, Servlets, JSP's (Java Server Pages) und letzendlich JSF (2.0, Java Server Faces).

Statistics

Views

Total Views
1,220
Views on SlideShare
1,220
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Einführung in die Java-Webentwicklung - Part II - [2 of 3] - Java Server Pages - JSP  (in german) Einführung in die Java-Webentwicklung - Part II - [2 of 3] - Java Server Pages - JSP (in german) Presentation Transcript

  • Dresden · Frankfurt/Main · Leipzig · München · Hamburg · Görlitz · Berlin Einführung in die Java-Webentwicklung Part II: JEE-Webkomponenten – (2/3) – Java Server Pages
  • Einführung in die Java-Webentwicklung JEE-Webkomponenten – Java Server Pages Deployment Package (*.war) - Ergänzung
  • Einführung in die Java-Webentwicklung JEE-Webkomponenten – Java Server Pages JSP – Charakteristika
    • Fortschritt relativ zur Servlet-Technologie:
      • vereinfachen die Implementierung von View-Komponenten im MVC-Model
        • anstatt statische Markup im Java-Code => Java-Code in Markup-Seiten
        • vereinen die Welten der Java und der Markup-Sprachen
        • erste Versuche den Java-Code in Markup-Seiten hinter deklarativen Konstrukten zu „verbergen“
      • bieten die Implementierungsmittel zur Entwicklung von Markup-DSL‘s
        • (speziellen TagLib‘s, z. Bsp.: JSF-Taglib)
    • Charakteristiken
      • sind ohne Anpassungen im web.xml unter <web-root-url>/<path-to-jsp> abrufbar
      • werden zur Ausführungs-/Kompilierzeit in die Servlet‘s umgewandelt
      • starke Verankerung der Darstellung und des Verhaltens einer Ansicht
      • Navigation/Zustandsspeicherung sind Sorgen des Webentwicklers
  • Einführung in die Java-Webentwicklung JSP – Beispiel
    • <%@ page
    • language = &quot;java&quot;
    • pageEncoding = &quot;ISO-8859-1„
    • contentType = &quot;text/html; charset=ISO-8859-1&quot; %>
    • <%-- This comment is invisible for the client application --%>
    • <! DOCTYPE … >
    • < html >
      • < body >
      • < h2 > Hello <%= request.getParameter( &quot;userName&quot; ) %> ! </ h2 >
      • </ body >
    • </ html >
    Ausdruck Direktive Kommentar JEE-Webkomponenten – Java Server Pages … alle Elemente sind optional! Leere Seiten sind ebenfall zulässig! &)
  • Einführung in die Java-Webentwicklung JSP-Elemente - Überblick (1)
    • Direktiven (mehr gibt‘s nicht)
    • <%@ page … %>
    • <%@ include file = &quot;xyz.jsp&quot; %>
    • <%@ taglib uri = &quot;http://java.sun.com/jsp/jstl/core&quot; prefix = &quot;c&quot; %>
    • Kommentare
    • <%-- This comment is invisible for the client application --%>
    • Ausdrücke
    • <%= request.getParameter( &quot;userName&quot; ) %>
    • Skriptelemente
    • <% int i = 2 + 2; %>
    • <% businessSevice.doSomeThing(); %>
    JEE-Webkomponenten – Java Server Pages
  • Einführung in die Java-Webentwicklung JSP-Elemente – Überblick (2)
    • Aktionselemente (mehr gibt‘s nicht)
    • <jsp:forward page = „xyz.jsp&quot; />
    • <jsp:include page = „xyz.jsp&quot; flush = „true&quot; >
    • <jsp:param name = „userName&quot;
    • value = „ <%= request.getParameter( &quot;userName&quot; ) %> &quot; />
    • </jsp:include>
    • < jsp:useBean id = &quot;currentDate&quot; class = &quot;java.util.Date&quot; > </ jsp:useBean >
    • <jsp:setProperty name=&quot;currentDate&quot; property=&quot;hours&quot; value=&quot;12&quot; />
    • <jsp:getProperty name=&quot;currentDate&quot; property=„time&quot; />
    • Und für „embeded objects“: <jsp:plugin …>, <jsp:params …>, <jsp:fallback …>
    • und zuletzt: Deklarationen (… von der Klassen-Properties)
    • <%! final private static String SOME_CONSTANT = &quot;xxx&quot; ; %>
    JEE-Webkomponenten – Java Server Pages
  • Einführung in die Java-Webentwicklung JSP-Elemente - Implizite JSP-Objekte Aus Servlet-Teil gut bekannte do…()-Parameter request.getSession() response.getOutputStream() JEE-Webkomponenten – Java Server Pages
  • Einführung in die Java-Webentwicklung JSP-Elemente - Problemstellung
    • < html >
    • < body >
      • < h2 >
        • Hallo
        • <% final String userName = request.getParameter( &quot;userName&quot; ); %>
        • <% if (userName != null && userName.trim().length() > 0 ) { %>
        • <%= request.getParameter( &quot;userName&quot; ) %>
        • <% } else { %>
        • &lt; anonymous &gt;
        • <% } %>
        • !
      • </ h2 >
    • </ body >
    • </ html >
    JEE-Webkomponenten – Java Server Pages
    • Problem :
    • zu enge Verankerung zw. JSP und Java Code Übersichtlichkeit
      • geht verloren!
    Lösungseinsatz : JSTL (JSP Standard Tag Library) & EL (Expression Language)!
  • Einführung in die Java-Webentwicklung JSTL – Beispiele - <c:if>, <c:out>
    • <%@ taglib uri = &quot;http://java.sun.com/jstl/core&quot; prefix = &quot;c&quot; %>
    • < html >
    • < body >
      • < h2 >
        • Hallo
        • <% final String userName = request.getParameter( &quot;userName&quot; ); %>
        • < c:if test = &quot;<%= userName != null && userName.trim().length() > 0 %>&quot; >
        • < c:out value = &quot;<%= userName %>&quot; />
        • </ c:if >
        • < c:if test = &quot;<%= userName == null || userName.trim().length() == 0 %>&quot; >
        • &lt; anonymous &gt;
        • </ c:if >
        • !
      • </ h2 >
    • </ body >
    • </ html >
    JEE-Webkomponenten – Java Server Pages
  • Einführung in die Java-Webentwicklung JEE-Webkomponenten – Java Server Pages JSTL – Quick Reference # <c:out> # <c:set> # <c:remove> # <c:if> # <c:choose> # <c:when> # <c:otherwise> # <c:forEach> # <c:forTokens> # <c:import> # <c:catch> # <c:url> # <c:redirect> # <c:param> * <fmt:bundle> * <fmt:setBundle> * <fmt:message> * <fmt:param> * <fmt:requestEncoding> * <fmt:timeZone> * <fmt:setTimeZone> * <fmt:formatNumber> * <fmt:parseNumber> * <fmt:formatDate> * <fmt:parseDate> # <sql:transaction> # <sql:query> # <sql:update> # <sql:param> # <sql:dateParam> # <sql:setDataSource> # xml:out # xml:set # xml:if # xml:choose # xml:when # xml:otherwise # xml:forEach # xml:param # xml:parse # xml:transform * fn:length(input) * fn:contains(string, substring) * fn:containsIgnoreCase(string, substring) * fn:endsWith(string, suffix) * fn:escapeXml(string) * fn:indexOf(string, substring) * fn:join(array, separator) * fn:split(string, delimiters) * fn:replace(inputString, beforeSubstring, afterSubstring) * fn:startsWith(string, prefix) * fn:substring(string, beginIndex, endIndex) * fn:substringAfter(string, substring) * fn:substringBefore(string, substring) * fn:toLowerCase(string) * fn:toUpperCase(string) * fn:trim(string)
  • Einführung in die Java-Webentwicklung JSTL + EL – Beispiele - <c:if>, <c:out>
    • <%@ taglib uri = &quot;http://java.sun.com/jstl/core&quot; prefix = &quot;c&quot; %>
    • < html >
    • < body >
      • < h2 >
        • Hallo
        • < c:if test = &quot; ${ not empty param.userName} &quot; >
        • < c:out value = &quot; ${param.userName} &quot; />
        • </ c:if >
        • < c:if test = &quot; ${ empty param.userName} &quot; >
        • &lt; anonymous &gt;
        • </ c:if >
        • !
      • </ h2 >
    • </ body >
    • </ html >
    JEE-Webkomponenten – Java Server Pages
  • Einführung in die Java-Webentwicklung
    • <%@ taglib uri = &quot;http://java.sun.com/jstl/core&quot; prefix = &quot;c&quot; %>
    • < html >
    • < body >
      • < h2 >
        • Hallo
        • < c:choose >
          • < c:when test = &quot; ${ not empty param.userName} &quot; >
            • < c:out value = &quot; ${param.userName} &quot; />
          • </ c:when >
          • < c:otherwise >
            • &lt; anonymous &gt;
          • </ c:otherwise >
        • </ c:choose >
        • !
      • </ h2 >
    • </ body >
    • </ html >
    JEE-Webkomponenten – Java Server Pages JSTL + EL – Beispiele - <c:choose>, <c:when>, <c:otherwise>
  • Relational Operators < (lt), > (gt) <= (le), >= (ge) == (eq), != (ne) Einführung in die Java-Webentwicklung EL – Quick Reference
    • In Attribute Values
      • <a:tag value=&quot;${ expr }&quot;/>
      • <a:tag value=&quot;me${ expr } ${expr}&quot;/>
    • Bean Property Access
      • bean.name
      • bean[&quot;name&quot;]
    • Indexed Property Access
      • bean.property[ index ]
    • Map Property Access
      • bean.property[&quot;key&quot;]
    JEE-Webkomponenten – Java Server Pages Implicit Objects (maps) pageContext pageScope requestScope sessionScope applicationScope param paramValues header headerValues cookie initParam Arithmetic Operators +, -, *, / (div), % (mod) Logical Operators && (and), || (or), ! (not) Other Operators empty, ()
  • Einführung in die Java-Webentwicklung JSP / JSTL / EL – Übungsbeispiele
    • Die als Servlets implementierten Beispiele in die JSP‘s umwandeln
      • nach Möglichkeit JSTL / EL verwenden
    • eigene Beispiel-JSP‘s implementieren, die max. viele JSP-Elemente verwenden
      • freie Wahl des UseCase‘s
      • jsp:useBean, jsp:forward etc.
      • c:if, c:choose, c:forEach, c:out, c:set etc.
    JEE-Webkomponenten – Java Server Pages
  • Einführung in die Java-Webentwicklung JSP – Custom Tags – Überblick
    • Klassische Tags
      • = Java-Implementierung der Klassen:
        • TagSupport, BodyTagSupport
    • Tag Files
      • = JSP-Dokumente:
        • <jsp:root>, <jsp:scriptlet>, <jsp:expression>, etc.
    JEE-Webkomponenten – Java Server Pages
  • Einführung in die Java-Webentwicklung JSP – Custom Tags – Implementierung – ohne Body-Verarbeitung JEE-Webkomponenten – Java Server Pages
    • < prefix:actionName
    • attribute_1 = &quot;value_1&quot;
    • attribute_2 = &quot;value_2„
    • >
      • ... some body ...
    • </ prefix:actionName >
    • ActionNameTag extends TagSupport
      • setAttribute_1 ( &quot;value_1&quot; )
      • setAttribute_2 ( &quot;value_2&quot; )
      • doStartTag()
      • doEndTag()
    Rückgabewert der Methoden doStartTag() doEndTag() bestimmt die weiteren Verarbeitungsschritte des Tags (innerhalb des Tag-Lebenszyklus). Mögliche Werte: EVAL_BODY_* , SKIP_PAGE , SKIP_BODY
  • Einführung in die Java-Webentwicklung JSP – (general) Tag – Lebenszyklus JEE-Webkomponenten – Java Server Pages Zu implementierende Schnittstelle: TagSupport
  • Einführung in die Java-Webentwicklung JEE-Webkomponenten – Java Server Pages JSP – Custom Tags – Implementierung – mit Body-Verarbeitung
    • < prefix:actionName
    • attribute_1 = &quot;value_1&quot;
    • attribute_2 = &quot;value_2„
    • >
      • ... some body ...
    • </ prefix:actionName >
    • ActionNameTag extends BodyTagSupport
      • setAttribute_1 ( &quot;value_1&quot; )
      • setAttribute_2 ( &quot;value_2&quot; )
      • doStartTag()
      • setBodyContent( BodyContent )
      • doInitBody ()
      • doAfterBody()
      • doEndTag()
  • Einführung in die Java-Webentwicklung JSP – Iteration Tag – Lebenszyklus JEE-Webkomponenten – Java Server Pages Zu implementierende Schnittstelle: BodyTagSupport * an der Stelle der EVAL_BODY_INCLUDE kann auch EVAL_BODY_BUFFERED benutzt werden * der Body-Inhalt kann in diesem Fall folgendermaßen ermittelt werden: getBodyContent () und muss von dem Tag selbst in den OutputStream ausgegeben werden
  • Einführung in die Java-Webentwicklung JSP – Custom Tags – Publikation – WEB-INF/<tag-lib-name>.tld JEE-Webkomponenten – Java Server Pages
    • <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?>
    • < taglib xmlns = &quot;http://java.sun.com/xml/ns/javaee&quot;
    • xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; version = &quot;2.1&quot; xsi:schemaLocation = &quot;http://java.sun.com/xml/ns/javaee
    • web-jsptaglibrary_2_1.xsd&quot; >
    • < tlib-version > 0.1 </ tlib-version >
    • < short-name > … </ short-name >
      • < tag >
        • < name > actionName </ name >
        • < tag-class > ActionNameTagImpl </ tag-class >
        • < body-content > scriptless </ body-content >
        • < attribute >
          • < name > title </ name >
          • < required > true </ required >
          • < rtexprvalue > true </ rtexprvalue >
        • </ attribute >
      • </ tag >
    • </ taglib>
  • Einführung in die Java-Webentwicklung JSP – Custom Tags – Einbindung – *.jsp
    • <%@ page language = &quot;java&quot;
    • pageEncoding = &quot;ISO-8859-1&quot;
    • contentType = &quot;text/html; charset=ISO-8859-1&quot; %>
    • <%@ taglib prefix = &quot;prefix&quot; uri = &quot;/WEB-INF/<tag-lib-name>.tld&quot; %>
      • < prefix:actionName
      • attribute_1 = &quot;value_1&quot;
      • attribute_2 = &quot;value_2“
      • >
        • ... some body ...
      • </ prefix:actionName >
    JEE-Webkomponenten – Java Server Pages
  • Einführung in die Java-Webentwicklung JSP – Custom Tags – Übungsbeispiele
    • Zwei Tags so implementieren (einen mit Verarbeitung des Inhalts und einen ohne), dass die folgende „demo-tags-portlets.jsp“ eine HTML-Seite mit den in die IFRAMES geladenen „Portlets“ generiert:
    • <%@ page language = &quot;java&quot; contentType = &quot;text/html; charset=ISO-8859-1&quot;
    • pageEncoding = &quot;ISO-8859-1&quot; %>
    • <%@ taglib prefix = &quot;p&quot; uri = &quot;/WEB-INF/portlets-standalone.tld&quot; %>
    • < p:portlets-pad title = &quot;Verkehrsbetriebe&quot; >
      • < p:portlet url = &quot;http://www.lufthansa.de&quot; width = &quot;640&quot; height = &quot;240&quot; />
      • < p:portlet url = &quot;http://www.dbahn.de&quot; width = &quot;640&quot; height = &quot;240&quot; />
      • < p:portlet url = &quot;http://www.dvb.de&quot; width = &quot;640&quot; height = &quot;240&quot; />
    • </ p:portlets-pad >
    JEE-Webkomponenten – Java Server Pages
  • Einführung in die Java-Webentwicklung
    • JSP Tutorial
      • http://www.jsptutorial.org
    • Java EE 5 Tutorial - JavaServer Pages Technology (Chapter 5)
      • http://java.sun.com/javaee/5/docs/tutorial/doc/bnagx.html
    • Java EE 5 Tutorial - JavaServer Pages Standard Tag Library (Chapter 7)
      • http://java.sun.com/javaee/5/docs/tutorial/doc/bnakc.html
    • Java EE 5 Tutorial - Custom Tags in JSP Pages (Chapter 8)
      • http://java.sun.com/javaee/5/docs/tutorial/doc/bnalj.html
    JEE-Webkomponenten – Java Server Pages Weiterführende Informationen und Referenzen