JSP Einführung Skripte Direktiven Tomcat 3.2 Version 1.1 Tomcat 4.0 Version 1.2 Bis jetzt Servlets … get start JBuilder JBuilder Fr. Fr. 220.220.-beim beim Jäggi Jäggi (mit (mitLegi) Legi) Webserver (Tomcat) Servlet Container generiert HTML versendet via http 1 In Zukunft … •Präsentationsschicht •Scriptprogrammierung -63 Möglichkeiten von JSP • • • • • HTML + Java in spez. Tag Mischung von HTML / XML / Java-Code Einfachheit Trennung von Darstellung und Logik Definition eigener Tags Präsentation Darstellung Implementierung Logik 2 HTTP Server CGI Request CGI Process Start Process Gen. Data Receive CGI out Process starten kostet Zeit !! Send Response JSP 3 HTTP Server Receive Request JSP Servlet current? JSP Nein JSP Container Page Compiler Parse JSP Ja Ja JSP Servlet loaded? Generate JSP Servlet Source Nein Load Servlet Compile JSP Servlet JSP PAGE Servlet Generate Response Send Response javax.servlet.jsp.HttpJspPage <%@ <%@ page page %> %> Direktiven Direktiven <%@ <%@ taglib taglib %> %> <%! <%! declaration declaration %> %> <%@ <%@ include include %> %> JSP JSP Skripte Skripte <% <% scriptlet scriptlet %> %> <%= <%= expression expression %> %> Aktionen Aktionen <jsp:useBean> <jsp:useBean> <jsp:include> <jsp:include> <jsp:fallback> <jsp:fallback> <jsp:setProperty> <jsp:setProperty> <jsp:forward> <jsp:forward> <jsp:plugin> <jsp:plugin> <jsp:getProperty> <jsp:getProperty> <jsp:params> <jsp:params> <benutzerdef.> <benutzerdef.> 4 Syntax -63 „Standard“-Syntax <% ... %> XML-Syntax <jsp:einJspTag>...</jsp:einJspTag> Skripte (scripts) / Programmierung Direktiven (directives) / Steuerung JSP Container Aktionen (actions) / Kontrollfluss Skripte Deklaration: Definition Variablen, Methode für die aktuelle Seite <%! Scriptlets: Blöcke von Code <% Expressions: Einzelne Linien von Code automatisch in Seitenausgabe eingefügt. <%= 5 Deklarationen <%! privat int x=0,y=0; privat String unit=“hallo“;%> <%! Circle a = new Circle(2.0); %> <jsp:declaration> privat int x=0,y=0; privat String unit=“hallo“; </jsp:declaration> Lokale vs. Klassen Variablen Lokal, neu pro Instanz, für einen User gedacht. <%! private int z=0; %> Klassen Variable, für alle Instanzen (alle User) <%! static public int z=0; %> 6 Ausdrücke (Expressions) <%= numguess.getHint() %> <jsp:expression> numguess.getHint() </jsp:expression> •direkte Ausgabe in den Outputstream •Stringkonvertierung über toString()oder String.valueOf() • äquivalent zu out.print(...); Spez. Ausdruck: test_expr ? true_exp : false_exp <%= (hours < 12) ? “AM“ : “PM“ %> Beispiel Script 6WULQJQDPH QXOO LIUHTXHVWJHW3DUDPHWHUQDPH QXOO^ ! <%@ include file="error.html" %> `HOVH^ IRRVHW1DPHUHTXHVWJHW3DUDPHWHUQDPH LIIRRJHW1DPHHTXDOV,JQRUH&DVHLQWHJUD QDPH DFXUD LIQDPHHTXDOV,JQRUH&DVHDFXUD^ ! 7 Direktiven -63 Enthalten globale Informationen für den Pagecompiler und auch den JSP-Container Allgemeine Definitionen 4import Anweisungen 4Tag-Bibliotheken 4Anzeige von Fehler-Seiten Erzeugen keine Ausgabe keine laufzeitrelevanten Inhalte Direktive Syntax1: <%@ page attribute1=“value1” %> Syntax2: <jsp:directive.page attribute1=“value1” /> 8 Direktive Page <%@ page [ language="MDYD" ] [ extends="SDFNDJH.FODVV" ] [ import="{SDFNDJH.FODVV| SDFNDJH.}, ..." ] [ session="WUXH|false" ] [ buffer="none|NE|VL]Hkb" ] [ autoFlush="WUXH|false" ] [ isThreadSafe="WUXH|false" ] [ info="WH[W" ] [ errorPage="UHODWLYH85/" ] [ contentType="PLPH7\SH[ ;charset=FKDUDFWHU6HW]" | WH[WKWPOFKDUVHW ,62] [ isErrorPage="true|IDOVH" ] %> Include LQFOXGHMVS <html> <head><title>An Include Test</title></head> <body bgcolor="white"> <font color="blue"> The current date and time are <%@ include file="date.jsp" %> </font> </body> </html> GDWHMVS <%@ page import="java.util.*" %> <%= (new java.util.Date() ) .toLocaleString() %> 'LVSOD\VLQWKH SDJH The current date and time are Aug 30, 1999 2:38:40 9 Implizite Objekte -63 VWHKHQLQMHGHU-63]XU9HUIJXQJ page (javax.servlet.jsp.HttpJspPage) config (javax.servlet.ServletConfig) request (javax.servlet.http.HttpRequest) response (javax.servlet.http.HttpResponse) out (javax.servlet.jsp.JspWriter) session (javax.servlet.http.HttpSession) application (javax.servlet.ServletContext) pageContext (javax.servlet.jsp.PageContext) exception (java.lang.Throwable) … Request Object javax.servlet.http.HttpServletRequest 10 Request Bsp. <% String Str = request.getParameter(“name“); %> Ihr Name ist: <%= Str %> 3UDNWLNXP 1. Servlet Geschichte beenden 2. Helo World jsp 3. Primzahlen 4. Nummer Ratespiel 5. Euro in SFr. umrechnung quellenangaben Offizielle Spezifikationen, Klassenbibliotheken & dokumentation 4http://java.sun.com/products/servlet/ 4http://java.sun.com/products/jsp/ Tutorials 4The J2EE™ Tutorial 4Java Servlet Technology / JavaServer Pages ™ Technology http://java.sun.com/j2ee/tutorial/ 4The Java ™ Tutorial 4Trail: Servlets: http://java.sun.com/docs/books/tutorial/servlets/ 4Campione M. et al.: The Java™ Tutorial Continued: The Rest of the JDK; Addison-Wesley Pub Co; ISBN: 0201485583 11 Quellenangaben (II) Tomcat, Jakarta Project 4http://jakarta.apache.org -63 Bücher: 4Hunter J. & Crawford W.: Java™ Servlet Programming; O‘Reilly & Associates, ISBN: 156592391X 4Turau, V.: Java Server Pages; dpunkt-Verlag, ISBN: 3932588665 12