Links . JSP & Komponenten DB Daten Zugriff Anwendungs Logik Daten Präsentation WEB Designer Java...

Post on 28-Mar-2015

216 views 1 download

Transcript of Links . JSP & Komponenten DB Daten Zugriff Anwendungs Logik Daten Präsentation WEB Designer Java...

Links

http://www.joller-voss.ch/ndkjava/

JSP & Komponenten

DB

DatenZugriff

AnwendungsLogikDaten

Präsentation

WEB Designer

Java Entwickler

Actions

<jsp:forward><jsp:include><jsp:param>

<jsp:useBean><jsp:setProperty><jsp:getProperty>

<jsp:plugin><jsp:fallback>

Steuerung des Kontrollfluss zwischen den Seiten.

Zusammenspiel mit Beans

Spezifikation für Applets.

Forward

<jsp:forward page=‘<%= “message“ + statusCode + “.html“ %> />

----------------------------- -----

----------------------------- -----

--------------

--------------

Request

Response

OriginalPage

ForwardedPage

Request

<jsp:forward page=“localURL“ />

Anwendungen forward

1.Parameterübergabe<jsp:forward page=“localURL“> <jsp:param name=“parameterName1“

value=“parameterValue1“ /></jsp:forward>

2. Kontrollfluss<% if (! Database.isAvailable()) { %><%-- Informieren den User zur Wartung der DB --%><jsp:forward page=“db-wartung.html“ /><% } %><%-- Datenbank ist verfügbar --%>

Include

----------------------------- -----

----------------------------- -----

--------------

--------------

Request

Response

OriginalPage

IncludedPage

Request

<jsp:include page=“localURL“ flush=„true“/>

Response

Action vs. Direktive

Direktive <@ include …>

Im Moment der Seitengenerierung wird der

Inhalt eingefügt.

Action <jsp:include …>

Der Request wird direkt auf die neue Seite umgeleitet und der Response wird wieder zurückgeleitet.

Problematik

Servletsstreng definiert„pure Java“mit viel Dokument-Quellcode oft unübersichtlich

JSPSchwammige Spezifikationen, Durchmischung zweier TechnologienMit viel Java-Code oft unübersichtlich

JSP

Java Beans

Java Beans, Part 1 (java.sun.com)

Support for introspection allowing a builder tool to analyze how a bean works.

Support for customization allowing a user to alter the appearance and behavior of a bean.

Support for events allowing beans to fire events, and informing builder tools about both the events they can fire and the events they can handle.

Support for properties allowing beans to be manipulated programatically, as well as to support the customization mentioned above.

Support for persistence allowing beans that have been customized in an application builder to have their state saved and restored. Typically persistence is used with an application builder's save and load menu commands to restore any work that has gone into constructing an application.

http://developer.java.sun.com/developer/onlineTraining/Beans

heloworld Beanpackage jspcr;import java.io.*;

