home  |  suche  |  kontakt/johner  |  institut 
studierende  |  tech-docs  |  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"&nbsp; />


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>