Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige.

Ähnliche Präsentationen


Präsentation zum Thema: "Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige."—  Präsentation transkript:

1 Dynamische Webseiten CGI & co

2 © till.haenisch@gmx.de CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige Programmiersprache,...) einfach portabel Nein Performance Ablauf Webserver erkennt, daß Programm aufgerufen werden soll erzeugt neuen Prozeß (ggf. mit Skript Interpreter) dieser läuft ab und terminiert

3 © till.haenisch@gmx.de Lösungen 1) Programme als Module in Webserver gelinkt Apache modules, nsapi, IIS dll Performance sehr gut Portabilität/Flexibilität weg Aufwendige Programmierung (APIs,...) 2) Webserver mit eingebautem Skript-Interpreter z.B. Perl, PHP, ASP, OWAS (?),... Portabilität/Flexibilität eingeschränkt Performance gut einfache Programmierung 3) Servlets/JSP im Prinzip wie 1) kombiniert Vorteile von beiden

4 © till.haenisch@gmx.de Architektur Browser Webserver Servlet- Engine Servlet Browser Servlet- Engine mit eingebautem Webserver Servlet

5 © till.haenisch@gmx.de Servlet Engines Java Webserver (SUN) Referenzimplementierung Websphere (IBM) Application Server komplex Load Balancing.... Jserv (Apache) Apache module + Servlet Engine Tomcat (Apache) standalone oder Apache module einfach und schnell und viele andere

6 © till.haenisch@gmx.de Servlet javax.servlet generisch javax.servlet.http http Java Klasse abgeleitet von HttpServlet keine main() Methode Überschreiben von doGet() und/oder doPost() ServletRequest Parameter, input Stream ServletResponse Session, outputStream

7 © till.haenisch@gmx.de Lebenszyklus eines Servlets Servlet wird vom Anwender kompiliert beim ersten Aufruf von der engine geladen Klasse wird dynamisch geladen bei jedem weiteren Aufruf wird nur die entsprechende Methode ausgeführt genauer: ausgeführt wird service() die doHeader()... ausführt und je nach Methode doGet() oder doPost() kaum Overhead

8 © till.haenisch@gmx.de Hello World mit GET import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Was liefern wir zurueck ? // Hier: ASCII Text, kein HTML response.setContentType("text/plain"); // Output liefern wir ueber "normale" Java IO PrintWriter pw = response.getWriter(); pw.println("Hello World"); pw.close(); }

9 © till.haenisch@gmx.de Hello World mit POST import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Was liefern wir zurueck ? // Hier: ASCII Text, kein HTML response.setContentType("text/plain"); // Output liefern wir ueber "normale" Java IO PrintWriter pw = response.getWriter(); pw.println("Hello World"); pw.close(); }

10 © till.haenisch@gmx.de Hello World beide ? import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Was liefern wir zurueck ? // Hier: ASCII Text, kein HTML response.setContentType("text/plain"); // Output liefern wir ueber "normale" Java IO PrintWriter pw = response.getWriter(); pw.println("Hello World"); pw.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); }

11 © till.haenisch@gmx.de Initialisierung Zur Initialisierung kann die init-Methode überschrieben werden public void init(ServletConfig conf) throws ServletException { super.init(conf); count = 0; } z.B. Verbindung zur DB herstellen evtl. schlechte Idee (Fehlerbehandlung) Verbindungen zu factories,... aufsetzen Konfigurationsinformationen lesen...

12 © till.haenisch@gmx.de Parameter HttpServletRequest.getParameter(name) String par = request.getParameter("ID"); liefert den Wert des Parameters (hier ID) als String bei GET und POST Problem: Parameter mit Sonderzeichen Lösung: URL-encoding z.B. ' ' (blank) als +

13 © till.haenisch@gmx.de Session Wie werden Informationen von einer Seite zur anderen transportiert ? etwa Benutzername, DB Verbindung,... z.B. Cookies, URL-rewriting,... manuell oder automatisch: Session Objekt HttpServletRequest.getSession() liefert HttpSession Methoden getAttribute(name)/setAttribute(name,Wert) liefert/setzt beliebiges Object cast nötig HttpSession session = request.getSession(); count =(Integer)session.getAttribute("COUNT");


Herunterladen ppt "Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige."

Ähnliche Präsentationen


Google-Anzeigen