Internetzugriff mit Strings und Streams

Slides:



Advertisements
Ähnliche Präsentationen
programmiert April-Juni 2003 von Knut Riechmann
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
Java-Servlets Gliederung: Allgemeine Informationen zu Servlets
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DI Christian Donner cd (at) donners.com
Internet-Datenbanken
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik F Verteilte Software - Java.
Verteilte Software - Java - Prozedurale Programmierung 1
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Tomcat Web-Server installieren
Java 2 Enterprise Edition (J2EE)
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Ausnahmen HS Merseburg (FH) WS 06/07.
Internet-Datenbanken Grundlagen des WWW HTML HTTP Web-Anbindung von Datenbanken Servlets JSP JDBC XML Datenmodell Schemabeschreibungssprachen Anfragesprachen.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Indirekte Adressierung
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Verzweigung oder bedingte Anweisung Weiter mit PP.
IF-ELSE-IF-Ketten Weiter mit PP..
Internet-Technologien und Java
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Objektorientierte Programmierung JDK-Klassenbibliothek
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
JAVA RMI.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Seminar Internet Technologien
Remote Methode Invocation (RMI)
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
JDBC EDV JDBC.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Einführung Servlets/JSPs
Applets Java für’s Web.
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
Socket-Programmierung
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Netzwerkprogrammierung
CuP - Java Eingabe über Tastatur, AudioClips, überschreiben, Quiz Montag, 18. November 2002.
7.1.5 Java RMI – Remote Method Invocation
Optimale Ursprungsgerade
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Methoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Ausnahmen (Exceptions)
Rusch Philipp, Spiegel Philipp, Sieber Michael, Ucar Sahin, Wetzel Markus.
OOP mit Java Oder: Java in 5 Tagen. 1. Tag Klassen und Methoden Hello World in Variationen Von Menschen und Geschlechtern Horden (Schlange stehen)
Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige.
Ein-/ Ausgabe in Java ein Überblick. © eigentlich ganz einfach ? Ein-/Ausgabe durch package java.io Ausgabe (auf Konsole) mit System.out.println()
Tutorstunde 10.
 Präsentation transkript:

Internetzugriff mit Strings und Streams Lesen aus dem Internet (über URL) URL url = new URL( "http://www.upb.de/cs/boettcher/willkommen.htm"); BufferedReader einURL = new BufferedReader( new InputStreamReader(url.openStream()) ); String s = einURL.readLine() ; // ... Ausnahmen abfangen (bei allen Leseoperationen) try { // ... Leseoperationen } catch(Exception e) { System.out.println(e); } // Ausnahmen abfangen Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

Internetzugriff über Sockets Andere Rechner sind genauso zugreifbar wie lokale Dateien in Java über Eingabe- bzw. Ausgabe-Ströme String host = “paris.uni-paderborn.de"; Socket socket = new Socket(host, 13); BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream())); String zeit = in.readLine(); System.out.println(“Die Zeit auf Rechner " + host + " ist " + zeit); Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

