JSP - Java Server Pages



Ähnliche Dokumente
JSP - Java Server Pages

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

JSP Direktiven. Präprozessor-Anweisungen, die in die JSP-Datei eingebettet sind und vor dem eigentlichen Übersetzungsvorgang ausgeführt JSP

Java Server Pages (JSP)

Java - Webapplikationen

Web- Applikationen. in Java-Web

JavaServer Pages. Seminar Medientechnik Prof. Hußmann Vortrag: Wilhelm Lechner Übersicht

Java Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov

Programmierung von Client/Server- Anwendungen

Dynamische Webseiten mit JavaServer Pages (JSP)

DB-Aspekte des E-Commerce Schwerpunkt: Techniken. Servlets und JavaServer Pages

JSP und Servlet Programmierung

Einleitung JavaServer Pages Erweiterungsmechanismen Beispiel Fazit. JavaServer Pages. Seminar Webprogrammierung WS04/05. Timothy Burk. 6.

Web 2.0 Software-Architekturen

Grundlagen der. Marc Monecke

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Web 2.0 Software-Architekturen

Es wird das Struts <html:option> Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht.

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS 2015 PHP MVC. Dr. Christian Senger. PHP MVC 1 von 21

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel

Java Server Pages. Seminar Webtechnologien SS 2003 Hendrik Steller

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Komponenten & Hypermedia Seminar Prof. Dr. Frank Thiesing Struts Java-Framework für Web-Applikationen. Referenten: Fabian Bartelt Jens de Witt

6.9 Java Server Pages

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Softwareentwicklung mit JAVA EE

Webanwendungen mit Java und JavaServerPages

Große Übung Praktische Informatik 1

Enterprise JavaBeans Überblick: 9. Architektur der Web-Schicht. 9.1 Einleitung 9.2 Front-Controller Servlet 9.3 Java Server Pages 9.

Servlet-zentrierte Architektur von Web-Anwendungen mit Java Servlets, Java Server Pages (JSPs) und Java Beans

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck

Vorkurs C++ Programmierung

Praktikum Datenbanken und verteilte Systeme SS Java Server Pages und Servlets -

FHZ. Servlets/JSP. Lernziele. Hochschule Technik+Architektur Luzern. Inhalt

Inhaltsverzeichnis. jetzt lerne ich

Java zur Realisierung von Internetanwendungen

Web-Anwendungsentwicklung mit dem Delivery Server

Einführung in Javadoc

Softwaretechnik. Servlets / JSP Thomas Perschke

Struts 2 Das Imperium schlägt zurück?

Einführung in die Programmierung

Grails. Weiterführende Themen zu Internet- und WWW-Technologien. Matthias Springer. 06. Juni 2011

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Sitzungszustand. Vorläufige Version 309 c 2005 Peter Thiemann

Web-Programmierung (WPR)

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Datenbanksysteme SS 2007

Application Frameworks

Hauptseminar Informatik. Java Web Frameworks Alexander Löser

Webbasierte Informationssysteme

Java zur Realisierung von Internetanwendungen

Java Beans. von Raoul Schneider

Themen. Web Service - Clients. Kommunikation zw. Web Services

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Existierende Systeme I Bibliotheken & Frameworks

Javakurs zu Informatik I. Henning Heitkötter

Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen. KNF Kongre 2001 Henning P. Schmiedehausen

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

Dynamik bis zur DB-Interaktion. Marc Schanne. CGI Möglichkeiten

JSP mit Tomcat. jetzt lerne ich. Der einfache Einstieg ins dynamische Webpublishing mit JavaServer Pages. Markt+Technik

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Programmieren in Java

Unsere Webapplikation erweitern

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

FileMaker und PHP Workshop

Java Einführung Packages

Prinzipien Objektorientierter Programmierung

C O C O O N. Wo ist Cocoon in die Apache Projekte einzureihen?

Studentische Lösung zum Übungsblatt Nr. 7

Java Einführung Collections

Fortgeschrittene Servlet- Techniken. Ralf Gitzel

Java Webentwicklung (mit JSP)

Kapitel 5 Serverseitige Technologien

Objektorientierte Programmierung

Web 2.0 Software-Architekturen

Das Model View Controller (MVC) Konzept

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Datenbanken: Servlets und JSP

Datenbanksysteme SS 2007

Überblick über Internet-Technologien

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

C# im Vergleich zu Java

