1 / 34

Praxis der Internet-Programmierung

Praxis der Internet-Programmierung. Servlet I. Statische Webseiten. 1:1-Ausgabe der angeforderten Datei Dynamische Komponenten auf der Client-Seite: Scripts (ECMAScript, JavaScript,…) Plug-Ins (Java Applets, Macromedia Flash, …). Dynamische Webseiten. Erzeugung der Ausgabe zur Laufzeit

luna
Télécharger la présentation

Praxis der Internet-Programmierung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Praxis der Internet-Programmierung • Servlet I

  2. Statische Webseiten • 1:1-Ausgabe der angeforderten Datei • Dynamische Komponenten auf der Client-Seite: • Scripts (ECMAScript, JavaScript,…) • Plug-Ins (Java Applets, Macromedia Flash, …)

  3. Dynamische Webseiten • Erzeugung der Ausgabe zur Laufzeit • "Web-Anwendung",

  4. Server-seitige Technologien • Common Gateway Interface (CGI) • Ausführung in einem Webserver-externen Prozess • kein Zugriff auf Ressourcen des Webservers • je ein eigener Prozess pro Anfrage • beliebige Sprachen möglich (C/C++, Perl, Java, …) • Interpretiert / kompiliert

  5. Server-seitige Technologien • Server-seitige Skripte • Serverside JavaScript SSJS (Netscape) • Active ServerPages ASP (Microsoft) • Hypertext Preprocessor PHP (Apache) • JavaServer Pages JSP (Sun)

  6. Bsp: ASP <HTML> <!-- This example displays the content of several ServerVariables. --> ALL_HTTP server variable = <%= Request.ServerVariables("ALL_HTTP") %><BR> CONTENT_LENGTH server variable = <%= Request.ServerVariables("CONTENT_LENGTH") %><BR> CONTENT_TYPE server variable = <%= Request.ServerVariables("CONTENT_TYPE") %><BR> QUERY_STRING server variable = <%= Request.ServerVariables("QUERY_STRING") %><BR> SERVER_SOFTWARE server variable = <%= Request.ServerVariables("SERVER_SOFTWARE") %> <BR> </HTML>

  7. Java Servlet Framework

  8. stabil JSEE Versionen • Java Servlet 2.2 (17.12.1999) • "write once, serve anywhere“ • stabil: • Servletcontainer: Tomcat 3.3 • Servlet API: 2.2 • JSP: 1.1 • für Entwickler: • Servletcontainer: Tomcat 4.0 • Servlet API: 2.3 • JSP: 1.2

  9. Servlets die Antwort auf CGI Programmierung • Servlets laufen auf einem Webserver in einem Servletcontainer. • Aufgaben: • Zugriff auf REQUEST • Erzeugen einer Antwort • Formatierung der Antwort in einem Dokument • Senden des RESPONSE • kein eigenständiges Programm! • keine main()-Methode!

  10. Vorteile • Alle Servlets können in einer JVM laufen • Erleichtert die Kommunikation • Portabilität / Stabilität / Platformunabhängikeit • Sicherheit • nur eine Sprache • Funktionalität durch Methodenaufrufe auf das Servlet Objekt • Servlet bleibt im Speicher erhalten • Schnellem Starten bei einem neuen Request • wenig Memory overhead

  11. javax.servlet C:\Programme\jbuilder5\extras\jakarta-tomcat-src\src\webpages\docs\api

  12. Lebenszyklus eines Servlet • Laden der Servlet-Klasse • Erzeugen einer Instanz • Ausführen der init()-Methode • prüfen auf neuere Version des *.class-Files: allenfalls neu laden • Ausführen der Methode service() • z.B. Herunterfahren des Servers • Ausführen der destroy()-Methode • garbage collection

  13. Programmierung eines Servlets • erweitern die abstract class javax.servlet.http.HttpServlet (Subklasse von GenericServlet) • service() wird nicht überschrieben • überschreiben der Methoden doGet(), doPost(), doPut(), doDelete()

  14. HELLO WORLD • package hello_world; • import java.io.*; • import javax.servlet.*; • import javax.servlet.http.*; • public class HelloWorld extends HttpServlet { • public void doGet(HttpServletRequest req, HttpServletResponse res) • throws ServletException, IOException { • res.setContentType("text/html"); • PrintWriter out = res.getWriter(); • out.println("<HTML>"); • out.println("<HEAD><TITLE>Hello World</TITLE></HEAD>"); • out.println("<BODY>"); • out.println("<BIG>Hello World</BIG>"); • out.println("</BODY></HTML>"); • } • }

  15. Zugriff auf REQUEST • public void doGet (HttpServletRequest req, HttpServletResponse res) • throws ServletException, IOException { • Interface HttpServletRequest • getParameter()/getParametetValues(): • Zugriff auf die Name/Wert-Paare des REQUESTS • getRemoteAddr(): IP-Adresse des Clients • getProtocol(): benutztes Protokol

  16. HttpServletRequest API

  17. Zugriff auf RESPONSE • public void doGet (HttpServletRequest req, HttpServletResponse res) • throws ServletException, IOException { • Interface HttpServletResponse • Ausgabe mittels java.io.PrintWriter • PrintWriter out = res.getWriter(); • MIME-Format: res.setContentType(CONTENT_TYPE); • ASCII-Formate: text/html, text/xml, text/plain,…

  18. Hello II • package hello_world; • import java.io.*; • import javax.servlet.*; • import javax.servlet.http.*; • public class Hello extends HttpServlet { • public void doGet(HttpServletRequest req, HttpServletResponse res) • throws ServletException, IOException { • res.setContentType("text/html"); • PrintWriter out = res.getWriter(); • String name = req.getParameter("name"); • out.println("<HTML>"); • out.println("<HEAD><TITLE>Hello, " + name + "</TITLE></HEAD>"); • out.println("<BODY>"); • out.println("Hello, " + name); • out.println("</BODY></HTML>"); • } • }

  19. Hello World Form • <HTML> • <HEAD> • <TITLE>Introductions</TITLE> • </HEAD> • <BODY> • <FORM METHOD=GET ACTION="/servlet/hello_world.Hello"> • If you don't mind me asking, what is your name? • <INPUT TYPE=TEXT NAME="name"><P> • <INPUT TYPE=SUBMIT> • </FORM> • </BODY> • </HTML>

  20. Request Headers IE 5.5

  21. Request Headers Netscape 6.0

  22. HTTP Request Header • import javax.servlet.*; • import javax.servlet.http.*; • import java.io.*; • import java.util.*; • public class Request_all2 extends HttpServlet { • private static final String CONTENT_TYPE = "text/html"; • /**Initialize global variables*/ • public void init(ServletConfig config) throws ServletException { • super.init(config); • }

  23. HTTP Request Header • /**Process the HTTP Get request*/ • public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { • response.setContentType(CONTENT_TYPE); • PrintWriter out = response.getWriter(); • String title = "Servlet Example: Showing Request Headers"; • out.println(ServletUtilities.headWithTitle(title) + • "<BODY BGCOLOR=\"#FDF5E6\">\n" + • "<H1 ALIGN=CENTER>" + title + "</H1>\n" + • "<B>Request Method: </B>" + • request.getMethod() + "<BR>\n" + • "<B>Request URI: </B>" + • request.getRequestURI() + "<BR>\n" + • "<B>Request Protocol: </B>" +

  24. HTTP Request Header • request.getProtocol() + "<BR><BR>\n" + • "<TABLE BORDER=1 ALIGN=CENTER>\n" + • "<TR BGCOLOR=\"#FFAD00\">\n" + • "<TH>Header Name<TH>Header Value"); • Enumeration headerNames = request.getHeaderNames(); • while(headerNames.hasMoreElements()) { • String headerName = (String)headerNames.nextElement(); • out.println("<TR><TD>" + headerName); • out.println(" <TD>" + request.getHeader(headerName)); • } • out.println("</TABLE>\n</BODY></HTML>"); • }

  25. HTTP Request Header • /**Process the HTTP Post request*/ • public void doPost(HttpServletRequest request, • HttpServletResponse response) • throws ServletException, IOException { • doGet(request, response); • } • /**Clean up resources*/ • public void destroy() { • } • }

  26. Praktikum • SERVLET Programmierung I • Hello World Servlet • Eigenes Servlet: • Gibt aktuelle Zeit aus • Begrüsst Sie mit Morgen oder Abend • Gibt erkennt ihren Browser • Sagt Ihne ihre IP Adresse • Zeigt Ihnen den Query-String an.

  27. Links • http://java.sun.com/products/servlet/ • http://developer.java.sun.com/developer/technicalArticles/Servlets/ • http://java.sun.com/docs/books/tutorial/servlets/ • http://www.servlets.com/index.tea • http://archive.coreservlets.com/ • http://www.oreilly.com/catalog/jservlet2/ • http://java.sun.com/j2ee/j2sdkee/ • http://java.sun.com/products/servlet/2.2/javadoc/ • http://www.ifi.unibas.ch/Courses/JavaTech/course/1306Schaub/index.htm

  28. Environement Variablen CGI-Variable

  29. AUTH_TYPE Art der Autentisation (basic oder digest) CONTENT_LENGTH # Bytes mit post gesendet CONTENT_TYPE MIME Typ von anghängten Daten DOCUMENT_ROOT Wurzelverzeichnis des Webservers PATH_INFO Pfad ohne Query-String PATH_TRANSLATED wirklicher Pfad auf dem Server QUERY_STRING REMOTE_ADDR IP Adresse des Client CGI Variable CGI-Variable

  30. CGI Variable • REMOTE_HOST • Domainname vom Host • REMOTE_USER • Username (nur bei Authentification) • REQUEST_METHOD • Get,Post,Put,... • SCRIPT_NAME • Pfad des Servlet • SERVER_SOFTWARE CGI-Variable

  31. New Servlet Neues Servlet im JBuilder

  32. Web Run Rechte Maustaste

More Related