Ein HTTP-Client import java.io.*; import java.net.*; public class HttpClient { public static void main( String[ ] args ) { try { Socket socket = new Socket("192.168.1.101", 8080 ); BufferedReader from_server = new BufferedReader( new InputStreamReader( socket.getInputStream() ) ) ; PrintWriter to_server = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); // Sende HTTP GET Kommando zum Web server und welche Seite to_server.println("GET /start.html"); to_server.println(); to_server.flush(); // sende sofort String zeile = from_server.readLine() ; while ( zeile != null ) { System.out.println( zeile ) ; zeile = from_server.readLine() ; } socket.close(); // Wenn alles gelesen ist, schließe Socket } catch (Exception e) { System.out.println(e); } } Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

Einfacher HTTP-Spiegelserver import java.io.*; import java.net.*; public class HttpSpiegel { public static void main(String args[]) { try { ServerSocket ss = new ServerSocket(8080); // Service einrichten for(;;) { Socket client = ss.accept( ); // warte bis ein Client sich anmeldet BufferedReader in = new BufferedReader( new InputStreamReader( client.getInputStream( ) ) ); PrintWriter out = new PrintWriter( new OutputStreamWriter( client.getOutputStream( ) ) ); out.println("HTTP/1.0 200 "); out.println("Content-Type: text/plain"); out.println( ); out.flush( ); String zeile = in.readLine( ) ; while( zeile != null && zeile.length( ) != 0 ) { out.println( zeile ); zeile = in.readLine() ; } out.close( ); in.close( ); client.close( ); } // for: Warte auf nächsten Client } catch (Exception e) { System.out.println(e); } } Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

RMI und Objektserialisierung RMI: Aufruf von Methoden in entfernt definierten Klassen RMI-Server RMI-Client RMI-Verbindung Registrierung via rmiregistry RMI-Compiler erzeugt aus Klassen Stubs und Skeleton-Klassen Binden der Objekte , dann Aufruf wie bei lokalen Objekten Serialisierung: Objekte werden als Datenstrom übertragen Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

RMI-Code (Client) Entfernter Server (Typ=interface) IP Servicename import java.rmi.*; public class Bank { public interface RemoteBank extends Remote { // interface für Server public String conc(String s1, String s2) // was Server bietet throws RemoteException ; } public static void main(String[] args) { try { // Suche Server mit Name "bankname" RemoteBank bank = // Serverobjekt (RemoteBank) Naming.lookup("rmi://192.168.1.101/bankname"); String ret = bank.conc(args[0], args[1]); // Aufruf an Serverobjekt System.out.println(ret) ; } // Fange und zeige RMI-Exceptions catch (Exception e) { System.out.println(e); } } // main IP Servicename Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

RMI-Code (Server) import java.rmi.*; import java.rmi.server.*; import Bank.*; // lade das Interface für RemoteBank public class RemoteBankServer extends UnicastRemoteObject implements RemoteBank { public RemoteBankServer() throws RemoteException { super(); } // Implementierung der Remote-Methode conc aus Interface RemoteBank public synchronized String conc (String s1, String s2) throws RemoteException { System.out.println( s1 + " :: " + s2 ) ; return s1+s2 ; } public static void main(String[] args) { try { RemoteBankServer bank = new RemoteBankServer(); // erzeugt Serverobjekt Naming.rebind("bankname", bank); // sein Name ist "bankname" System.out.println("bankname ist bereit."); catch (Exception e) { System.err.println(e); Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

RMI: Arbeitsweise / Codegenerierung 1. Alle Java-Programme übersetzen: javac *.java 2. Das Server-Programm vorübersetzen mit rmic rmic RemoteBankServer erzeugt Code zum Datentransfer über das Netz 3. Einen Registrierungsprozeß für rmi-Server starten Fenster1: rmiregistry 4. Das Server-Programm starten Fenster2: RemoteBankServer 5. Das Client-Programm starten Fenster3 (evtl. auf einem anderen Rechner): Bank ab xy Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

3-Tier-Architecktur mit RMI HTML- Seite Produkt- datenbank Eingabe Browser Applet Business- Logik (Java) DB-Zugr. Programm RMI RMI Client Application-Server DB-Server + Session-Konzept erlaubt zwischenzeitliche Interaktion + Last zwischen Client und Applicationserver frei verteilbar + in der Regel geringere Serverlast (verteilt auf 2 Server) +/- Client muß Java-fähige Browser nutzen - Server müssen Java-fähige Schnittstelle bieten (Java/Corba) Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

RMI: Übung 1. Kopieren Sie die RMI-Programme (z.B. vom Dozentenrechner) in ein Verzeichnis auf Ihrem Rechner und ändern Sie Bank.java so, daß die IP Ihres Rechners eingetragen ist. 2. Alle Java-Programme übersetzen: > javac *.java 3. Das Server-Programm vorübersetzen mit rmic > rmic RemoteBankServer erzeugt Code zum Datentransfer über das Netz 4. Einen Registrierungsprozeß für rmi-Server starten Fenster1: > rmiregistry 5. Das Server-Programm starten Fenster2: > java RemoteBankServer 6. Das Client-Programm starten Fenster3 (evtl. auf anderem Rechner): > java Bank ab xy Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

Java Server Pages (JSP) Bisher: HTML - statische Seiteninhalte php, ... - dynamische Seiteninhalte, nicht typsicher und portabel Servlets - dynamische Seiteninhalte, typsicher und portabel , aber keine Trennung von Layout, Logik und Daten Neu: JSP - dynamische Seiteninhalte, typsicher und portabel , und Trennung von Layout, Logik und Daten Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

Java Server Pages (Beispielausgabe) JSP-Verzeichnis JSP-Seite Layout (+konstanter Inhalt) dynamischer Inhalt Layout Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

Java Server Pages (JSP) http://localhost:8080 /beispiel1/clock.jsp Web-Browser Willkommen in ... Preisliste von Mo. 22.Jan 21:55 ... clock.jsp JSP-Web-Server .class-Files Servlet (.java) Clock.Java Web-Seite (html) Client Server Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

Java Server Pages (Beispiel) import java.util.*; // Clock.Java public class Clock { public String getDay() { return "Datum und Uhrzeit ist: " + new Date() } } <HTML> // clock.jsp <%@ page language="java" import="Clock" %> <jsp:useBean id="clock" class="Clock" /> <H1>Willkommen in unserem Internetshop</H1> <p> Preisliste von <%= clock.getDay() %> ist ... </HTML> Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

JSP (Trennung von Design und Logik) Eingabe Web- Browser Ausgabe Web- Designer JSP-Seite JSP-Web-Server .class-Files Servlet (.java) Program- mierer Java-Klasse(n) Web-Seite (html) Client Server Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

JSP mit taglib <HTML> // beispiel1.jsp <%@ taglib uri="/bsplib" prefix="jsplib" %> <H1>Willkommen in unserem Internetshop</H1> <P>Preisliste von <jsplib:getDay/> ist ... </P> <jsplib:ifIs timeOfDay="PM"> Sonderangebot vor Ladenschluß ... </jsplib:ifIs> </HTML> <taglib> // Ausschnitt aus bsplib.tld <tag> <name>getDay</name> <tagclass>beispiel1.GetDayTag</tagclass> </tag> <tag> <name>ifIs</name> <tagclass>beispiel.IfIsTag</tagclass> <attribute> <name>timeOfDay</name> <required>true</required> </attribute> </taglib> Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

Taglib - Datei <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>bsplib</shortname> <tag> <name>getDay</name> <tagclass>beispiel1.GetDayTag</tagclass> </tag> <name>ifIs</name> <tagclass>beispiel.IfIsTag</tagclass> <attribute> <name>timeOfDay</name> <required>true</required> </attribute> </taglib> Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01

Zusammenfassung Vorteile von Java für Internet-Programmierung : + Portabitität + Applets (Eingabe-Fehler auf Clientseite abfangen) + Servlets (Serverprogramm: portabel, effizient, sicher) + Java Server Pages (trennt Layout von Logik u. Daten) + JDBC + verteilte Anwendungen (Socket, RMI, ...) + Internet-Zugriff + Server-Implementierungen + Sicherheit für Server und Client +/- effizient (nicht immer ganz so schnell wie C/C++) +/- typsichere Entwicklung - nicht: quick (and dirty) Datenbanken 2 - Java-Server-RMI-Servlets - Prof. Dr. Stefan Böttcher - WS 2000/01