Die Core-Tags. Die Core-Tags werden über den Tag Lib Desktiptor c.tld beschrieben und bekommen den Namensraum c zugewiesen.

Schritt 4: Hallo Enterprise Bean

Datenverwaltung Darstellung Interaktion. WebPoint. Ein Framework zur Erstellung von webbasierten Verkaufsanwendungen. Torsten Walter. 10.

Applet Firewall und Freigabe der Objekte

MCRServlet Table of contents

Einleitung. Gliederung. Struts-Framework. Model-View-Controller-Pattern

Java zur Realisierung von Internetanwendungen

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Programmieren von Webinformationssystemen

Multimedia im Netz Wintersemester 2011/12

Transkript:

JSP - Java Server Pages 1

Java Server Pages Grundlagen Syntax, Lebenszyklus, Anwendung Eingebetteter Java-Code, Fehlerbehandlung, Java Beans Formularverarbeitung, benutzerdef. Tags, Sonstiges Alternativen zu JSPs, Zusammenfassung, Links, 2

Java Server Pages Grundlagen Servlets Dynamische Erzeugung von HTML-Seiten Flexibel, erweiterbar, volle Funktionalität von Java Probleme mit Servlets Unübersichtlich (out.print("<html>");) HTML Design Tools können nicht direkt verwendet werden Wartung von Servlet-Seiten erfordert Java-Programmierer Java Server Pages JSP Java als Skript -Sprache Basierend auf der Servlet-Technologie JSPs sind Text-Dokumente.jsp Beschreiben die Verarbeitung des Requests Erzeugen den Response 3

Java Server Pages Beispiel Clock.jsp <%@ page import="java.util.*" %> <% GregorianCalendar clock = GregorianCalendar.getInstance(); %> <html> <head> <title>clock</title> </head> <body> Die aktuelle Zeit ist: <%= clock.gettime() %> <br> Der Server steht in Zeitzone <%= clock.gettimezone() %> </body> </html> Hilfe zu HTML, JavaScript siehe http://de.selfhtml.org/ 4

Java Server Pages Syntax Text-, HTML- oder XML-Dokument Dateiname *.jsp Direktiven <%@ page import="java.util.*" %> Eingebetter Java-Code <% if ( x!= null ) {... } %> <%= Math.PI %> Actions (vordefinierte Tags) Namensraum jsp <jsp:include page="menu.jsp" flush="true" /> Benutzerdefinierte Tags <security:check role="admin" /> Start und Endtag von Elmenten (Scriptlets, Actions..) müssen immer im selben physikalischen File sein 5

Java Server Pages Lebenszyklus Transparente Übersetzung in Servlets <%@ page... %> class Clock_jsp <html> extends... HttpServlet { } Übersetzung Ausführung <html>... JSP-Seite: Clock.jsp Servlet HTML-Seite Siehe generierte JSP Servlets (Windows Eclipse 3.3 Tomcat 6): MY_WORKSPACE\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\Beispiele06\org\apache\jsp\Clock_jsp.java 6

