JSP Einführung Skripte Direktiven Tomcat 3.2 Version 1.1 Tomcat 4.0 Version 1.2 JBuilder Fr. 220.- beim Jäggi (mit Legi) Bis jetzt Servlets … get start Webserver (Tomcat) Servlet Container generiert HTML versendet via http In Zukunft … •Präsentationsschicht •Scriptprogrammierung JSP 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 HTTP Server CGI Request CGI Process Start Process Gen. Data Receive CGI out Send Response Process starten kostet Zeit !! JSP HTTP Server Receive Request JSP Servlet current? JSP Nein Ja Ja JSP Servlet loaded? Nein Load Servlet Generate Response Send Response JSP Container Page Compiler Parse JSP Generate JSP Servlet Source Compile JSP Servlet JSP PAGE Servlet javax.servlet.jsp.HttpJspPage <%@ page %> Direktiven <%@ taglib %> <%! declaration %> <%@ include %> JSP Skripte <% scriptlet %> <%= expression %> Aktionen <jsp:useBean> <jsp:include> <jsp:fallback> <jsp:setProperty> <jsp:forward> <jsp:plugin> <jsp:getProperty> <jsp:params> <benutzerdef.> Syntax JSP „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. <%= 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; %> 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 <% String name = null; if (request.getParameter("name") == null) { %> <%@ include file="error.html" %> <% } else { foo.setName(request.getParameter("name")); if (foo.getName().equalsIgnoreCase("integra")) name = "acura"; if (name.equalsIgnoreCase( "acura" )) { %> Direktiven JSP Enthalten globale Informationen für den Pagecompiler und auch den JSP-Container Allgemeine Definitionen import Anweisungen Tag-Bibliotheken Anzeige von Fehler-Seiten Erzeugen keine Ausgabe keine laufzeitrelevanten Inhalte Direktive Syntax1: <%@ page attribute1=“value1” %> Syntax2: <jsp:directive.page attribute1=“value1” /> Direktive Page <%@ page [ language="java" ] [ extends="package .class" ] [ import="{package .class | package.*}, ..." ] [ session="true|false" ] [ buffer="none|8kb|sizekb" ] [ autoFlush="true|false" ] [ isThreadSafe="true|false" ] [ info="text" ] [ errorPage="relativeURL" ] [ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ] [ isErrorPage="true|false" ] %> Include include.jsp: <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> date.jsp: <%@ page import="java.util.*" %> <%= (new java.util.Date() ) .toLocaleString() %> Displays in the page: The current date and time are Aug 30, 1999 2:38:40 Implizite Objekte JSP stehen in jeder JSP zur Verfügung 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 Request Bsp. <% String Str = request.getParameter(“name“); %> Ihr Name ist: <%= Str %> Praktikum 1. Servlet Geschichte beenden 2. Helo World jsp 3. Primzahlen 4. Nummer Ratespiel 5. Euro in SFr. umrechnung quellenangaben Offizielle Spezifikationen, Klassenbibliotheken & dokumentation http://java.sun.com/products/servlet/ http://java.sun.com/products/jsp/ Tutorials The J2EE™ Tutorial Java Servlet Technology / JavaServer Pages ™ Technology http://java.sun.com/j2ee/tutorial/ The Java ™ Tutorial Trail: Servlets: http://java.sun.com/docs/books/tutorial/servlets/ Campione M. et al.: The Java™ Tutorial Continued: The Rest of the JDK; Addison-Wesley Pub Co; ISBN: 0201485583 Quellenangaben (II) Tomcat, Jakarta Project http://jakarta.apache.org JSP Bücher: Hunter J. & Crawford W.: Java™ Servlet Programming; O‘Reilly & Associates, ISBN: 156592391X Turau, V.: Java Server Pages; dpunkt-Verlag, ISBN: 3932588665