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

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

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

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

Links

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

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

JSP & Komponenten

DB

DatenZugriff

AnwendungsLogikDaten

Präsentation

WEB Designer

Java Entwickler

Page 3: Links . JSP & Komponenten DB Daten Zugriff Anwendungs Logik Daten 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.

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

Forward

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

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

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

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

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

Request

Response

OriginalPage

ForwardedPage

Request

<jsp:forward page=“localURL“ />

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

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 --%>

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

Include

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

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

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

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

Request

Response

OriginalPage

IncludedPage

Request

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

Response

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

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.

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

Problematik

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

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

JSP

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

Java Beans

Page 10: Links . JSP & Komponenten DB Daten Zugriff Anwendungs Logik Daten Präsentation WEB Designer Java Entwickler.
Page 11: Links . JSP & Komponenten DB Daten Zugriff Anwendungs Logik Daten Präsentation WEB Designer Java Entwickler.

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

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

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; }

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

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>

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

Web Service: Flugwetter

1. Aktuelle Daten

2. Web Architektur

3. Logik (Business Objekt)

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

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

Daten aus dem WEB

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

weatherobservation

Architektur

portal.jsp

Cookie?

Airport- Selection.html

SetAirport-Code.jsp

sendRedirect

style.css

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

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)

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

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;

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

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; }

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

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(); }

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

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(); } } } }

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

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>

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

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");%>

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

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; } } }%>

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

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>

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

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)