Java Server Pages Servlet generiert aus Clock.jsp import java.util.gregoriancalendar; public final class Clock_jsp extends org.apache.jasper.runtime.httpjspbase { public void _jspservice(httpservletrequest request, HttpServletResponse response) { out.write("\n"); out.write("<!doctype html PUBLIC "); out.write("\r\n"); out.write("<html>\n"); out.write("<head>\n"); out.write("<meta http-equiv=\"content-type\" "); out.write("<title>clock</title>\n"); out.write("</head>\n"); out.write("<body>\n"); out.write("die Zeit ist: <b>"); out.print( GregorianCalendar.getInstance().getTime() ); out.write("</b>\r\n"); } 7

Java Server Pages Webapplikation JSP Container (konform zu Servlet Container) Tomcat, WebSphere, JBoss Java Development Kit am Server Compiler! JSP Seiten, die Requests abarbeiten und dynamische Inhalt generieren Servlets, die Requests abarbeiten und dynamische Inhalt generieren Serverseitige JavaBeans Komponenten die Verhalten und Zustand kapseln Statische Resourcen HTML, DHTML, XHTML, XML, Images 8

Java Server Pages Grundlagen Syntax, Lebenszyklus, Anwendung Eingebetteter Java-Code, Fehlerbehandlung, Java Beans Formularverarbeitung, benutzerdef. Tags, Sonstiges Alternativen zu JSPs, Zusammenfassung, Links, 9

Java Server Pages Eingebetter Java-Code 1/3 Deklarationen <%!... %> An beliebiger Stelle der JSP Instanzvariablen des Servlet <%! int k = 0; %> Methoden des Servlet <%! String methode1(int i) { if ( i % 2 == 0 ) return "gerade"; else return "ungerade"; } %> Innere Klassen des Servlet <%! class A extends Object {... } %> 10

Java Server Pages Eingebetter Java-Code 2/3 Anweisungsfragmente (Scriptlets) <%... %> In HTML eingebetteter Java-Code, an beliebiger Stelle, z.b. <% if(calendar.getinstance().get(calendar.am_pm) == Calendar.AM) { %> Guten Morgen <% } else { %> Guten Tag <% } %> Exceptions mit try/catch abfangen, oder an eine Error- JSP weiterdelegieren Lokale Variablen <% int i; %> Direkte Ausgabe in die HTML-Seite: implizite Variable "out" <% if(calendar.getinstance().get(calendar.am_pm) == Calendar.AM) { out.print("guten Morgen"); } else { out.print("guten Tag"); } %> 11

Java Server Pages Eingebetter Java-Code 3/3 Ausdrücke <%=... %> Der Ergebnis wird in die HTML-Seite eingefügt, z.b. <FORM> <INPUT NAME="uid" VALUE="<%= user.getid() %>">... entspricht...<% out.print( user.getid() ); %>... Kommentare <%--... --%> Im JSP: <%--... --%> In Scriptlets: <% /*... */ %> HTML-Kommentare (<!--... -->) werden in die HTML-Seite übernommen! Escape Im HTML-Text: <\% statt <% In Skripten: %\> statt %> 12

Java Server Pages Beispiel: Datenbankabfrage <%@ page errorpage="errorpage.jsp" import="java.util.*,java.sql.*" session="false" %> <html><body> <table border="1" bgcolor="#ccffff" cellpadding="3" cellspacing="0"> <tr><th>nummer</th><th>name</th><th>email</th></tr> <% // Benutzereintraege abfragen und anzeigen BenutzerDB db = new BenutzerDB(); Iterator it = db.getbenutzerlistorderedbyname().iterator(); while(it.hasnext()) { Benutzer b = (Benutzer)it.next(); %> <tr><td align= right"><%= b.getnr() %></td> <td><%= b.getname() %></td> <td><%= b.getemail() %></td> </tr> <% } %> </table> </body></html> 13

Java Server Pages Implizierte Objekte Name request response pagecontext session application out config page exception Typ HttpServletRequest HttpServletResponse javax.servlet.jsp.pagecontext HttpSession ServletContext javax.servlet.jsp.jspwriter ServletConfig javax.servlet.jsp.jsppage (this) Throwable 14

Direktive include Java Server Pages Steuerung der JSP-Übersetzung Einbinden von Seitenteilen (auch JSPs) zur Übersetzungszeit, z.b. für Menüs oder Zugriffsberechtigungsprüfung: <%@ include file="secure.jsp" %> Direktive page Legt die globalen Eigenschaften einer JSP-Seite fest, z.b. <%@ page import="java.io.*, java.util.*" import="mypackage.*" info="meine ServerPage" errorpage="fehler.jsp" %> Weitere Attribute (und Defaultwerte): session (true), iserrorpage (false), isthreadsafe (true), contenttype ("text/html;charset=iso-8859-1"), buffer, autoflush, extends, language 15

Java Server Pages Fehlerbehandlung Übersetzungsfehler Ausgabe der Übersetzungsfehler Nicht behandelte Exceptions Ausgabe der Exception und des Ausführungsstack Explizite Fehlerseite Ausgangsseite: <%@ page errorpage="fehler.jsp" %>... Im Ausnahmefall automatisches forward an die Fehlerseite, z.b. fehler.jsp: <%@ page iserrorpage="true" %> <% log("es ist ein Fehler aufgetreten!", exception); %> <H1>Ein Fehler ist aufgetreten</h1> <%= exception.getmessage() %>... 16

Java Server Pages Dyn. Einbinden von Seitenteilen Aktion include z.b.: <jsp:include page="menu.jsp" flush="true" /> Pfad relativ oder absolut zum Root-Verzeichnis der Web- Applikation GET doc.jsp JSP-Server doc.jsp... <jsp:include page="doc2.jsp" />... doc2.jsp 17

Java Server Pages Dynamisches Weiterleiten Aktion forward z.b.: <jsp:forward page="special.jsp" /> Die bisherige Ausgabe wird gelöscht IllegalStateException, falls der Ausgabepuffer schon voll war JSP-Server doc.jsp GET doc.jsp... <jsp:forward page="doc2.jsp" />... doc2.jsp 18

Parameterübergabe Java Server Pages Parameterübergabe Attribute des request-objektes, z.b. request.setattribute("counter", "1"); Alternative Schreibweise: Aktion param, z.b.: <jsp:forward page="step2.jsp"> <jsp:param counter="1"/> </jsp:forward> Abfragen der Parameter String i = request.getattribute("counter"); 19

Java Server Pages Beispiel: "verteiler.jsp" 1/3 20

Java Server Pages Beispiel: "verteiler.jsp" 2/3 <%@ page errorpage="errorpage.jsp" session="false" import="java.util.*" %> <%! //Deklarationen Hashtable passwd = new Hashtable(); public void jspinit() { // Passworttabelle aus Datenbank lesen... } %> <% //Eingabeprüfung boolean korrekteeingabe = false; String name = request.getparameter("name"); 21

Java Server Pages Beispiel: "verteiler.jsp" 3/3 if ( name == null name.length() == 0 ) { request.setattribute("fehler", "name"); } else if (!passwd.containskey(name)) { request.setattribute("fehler", "unbekannt"); } else if (!passwd.get(name).equals( request.getparameter("passwd"))) { request.setattribute("fehler", "inkorrekt"); } else korrekteeingabe = true; if (!korrekteeingabe) { //Zurück zur Formularseite %> <jsp:forward page="produktinfo.jsp"/> <% } else { //Weiter zu den Details %> <jsp:forward page='<%= "/modelle/" + request.getparameter("modell") %>' /> <% } %> 22

Java Server Pages Grundlagen Syntax, Lebenszyklus, Anwendung Eingebetteter Java-Code, Fehlerbehandlung, Java Beans Formularverarbeitung, benutzerdef. Tags, Sonstiges Alternativen zu JSPs, Zusammenfassung, Links, 23

Java Server Pages Java Beans Grundlagen Wiederverwendbare Software-Komponente (Intention) z.b. DB-Zugriffskomponente, Benutzer-Daten Konventionen Konstruktor ohne Argumente Eigenschaften (Properties) -> get/set-methoden Ereignisse (Events und EventListener) Methoden Unterstützung durch JSP-Tags <jsp:usebean> <jsp:getproperty> <jsp:setproperty> 24

Java Server Pages Verwendung von Java Beans 1/3 Vereinbarung einer Bean <jsp:usebean> z.b.: <jsp:usebean id="database" class="mybeans.mysql_db" scope="application" /> Eine lokale Variable "database" wird definiert und initialisiert Bean-Klasse: praktikum/web-inf/classes/mybeans/mysql_db.class Gültikeitsbereiche (scope) page - lokale Variable in _jspservice (default) request - Attribut des HttpServletRequest session - Attribut der HttpSession application - Attribut des ServletContext 25

Java Server Pages Verwendung von Java Beans 2/3 Initialisierung beim erstmaligen Zugriff auf eine Bean: <jsp:usebean id="db" class="beans.mysql_db" scope="application"> <% db.seturl("jdbc:mysql://server:3306/db"); db.connect(); %> </jsp:usebean> Vorkonfigurierte Beans Design Time: Bean erzeugen, konfigurieren, und speichern (serialisieren), z.b.:... MySQL_DB mydb=new MySQL_DB("jdbc:mysql://server:3306/db"); ObjectOutputStream os = new ObjectOutputStream( new FileOutputStream("mydb.ser")); os.writeobject(mydb); Run Time: Bean laden (deserialisieren), z.b.: <jsp:usebean id="db" beanname="mydb.ser" type="beans.db" /> 26

Java Server Pages Verwendung von Java Beans 3/3 Verwenden eines Beans in Skripten... <%= bean.getdescription() %>... Ausgabe einer Eigenschaft <jsp:getproperty name="bean" property="description"/> Setzen von Eigenschaften <jsp:setproperty name="bean" property="description" value="ich bin ein Beaner" /> Beliebige Objekt-Werte: <jsp:setproperty name="bean" property="date" value="<%= new java.util.date() %>" /> Eigenschaften von Request-Parametern übernehmen: <jsp:setproperty name="bean" property="name" param="n"/> <jsp:setproperty name="bean" property="name" /> <jsp:setproperty name="bean" property="*" /> 27

Java Server Pages Beispiel: "User Editor" 1/5 SelectUser.jsp Edit 28

User.java package beans; public class User { int nr; String name, pass; Java Server Pages Beispiel: "User Editor" 2/5 public User() { nr = 0; name = ""; pass = ""; } }... // get & set Methods 29

UserEditor.jsp Java Server Pages Beispiel: "User Editor" 3/5 <%@ page errorpage="userupdatefailed.jsp" %> <jsp:usebean id="userdao" class="daos.userdao"scope="application"/> <jsp:usebean id="user" class="beans.user" scope="request"/> <jsp:setproperty name="user" property="nr" param="nr"/> <% if ( user.getnr() == 0 ) throw new Exception("No usernr to load"); else userdao.loaduser(user); %> <HTML> <HEAD> <TITLE> User Editor </TITLE> </HEAD> <BODY> <H1> User Editor </H1>... 30

Java Server Pages Beispiel: "User Editor" 4/5 UserEditor.jsp <% String errormsg = (String)(request.getAttribute("errorMsg")); if ( errormsg!= null ) { %> <FONT COLOR="red"><B><%= errormsg %></B><P></FONT> <% } %> <FORM METHOD=POST ACTION="UserUpdate.jsp"> <INPUT TYPE=HIDDEN NAME="nr" VALUE="<%= user.getnr() %>"> Name: <INPUT NAME="name" VALUE="<%= user.getname() %>"><BR> Password: <INPUT NAME="pass" VALUE="<%= user.getpass() %>"><BR> <INPUT TYPE=SUBMIT NAME="update" VALUE="Update User Data"> </FORM> <FORM METHOD=POST ACTION="UserDelete.jsp"> <INPUT TYPE=HIDDEN NAME="nr" VALUE="<%= user.getnr() %>"> <INPUT TYPE=SUBMIT NAME="delete" VALUE="Delete User"> </FORM> Back to <A HREF="UserList.jsp">User List</A> </BODY></HTML> 31

UserUpdate.jsp Java Server Pages Beispiel: "User Editor" 5/5 <%@ page errorpage="userupdatefailed.jsp" %> <jsp:usebean id= userdao" class="daos.userdao"scope="application"/> <jsp:usebean id="user" class="beans.user" scope="request"/> <jsp:setproperty name="user" property="*"/> <% //Check input parameters String errormsg; if ( errormsg!= null ) { request.setattribute("errormsg", errormsg); %> <jsp:forward page="usereditor.jsp" /> <% } //Update user in db userdao.updateuser(user); %> <jsp:forward page="usersuccess.jsp" /> 32

Typische Schritte Java Server Pages Formularverarbeitung 1/3 (1) Präsentation des Formulars (2) Überprüfung der Eingabe (Vollständigkeit, Plausibilität) (3) Verarbeitung der Daten durch den Server (4) Rückmeldung (Erfolg oder Misserfolg) MVC-Pattern mit Servlets und JSPs Model enthält Formulardaten --> Java Bean, z.b. User.java View zeigt die Model-Daten an --> JSP, z.b. UserEditor.jsp Controller verarbeitet die Eingaben --> Servlet oder JSP, z.b. UserUpdate.jsp Vereinfachtes Modell: Controller und View und in einem JSP vereint (http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssjjspmvc.html) 33

Java Server Pages Formularverarbeitung 2/3 Klassisches MVC-Konzept steuert View liest aus useraction modelchanged Controler verändert Model 34

Java Server Pages Formularverarbeitung 3/3 (4b) Erfolgsseite aufrufen :UserUpdate.jsp (1) Eingabeformular erzeugen <jsp:usebean id="user" class="beans.user" scope="request" />... <jsp:getproperty name="user" property="name" />... :UserEditor.jsp View (2) Eingaben verarbeiten (4a) Darstellung aufrufen Zustand abfragen <jsp:usebean id="user" class="beans.user" scope="request" />... <jsp:setproperty name="user" property="*" />... Controller (3) Zustand anpassen user:user nr=1 name="hugo" pass="zzz"... Model 35

Vordefinierte Tags Java Server Pages Benutzerdefinierte Tags <jsp:usebean>, <jsp:getproperty>, <jsp:setproperty>, <jsp:include> Komplexere Funktionen nur mit Java-Skripten Erweiterte Funktionalität durch benutzerdefinierte Tags z.b. Datenbankzugriff, Berechtigungsprüfung,... Tag kann ohne Programmierkenntnisse verwendet werden Java Beans zur Implementierung von Tags Interface javax.servlet.jsp.tagext.tag, etc. Tag-Attribut => Bean-Property Einfache Tags können auf Beans zugreifen, HTML ausgeben, etc. Komplexe Tags realisieren Schleifen, deklarieren Variablen,... 36

Java Server Pages Bsp: Berechtigungsprüfung 1/2 Anwendung in JSP: <security:check role="admin"/> Implementierung: /WEB-INF/classes/sec_tags/SecurityCheckTag.java package sec_tags; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.io.*; import java.util.*; public class SecurityCheckTag extends TagSupport { public static String defaultrole="user"; private String role; public SecurityCheckTag() { role = defaultrole; }... 37

Java Server Pages Bsp: Berechtigungsprüfung 2/2 public void setrole(string r) { role = r; } } public int dostarttag() throws JspException { String sessionrole = null; try { sessionrole = (String)pageContext. getattribute("role", PageContext.SESSION_SCOPE); } catch (IllegalArgumentException e) {} if ( sessionrole == null ) throw new JspException("Access Denied - Not Authenticated"); if (!role.equals(sessionrole) ) throw new JspException("Access Denied - Not Authorized"); return SKIP_BODY; //ignore any nested data } 38

Java Server Pages Tag-Bibliotheken Deklaration der verwendete Tag Libraries in JSP, z.b.: <%@ taglib uri="/web-inf/security.tld" prefix="security" %> Definition im Tag Library Descriptor, z.b.: security.tld <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>security</short-name> <uri>http://www.ifs.uni-linz.ac.at/java/security-taglib</uri> <description>a simple library for security features</description> <tag> <name>check</name> <tag-class>sec_tags.securitychecktag</tag-class> <description>checks login</description> <attribute> <name>role</name> <required>true</required> </attribute> </tag> </taglib> 39

Java Server Pages Grundlagen Syntax, Lebenszyklus, Anwendung Eingebetteter Java-Code, Fehlerbehandlung, Java Beans Formularverarbeitung, benutzerdef. Tags, Sonstiges Alternativen zu JSPs, Zusammenfassung, Links, 40

Java Server Pages Integration von Servlets und JSPs Zugriff auf Java Beans in Servlets Beans mit scope = "page": sind privat in der JSP Beans mit scope = "request": doget(httpservletrequest request, HttpServletResponse response) {... bean = (BeanType)request.getAttribute("beanName"); Beans mit scope = "session": HttpSession session = request.getsession(); bean = (BeanType)session.getAttribute("beanName"); Beans mit scope = "application": bean = (BeanType)getServletContext().getAttribute("beanName"); forward und include JSPs und Servlets können sich gegenseitig aktivieren Jakarta Tomcat: JSPs sind durch ein JspServlet realisiert (org.apache.jasper.servlet.jspservlet) 41

Java Server Pages Alternativen zu JSP Einfachere Skript-Sprachen als Java z.b.: <ul> #foreach( $product in $allproducts ) <li>$product</li> #end </ul> Servlet-basierte Skriptsprachen: WebMacro, Tea, Velocity,... (http://www.servlets.com/tools/index.html) PHP: http://www.php.net/... Java Web-Application Frameworks Struts: http://struts.apache.org/ Cocoon XML publishing framework : http://cocoon.apache.org/ JSF (Java Server Faces) http://java.sun.com/javaee/javaserverfaces/ Grails http://grails.codehaus.org/ 42

Java Server Pages Zusammenfassung und Links Java Server Pages HTML-Dokumente (statische Fragmente) Eingebettete Java-Skripte (dynamische Fragmente) Automatische Übersetzung in Servlets Verwendung von Java-Beans MVC-Pattern Syntax Reference http://java.sun.com/products/jsp/syntax/2.0/syntaxref20.html Links JavaBeans Tutorial: http://www.jsptutorial.org/ Informationen zu Servlets und JSP: http://www.servlets.com/index.tea http://www.jsp-develop.de/ Java und MVC-Architektur: http://de.wikipedia.org/wiki/model_view_controller 43

Ende der 6. Übung 44