Anwendungen Servlet II Formular Auswertung Zähler

Slides:



Advertisements
Ähnliche Präsentationen
Java-Servlets Gliederung: Allgemeine Informationen zu Servlets
Advertisements

Dominic Ziegler 12c Webprogrammierung.
WWW World Wide Web.
Software Engineering Praktikum SS 2003
Software Engineering Praktikum WS 2002/03
HTTP – Hypertext Transfer Protocol
Inhalt – Technische Grundlagen
Aufbau des Internets Überblick Prof. Dr. T. Hildebrandt
Internet-Datenbanken
Tomcat Web-Server installieren
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Internet-Datenbanken Grundlagen des WWW HTML HTTP Web-Anbindung von Datenbanken Servlets JSP JDBC XML Datenmodell Schemabeschreibungssprachen Anfragesprachen.
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.
Einführung Richard Göbel.
Internet-Technologien und Java
Internet-Technologien und Java. Beispiel: Im Browser wird diese Zeile eingegeben. Wie nennt man diese eingegebene Zeile.
Information und Technik Nordrhein-Westfalen Das personalisierte Portal Düsseldorf, Das personalisierte Portal.
Informationen zur Abiturqualifikation und zur Fachhochschulreife
1 Informationen zur Abiturqualifikation und zur Fachhochschulreife
Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, Thomas Matzke, HTWK Leipzig.
Tomcat (I) Ende 1999 Jakarta-Projekt von Apache, IBM und Sun gegründet
Schiller-Gymnasium Hof Manuel Friedrich, OStR Klasse 10 - Wirtschaftsinformatik – Formulare © 2010 Manuel Friedrich - Von.
Web-Anwendungsentwicklung à la MVC. Übersicht Über Georg Heeg Ein industrielles Beispiel Web-Anwendungen aus Smalltalker-Sicht MVC für das Web Programmierdemo.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
Allgemeine Informationen
Allgemeine Informationen
von Julia Pfander und Katja Holzapfel E 12/2
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
Einführung Servlets/JSPs
ESA THERM® Energiesparprozessor für bestehende Heizungsanlagen
Learning By Doing Thema 1: Dynamische Webseiten und Online Datenbanken (Jarka Arnold) Thema 2: Simulationen, Sound, Schnittstellen (Aegidius Plüss) Thema.
Client-Server Modell Advanced IT Basics Nicolas Frings.
PPS-Design einer eigenen WWW-Homepage SS 2003 Applets.
Servlet III Java Webanwendung Webcontainer Web.xml
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Grundlagen: Client-Server-Modell
Julia Grabsch Florian Hillnhütter Fabian Riebschläger
Entwicklung verteilter Anwendungen II, SS 13 Prof. Dr. Herrad Schmidt SS 13 Kapitel 4 Folie 2 REST Web Services (1)
Folgendes kann missbraucht werden: formulare unverschlüsselte login-informationen ungeschützte includes SQL-injection reto ambühler
Internet und SMS Internet und SMS Daniel Rickenbacher Jeremy Deuel.
JSP Einführung Skripte Direktiven Tomcat 3.2 Version 1.1
Servlets Servlets und relevantes API Servlets & SQL via JDBC Implementierungs - Spezifika Architektur Überblick Vertikaler Prototyp / Spezifikation.
Programmierprojekt Java Server Pages
Formularerstellung und Formularauswertung in PHP
PHP Basic.
Seitenstruktur: Ordnerhierarchien
Dynamische Webseiten-Generierung
Webseiten mit PHP, SQL, XML und Webservices Anhand praktischer Beispiele.
Webhosting an der Universität Zürich
Web 2.0 & AJAX (A)sysnchrones (J)avaScript (A)nd (X)ML
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
LEGO-Robotik mit Java Projekt Virtueller Campus LLB Projektlauzeit: Oktober Februar 2006 Mitarbeiter:Jarka Arnold (Projektleitung) Andreas Marti.
HTTP IT-Zertifikat Universität zu Köln Allgemeine Technologien II
Client-Server-Modell
W W W - World Wide Web. Das World Wide Web kommt aus dem Englischen und bedeutet ‚Weltweites Netz‘ ist ein über das Internet abrufbares Hypertext-System.
Gruppe 1 – Linux Server Maxim Mozgovoi Patrick Preidel
Willkommen zum Brückensemester
Formulare Vanessa Kogelbauer.
Funktionsweise von CMS
Oracle – XSQL in der Anwendung Thomas Matzke, 99IN.
Dr.-Ing. R. Marklein - GET I - WS 06/07 - V Grundlagen der Elektrotechnik I (GET I) Vorlesung am Fr. 08:30-10:00 Uhr; R (Hörsaal)
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
Java 2 Enterprise Edition (J2EE) Sascha Baumeister Software Architect Specification Lead JSR086 IBM Deutschland Entwicklung GmbH
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.

