View
225
Download
3
Category
Preview:
Citation preview
1
JavaServer Pages
Stephan Baldes07.01.2008
2
JavaServer Pages
Einführung07.01.2008
3
Was sind JavaServer Pages ?HTML: begruessung.html
4
Was sind JavaServer Pages ?Servlet: Begruessung.java
5
Was sind JavaServer Pages ?JSP: begruessung.jsp
6
ArchitekturJSP
7
JSP versus Servlet
• Trennung zwischen Darstellung (HTML) und Logik (Java).
• HTML-Code wie gewohnt verwenden. Verwendung von HTML-Editor, CSS, ... möglich
• Übersetzung in ein Servlet beim ersten Aufruf der Seite durch den Servlet-Container. Änderungen der JSP Seite durch den Entwickler werden automatisch übersetzt.
• Keine Trennung von Darstellung und Logik.
• HTML-Code wird im Java-Code generiert: out.println("<h1>hello</h2>");
• Klassen müssen vom Entwickler compiliert und auf dem Server deployed werden.
JSP Servlet
8
JSP/Servlet versus Applet
• JSP/Servlet– Ausführung auf dem
Server– Ergebnis: HTML Seite
• Applet– Ausführung auf dem
Client – Ergebnis: interaktives
Programm
9
JSP SyntaxBeispiel
10
JSP SyntaxBeispiel Ausgabe
11
JSP Syntax
• Direktive– <%@ ... %>: Eigenschaften und Includes.
• Einstellung seitenbezogener Optionen
• Externe Datei einfügen
12
JSP Syntax• Skriptelemente
– <%! ... %>: Deklarationen• Variablen- und Methodendeklarationen
– <% ... %>: Skriptlet• Beliebiger Quelltext
– <%= ... %>: Ausdrücke• Ausdruck wird in einen String konvertiert und in den
Seitentext eingefügt.• Beispiele: <%=i%>, <%=new Date()%>, <%=methode()
%>• Achtung, kein abschließendes Semikolon.
– <%-- ... --%>: Kommentare
13
JSP Syntax• Aktionselemente
– <jsp:useBean>: JavaBean-Komponente verfügbar machen.
– <jsp:getProperty>: Wert einer JavaBean-Eigenschaft abfragen.
– <jsp:setProperty>: Wert von JavaBean-Eigenschaften festlegen.
– <jsp:include>: Einfügen einer anderen JSP-Seite.– <jsp:forward>: Kontrolle an eine andere JSP-Seite
weitergeben.– <jsp:param>: Parameterwerte an durch <jsp:include>
oder <jsp:forward> verwendete Seiten weitergeben.
14
JSP SyntaxBemerkungen
• Skriptelemente in XML– <jsp:declaration> ... <jsp:declaration> ↔ <%! ... %>– <jsp:expression> ... <jsp:expression> ↔ <%= ... %>– <jsp:scriptlet> ... <jsp:scriptlet> ↔ <% ... %>
Aber JSP und XML Syntax darf auf einer Seite nicht gemischt werden.
• Folien: http://courses.coreservlets.com/Course-Materials/csajsp2.html
• Freies Online-Buch: http://pdf.coreservlets.com
15
JSP SyntaxSpezielle Variablen
• request (javax.servlet.http.HttpRequest)• response (javax.servlet.http.HttpResponse)• out (javax.servlet.jsp.JspWriter)• config (javax.servlet.ServletConfig)• session (javax.servlet.http.HttpSession)• application (javax.servlet.ServletContext)• exception (java.lang.Throwable)
16
JavaServer Pages
Session-Objekt14.01.2008
17
JSPs und Tomcatc:\tomcat\webapps\meinProjekt\meineJSP.jsp
http://localhost:8080/meinProjekt/meineJSP.jsp
c:\tomcat\webapps\ROOT\meineJSP.jsphttp://localhost:8080/meineJSP.jsp
18
Session Tracking• HTML ist 'stateless'• Ausweg
– Cookies– Werte in URL speichern– Hidden Fields
• Servlets/JSP:– session (javax.servlet.http.HttpSession)
• Verwendet Cookies: Hashmap mit Attribut/Werte-Paare• session.setAttribute("accessCount", new Integer(0));• session.getAttribute("accessCount");• … (siehe Java-Doc für javax.servlet.http.HttpSession)
19
JSP SyntaxSpezielle Variablen
• request (javax.servlet.http.HttpRequest)• response (javax.servlet.http.HttpResponse)• out (javax.servlet.jsp.JspWriter)• config (javax.servlet.ServletConfig)• session (javax.servlet.http.HttpSession)• application (javax.servlet.ServletContext)• exception (java.lang.Throwable)
20
Beispiel: Seitenaufrufe zählen
21
Session-Variable in Netbeans untersuchen
22
Beispiel: Einkaufsliste
23
JavaServer Pages
JavaBeans21.01.2008
24
Was sind JavaBeans?
• Java-Objekte die zur Datenhaltung dienen.• Sie besitzen private Felder und öffentliche
Getter- und Setter-Methoden.– Interne Änderungen möglich ohne das öffentliche
Interface zu verändern.– Programmieren von Seiteneffekten möglich
• Berechnungsfunktionen werden in den Beans implementiert.
• JavaBeans != Enterprise JavaBeans
25
Getters und Setters mit Netbeans generieren
• Lege in der Java-Klasse nur die Felder fest.
• Re.Maus > Insert Code … > Getters and Setters
26
JavaBeans und XMLIdee
• Idee: Werfe Java-Code aus den JSP raus: – Beans-Zugriffe über XML-Konstrukte:
• <jsp:useBean id="name" class="package.Class" />• <jsp:getProperty name="beanName“ property="propertyName" />• Oder ab JSP 1.2: ${beanName.propertyName}
– Kontrollstrukturen über Standard Tag Library (STL): • <c:if test="${datum.time mod 2 == 0}">
Gerade Anzahl Millisekunden. </c:if>
• <c:forEach var="col" begin="0" end="255"> <span style="color:rgb(${col},${col},${col})">${col}</span> </c:forEach>
27
JavaBeans und XMLSyntax
• jsp:useBean– <jsp:useBean id="beanName" class="package.Class" />– Entspricht
<% package.Class beanName = new package.Class(); %>
• jsp:getProperty– <jsp:getProperty name=“beanName" property="property" />– Entspricht: <%= beanName.getProperty() %>
• jsp:setProperty– <jsp:setProperty name=“beanName“ property="property“
value="value" />– Entspricht: <% beanName.setProperty(“value”); %>
Recommended