public class heloworldbean implements Serializable { private String message;

public String getMessage() { return message; }

public void setMessage(String message) { this.message = message; }

public String getCount10() { String s; s=""; for (int i=0;i < 10 ; i++ ) { s += i+" "; } return s; }

helloworld bean jsp<html><head><title>helloworld</title></head><body><h1>Helloworld JSP</h1>

<jsp:useBean id="hello" class="jspcr.heloworldbean"><jsp:setProperty name="hello" property="message" value="Guten Tach, wie lauefts ????"/></jsp:useBean>

hier kommt die Meldung:<br><br> <jsp:getProperty name="hello" property="message"/>

<br>und nun auf 10:<br> <jsp:getProperty name="hello" property="count10"/>

<br></body></html>

Web Service: Flugwetter

1. Aktuelle Daten

2. Web Architektur

3. Logik (Business Objekt)

4. Implementierung• Bean• Präsentation (JSP, CSS, HTML)

Daten aus dem WEB

weatherobservation

Architektur

portal.jsp

Cookie?

Airport- Selection.html

SetAirport-Code.jsp

sendRedirect

style.css

Business Logic

getAirportCode()setAirportCode(String airportCode)

getLocation()

getTemperature()

getTime()

getURL()

Hilfsmethoden

load(InputStream stream)

loadFromURL(URL url)

load(InputStream stream)

parseLocation(String line)

parseTime(String line)

parseTemperature(String line)

Bean: Weather

package jspcr.beans.weather;

import java.io.*;import java.net.*;import java.text.*;import java.util.*;

public class Observation implements Serializable{ private static final String BASEURL = "http://weather.noaa.gov/weather/current";

private static final SimpleDateFormat DATEFMT = new SimpleDateFormat("MMM dd, yyyy - hh:mm aa zzz");

private String airportCode; private String location; private Date time; private Double temperature;

Bean Methoden // Bean accessor methods public String getAirportCode() { return airportCode; }

public void setAirportCode(String airportCode) throws IOException { this.airportCode = airportCode; loadFromURL(getURL()); }

public String getLocation() { return location; }

protected void setLocation(String location) { this.location = location; }

Load public URL getURL() throws MalformedURLException { StringBuffer sb = new StringBuffer();

sb.append(BASEURL); sb.append("/K"); sb.append(airportCode.toUpperCase()); sb.append(".html");

return new URL(sb.toString()); }

protected void loadFromURL(URL url) throws IOException { load(url.openStream()); }

protected void load(InputStream stream) throws IOException { location = null; time = null; temperature = null;

BufferedReader in = new BufferedReader( new InputStreamReader(stream));

for (;;) { // while(true) String line = in.readLine(); if (line == null) break;

if (location == null) parseLocation(line); if (time == null) parseTime(line); if (temperature == null) parseTemperature(line); } in.close(); }

Parse Temperature

protected void parseTemperature(String line) { final String TOKEN1 = "("; final String TOKEN2 = "C)";

int q = line.lastIndexOf(TOKEN2); if (q != -1) { int p = line.lastIndexOf(TOKEN1); if (p != -1) { p += TOKEN1.length(); String token = line.substring(p, q).trim(); try { setTemperature(Double.parseDouble(token)); } catch (NumberFormatException e) { e.printStackTrace(); } } } }

statische Dateien

style.css

.whiteOnBlue, .blueOnWhite { font-family: Verdana; font-size: 9pt; text-decoration: none;}.whiteOnBlue { background-color: #005A9C; color: #FFFFFF;}.blueOnWhite { background-color: #FFFFFF; color: #005A9C;}

AirportSelection.html

<HTML><HEAD><TITLE>Airport Selection</TITLE></HEAD><BODY><FORM METHOD="POST" ACTION="SetAirportCode.jsp">Select airport:<INPUT TYPE="SUBMIT" VALUE="Set Airport Code"><P><SELECT NAME="airportCode" SIZE=10> <OPTION VALUE="CLT">Charlotte Douglas International Airport <OPTION VALUE="DFW">Dallas Fort Worth International Airport <OPTION VALUE="DEN">Denver International Airport <OPTION VALUE="JFK">Kennedy International Airport <OPTION VALUE="LMT">Klamath Falls International Airport <OPTION VALUE="LGA">La Guardia Airport <OPTION VALUE="TVL">Lake Tahoe Airport <OPTION VALUE="LAX">Los Angeles International Airport <OPTION VALUE="EWR">Newark International Airport <OPTION VALUE="SWF">Newburgh Stewart Airport <OPTION VALUE="ROW">Roswell Industrial Air Center Airport <OPTION VALUE="SAF">Santa Fe County Municpal Airport <OPTION VALUE="SLC">Salt Lake City International Airport <OPTION VALUE="SFO">San Francisco International Airport <OPTION VALUE="SEA">Seattle Tacoma International Airport <OPTION VALUE="EAT">Wenatchee Pangborn Memorial Airport <OPTION VALUE="YKM">Yakima Air Terminal</SELECT></FORM></BODY></HTML>

setAirPort Code.jsp

<%@ page session="false" %><% String airportCode = request.getParameter("airportCode"); if (airportCode != null) { Cookie cookie = new Cookie("airportCode", airportCode); final int ONE_YEAR = 60 * 60 * 24 * 365; cookie.setMaxAge(ONE_YEAR); response.addCookie(cookie); } response.sendRedirect("Portal.jsp");%>

Portal.jps<%@ page session="false" %><HTML><HEAD><TITLE>LyricNote Portal</TITLE><LINK REL="stylesheet" HREF="style.css"></HEAD><BODY><IMG SRC="images/lyric_note.png"><HR COLOR="#000000">

<%-- Get weather cookie --%><% String airportCode = "RDU"; Cookie[] cookies = request.getCookies(); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { Cookie cookie = cookies[i]; if (cookie.getName().equals("airportCode")) { airportCode = cookie.getValue(); break; } } }%>

Portal.jps (II)<%-- Get the weather observation bean for that location --%><jsp:useBean id="wobs" class="jspcr.beans.weather.Observation"><jsp:setProperty name="wobs" property="airportCode" value="<%= airportCode %>"/></jsp:useBean>

<%-- Show weather information --%><SPAN CLASS="whiteOnBlue">&nbsp;Weather&nbsp;</SPAN><SPAN CLASS="blueOnWhite"><jsp:getProperty name="wobs" property="location"/><jsp:getProperty name="wobs" property="time"/><jsp:getProperty name="wobs" property="temperature"/> C&deg;</SPAN><A CLASS="whiteOnBlue" HREF="AirportSelection.html">&nbsp;Select City&nbsp;</A><HR COLOR="#000000">

<%-- Show the rest of the web page --%></BODY></HTML>

Praktikum

JSP – Java Bean Anwendung

1. Begrüssungsseite (jsp)

2. Portalseite (jsp)

3. Auswahl (html, jsp)

4. Bean

Bsp.: (Schweizer Wetter, Börsenkurse,

5-10 Bahnverbindungen mit aktuellen Zeiten)