Oracle ADF FacesSeite 1 Oracle ADF Faces OPITZ CONSULTING Oracles Implementierung der JavaServer Faces Spezifikation.
Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige.
© 2008 TravelTainment The Amadeus Leisure Group Webanwendungen mit Java - HttpServlets 17.Dezember 2010 Sebastian Olscher Erstprüfer: Hon.-Prof. Dr. H.
Internet-Technologien und Java
 Präsentation transkript:

Anwendungen Servlet II Formular Auswertung Zähler Zähler mit Zwischenspeicherung Hintergrund Berechnung Passwort Abfrage

Auswertung eines Formulars http://www.sdf.... Get Request Webserver index.html Response Servlet Container processformular Post Request Response

HTML <FORM> <form method="POST" action="processformular"> <input type="text" name=name size=50 > <input type="submit" > </form> HTML http Request HTML Formular Servlet Auswertung get <form method=“GET" doGet(… post <form method="POST" doPost(…

Formular erstellen

Auswertung package counter; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class formular extends HttpServlet { private static final String CONTENT_TYPE = "text/html"; public void init() throws ServletException { } public void doPost(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); String name = req.getParameter("name"); String s1 = req.getParameter("is-gift"); String s2 = req.getParameter("address-line-1"); String s3 = req.getParameter("address-line-2"); String s4 = req.getParameter("city");

Auswertung String s5 = req.getParameter("state"); String s6 = req.getParameter("country"); String s7 = req.getParameter("phone-number"); String s8 = req.getParameter("shipping-billing"); out.println("<HTML>"); out.println("<HEAD><TITLE>Formular</TITLE></HEAD>"); out.println("<BODY>"); out.println("Name: " + name +"<BR>"); out.println("Geschenk: " + s1 +"<BR>"); out.println("Adr: " + s2 +"<BR>"); out.println("Adr2: " + s3 +"<BR>"); out.println("Stadt: " + s4 +"<BR>"); out.println("Land: " + s6 +"<BR>"); out.println("Tel: " + s7 +"<BR>"); out.println("Rechnung: " + s8 +"<BR>"); out.println("</BODY></HTML>"); } public void destroy() {}

Simple Counter package counter; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SimpleCounter extends HttpServlet { int count = 0; public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); count++; out.println("Since loading, this servlet has been accessed " + count + " times."); }

Internet  Mehrfach Anfragen

Daten Inkonsistenz Kein Problem bei lokalen Variablen Vorsicht bei Instanz Variablen Bsp: Simple Counter count++; // Thread 1 count++; // Thread 2 out.println("Since loading, ….. // Thread 1 out.println("Since loading, ….. // Thread 2 Hilfe: synchronized Blocks: Nur ein einzelner Thread darf einen synchronized Block ausführen

Simple Counter synchronized package counter; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SimpleCounter extends HttpServlet { int count = 0; public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); synchronized(this) { count++; out.println("Since loading, this servlet has been accessed "+count +" times."); }

