JSP Einführung Skripte Direktiven Tomcat 3.2 Version 1.1 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
Möglichkeiten von JSP HTML + Java in spez. Tag Mischung von HTML / XML / Java-Code Einfachheit Trennung von Darstellung und Logik Definition eigener Tags JSP Präsentation Darstellung Implementierung Logik
CGI HTTP Server CGI Process Process starten kostet Zeit !! Request Start Process Gen. Data Receive CGI out Process starten kostet Zeit !! Send Response
JSP
Generate JSP Servlet Source HTTP Server JSP Receive Request JSP Container Page Compiler JSP Servlet current? Nein Parse JSP Ja JSP Servlet loaded? Ja Generate JSP Servlet Source Nein Load Servlet Compile JSP Servlet JSP PAGE Servlet Generate Response Send Response
javax.servlet.jsp.HttpJspPage
Syntax JSP „Standard“-Syntax <% ... %> XML-Syntax <jsp:einJspTag>...</jsp:einJspTag> Skripte (scripts) / Programmierung Direktiven (directives) / Steuerung JSP Container Aktionen (actions) / Kontrollfluss JSP
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 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 JSP
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) … JSP
Request Object javax.servlet.http.HttpServletRequest
Request Bsp. Praktikum Servlet Geschichte beenden Helo World jsp <% String Str = request.getParameter(“name“); %> Ihr Name ist: <%= Str %> Praktikum Servlet Geschichte beenden Helo World jsp Primzahlen Nummer Ratespiel 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 Bücher: JSP http://jakarta.apache.org Bücher: Hunter J. & Crawford W.: Java™ Servlet Programming; O‘Reilly & Associates, ISBN: 156592391X Turau, V.: Java Server Pages; dpunkt-Verlag, ISBN: 3932588665 JSP