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

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

Embed Size (px)

Citation preview

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)