Counter II package counter; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class HolisticCounter extends HttpServlet { static int classCount = 0; // verteilt auf alle Instanzen int count = 0; // Nur für dieses Servlet static Hashtable instances = new Hashtable(); // verteilt auf alle Instanzen public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); count++; out.println("Since loading, this servlet instance has been accessed " + count + " times.");

Counter II // Trick: Die Instanzen werden gezählt, indem sie in eine // Hashtable eingetragen werden. Gleiche Einträge werden ignoriert. // Die size() Methode liefert die Zahl der einzelnen Instanzen. instances.put(this, this); out.println("There are currently " + instances.size() + " instances."); classCount++; out.println("Across all instances, this servlet class has been " + "accessed " + classCount + " times."); }

Lebenszyklus Initialisierung Antworten auf Anfragen Zerstörung  Persistenz DB Verbindung Information von früheren Transaktionen

Counter III package counter; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class InitDestroyCounter extends HttpServlet { int count; public void init() throws ServletException { // Versuch den gespeicherten Zustand des Zählers zu laden FileReader fileReader = null; BufferedReader bufferedReader = null; try { fileReader = new FileReader("InitDestroyCounter.initial"); bufferedReader = new BufferedReader(fileReader); String initial = bufferedReader.readLine(); count = Integer.parseInt(initial); return; }

InitDestroyCounter catch (FileNotFoundException ignored) { } // kein gespeicherter Zähler catch (IOException ignored) { } // Problem beim lesen catch (NumberFormatException ignored) { } // Korruptes File finally { // Schliessen des Files try { if (bufferedReader != null) {bufferedReader.close(); } catch (IOException ignored) { } // Überprüfe ob ein Initialisierungsparameter vorhanden ist. String initial = getInitParameter("initial"); count = Integer.parseInt(initial); return; catch (NumberFormatException ignored) { } // null or non-integer value // Default 0 count = 0;

InitDestroyCounter public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); count++; out.println("Since the beginning, this servlet has been accessed " + count + " times."); } public void destroy() { super.destroy(); saveState();

InitDestroyCounter public void saveState() { // Versuch den Counter zu speichern FileWriter fileWriter = null; PrintWriter printWriter = null; try { fileWriter = new FileWriter("InitDestroyCounter.initial"); printWriter = new PrintWriter(fileWriter); printWriter.println(count); return; } catch (IOException e) { // Problem beim Schreiben finally { // Zur Sicherheit das File schliessen if (printWriter != null) { printWriter.close();

PrimSearcher http://www.mindview.net/Books/DownloadSites/ package counter; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class PrimeSearcher extends HttpServlet implements Runnable { long lastprime = 0; // letzte gefundene Primzahl Date lastprimeModified = new Date(); // Zeit Thread searcher; // Hintergrund Thread public void init() throws ServletException { searcher = new Thread(this); searcher.setPriority(Thread.MIN_PRIORITY); searcher.start(); } http://www.mindview.net/Books/DownloadSites/

PrimSearcher public void run() { long candidate = 1000000000000001L; while (true) { if (isPrime(candidate)) { lastprime = candidate; // aktuelle Primzahl lastprimeModified = new Date(); // Zeit der letzten gefunden Primzahl } candidate += 2; // keine geraden Primzahlen try { searcher.sleep(200); // an andere Prozesse denken catch (InterruptedException ignored) { }

PrimSearcher http://archive.coreservlets.com/ private static boolean isPrime(long candidate) { // Dividiere die Zahl durch alle ungeraden Zahlen zwischen 3 und sqrt(z) long sqrt = (long) Math.sqrt(candidate); for (long i = 3; i <= sqrt; i += 2) { if (candidate % i == 0) return false; // Ein Faktor gefunden } return true; //kein Faktor public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); if (lastprime == 0) { out.println("Still searching for first prime..."); else { out.println("The last prime discovered was " + lastprime); out.println(" at " + lastprimeModified); public void destroy() { searcher.stop();} http://archive.coreservlets.com/

Protected Page package protectedpage; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Properties; import sun.misc.BASE64Decoder; public class ProtectedPage extends HttpServlet { private Properties passwords; private String passwordFile; public void init(ServletConfig config) throws ServletException { super.init(config); try { passwordFile = config.getInitParameter("passwordFile"); passwords = new Properties(); passwords.load(new FileInputStream(passwordFile)); } catch(IOException ioe) {} }

Protected Page public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String authorization = request.getHeader("Authorization"); if (authorization == null) { askForPassword(response); } else {

Protected Page String userInfo = authorization.substring(6).trim(); BASE64Decoder decoder = new BASE64Decoder(); String nameAndPassword = new String(decoder.decodeBuffer(userInfo)); int index = nameAndPassword.indexOf(":"); String user = nameAndPassword.substring(0, index); String password = nameAndPassword.substring(index+1); String realPassword = passwords.getProperty(user); if ((realPassword != null) && (realPassword.equals(password))) { String title = "Welcome to the Protected Page"; out.println(ServletUtilities.headWithTitle(title) +

Protected Page "<BODY BGCOLOR=\"#FDF5E6\">\n" + "<H1 ALIGN=CENTER>" + title + "</H1>\n" + "Congratulations. You have accessed a\n" + "highly proprietary company document.\n" + "Shred or eat all hardcopies before\n" + "going to bed tonight.\n" + "</BODY></HTML>"); } else { askForPassword(response); }

Protected Page private void askForPassword(HttpServletResponse response) { response.setStatus(response.SC_UNAUTHORIZED); // Ie 401 response.setHeader("WWW-Authenticate", "BASIC realm=\"privileged-few\""); } /** Handle GET and POST identically. */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response);

Praktikum Kundenangaben mit PW Abfrage: http Passwortabfrage Formular mit Passwortabfrage Alle Adressen im Container werden angezeigt. Formular zur Eingabe von weiteren Adressen (5.) Save & Edit & Delete

Ihr Job 1.) 3.) alle Daten anzeigen 2.) 4.) Eingabe

1.) Neues Projekt

2.) HTML Files in Projekt Ordner kopieren und hinzufügen

3. Neues Servlet oder Webanwendung erzeugen

HTML Files zur Webanwendung hinzufügen

web.xml File anpassen

Servlet Class-File Angaben

Servlet Mapping Angaben