| home | suche | kontakt/johner | institut | hinweise studierende | tech-docs | blog | mindmailer |
![]() |
Java Script
Während Servlets Java-Klassen mit eingebettetem HTML Code sind, könnte man Java Server Pages JSPs als HTML-Seiten mit eingebettetem Java-Code betrachten. Da JSP-Dateien letztlich wieder automatisiert und transparent in Servlets umgewandelt werden, bedürfen auch sie eines Servlet-Containers wie einem Tomcat.
Skript-Elemente
JSP-Seiten können über mehrere Typen an Skriptelementen verfügen:
1. Scriplets
Syntax: <% … %>
Alternative Syntax: <jsp:scriplet> … </jsp:scriplet>
Skriptlets enthalten den auszuführenden Java-Code. z.B. würde eine JSP-Seite mit folgendem Skriplet zeigen, wie Dozenten, die Klausuren benoten ;-)
<% if (Math.random() > 0.5) { %>
<p>Sie haben bestanden, Glückwunsch!</p>
<% } else { %>
<p>Sie haben leider nicht bestanden, sorry!</p>
<% } %>
Wie bereits erwähnt werden JSPs in Servlets gewandelt. Auch aus diesem Grund können die JSP-Entwickler auf folgende bereits implizit definierten Objekte zugreifen
- request: HttpServletRequest
- response: HttpServletResponse
- out: JspWriter
- application: ServletContext (Kontextdaten, z.B. init-Parameter für alle Applikationen)
- session: HttpSession (Kontextdaten für Session)
- pageContext: PageContext (Kontextdaten für eine Seite)
- page: this (Instanz des Servlets)
2. Expressions
Syntax: <%= … %>
Alternative Syntax: <jsp:expression> … </jsp:expression>
Die Expressions stellen letztlich eine Abkürzung dar, sie entsprichen <% out.println() %>
Beispiel: <%= new java.util.Date() %> ist das gleiche wie <% new java.util.Date()%>
3. Deklarationen
Syntax: <%! … %>
Alternative Syntax: <jsp:declaration> … </jsp:declaration>
Man benötigt Deklarationen um außerhalb der einzigen Methode _jspService Variablen zu definieren. Damit fügt man dem erzeugten Servlet ein Attribut hinzu.
Beispiel:<%! double d = 2 %>
4. Kommentare
Syntax: <%-- … --%> (Beachte die "--" auch am schließenden Tag
Keine alternative Syntax
Verwendung: Kommentare (erscheinen nicht im HTML Text im Gegensatz zu
Beispiel: <%-- Copyright --%>
5. Direktiven
Syntax: <%@ directivenname attribute1="wert1" attribute2="wert2" ... %>
Alternative Syntax: <jsp:directive>directivenname attribute1="wert1" attribute2="wert2" ...</jsp:directive>
Mit den Direktiven gibt man Anweisungen an JSP Container.
5.1 Page-Direktiven
import <%@ page import="java.util.*" %>
Extends <%@ page extends="de.fh.kn.Superclass" %>
Content type <%@ page contentType="text/xml"%> (default "text/html")
…
5.2 Include-Direktive
Verwendung: Einbinden von anderen Seiten (JSP, HTML, txt).
Beispiel: <%@ include file="copyright.html" %>
Achtung: Das Einbinden geschieht vor der Compilierung => keine sich ändernden externe Texte möglich
2.6 Aktionen
2.6.1 Forward
Syntax/Beispiel: <jsp:forward page="index.jsp"/>
Verwendung: Weiterleitung auf andere Seite
2.6.2 Include
Syntax/Beispiel: <jsp:include page="index.jsp"/>
Verwendung: Einbinden einer weiteren Seite, die sich ändern kann
2.6.2 Plugin
Syntax: s. Powerpoint
Verwendung: Einbinden eines Applets oder einer JavaBean
2.6.2 JavaBean
Syntax: <jsp:useBean id="beanname" class="classname" scope="session"/>
<jsp:setProperty name="beanname" property="propertyname" value="propertyvalue" />
<jsp:getProperty name="beanname" property="propertyname" />
Zugriff auf Requestparameter durch Weglassen des Attributes value
<jsp:setProperty name="beanname" property="propertyname" />
<jsp:getProperty name="beanname" property="propertyname" />
Kurzfassung um alle Parameter zu setzen: <jsp:setProperty name="beanname" property="*" />
Beispiel siehe unten.
Beispiel
Zuerst ein Java-Bean, das wir dann in der folgenden JSP-Seite verwenden.
package jspbackend;
import java.util.HashMap;
import java.util.Map;
public class Testbean {
private String helloString = null;
public String getHelloString() {
return "Servus " + helloString;
}
public void setHelloString(String helloString) {
this.helloString = helloString;
}
public Map<String, Integer> getStudis(){
Map<String, Integer> studis = new HashMap<String, Integer>();
studis.put("WI", 100);
studis.put("TI", 10);
return studis;
}
}
<html>
<head>
<%-- Directive --%>
<%@ page import=\"java.text.*\"%>
<%@ page import=\"java.util.*\"%>
<jsp:useBean id=\"bean1\" class=\"jspbackend.Testbean\"></jsp:useBean>
</head>
<body>
<h1>JSP-Test</h1>
<p>Jetzt ist es
<%-- Scriplet --%>
<%SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");%>
<%-- Expression --%>
<%=sdf. format (new Date () ) %>
Uhr</p>
<p>G ist der <%= new String(\"HTWG\").indexOf(\"G\")%>. Buchstabe in HTWG</p>
<%-- Implizite Objekte --%>
<p>Der Request-Parameter für \"name\" ist
<%= request.getParameter(\"name\")%></p>
<%-- Arbeiten mit Beans Teil 1--%>
<jsp:setProperty name=\"bean1\" property=\"helloString\" value=\"HTWG\"/>
<p>Ich sage <jsp:getProperty name=\"bean1\" property=\"helloString\"/></p>
<%-- Arbeiten mit Beans Teil 2 --%>
<%Map<String, Integer> studis = bean1.getStudis(); %>
<table border=\"1\">
<tr><th>Studienfach</th><th>Anzahl</th></tr>
<%for (String fach: studis.keySet()){ %>
<tr><td><%= fach %></td><td><%=studis.get(fach)%></td></tr>
<%} %>
</table>
</body>
</html>
