Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Praxis der Internet-Programmierung

Ähnliche Präsentationen


Präsentation zum Thema: "Praxis der Internet-Programmierung"—  Präsentation transkript:

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 JSEE Versionen Java Servlet 2.2 (17.12.1999) stabil
"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 stabil

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 Interface HttpServletRequest
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/

28 Environement Variablen
CGI-Variable

29 CGI Variable CGI-Variable AUTH_TYPE CONTENT_LENGTH CONTENT_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

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

31 Neues Servlet im JBuilder
New Servlet

32

33

34 Rechte Maustaste Web Run


Herunterladen ppt "Praxis der Internet-Programmierung"

Ähnliche Präsentationen


Google-Anzeigen