Praxis der Internet-Programmierung - PowerPoint PPT Presentation

1 / 34
About This Presentation
Title:

Praxis der Internet-Programmierung

Description:

Praxis der Internet-Programmierung Servlet I – PowerPoint PPT presentation

Number of Views:98
Avg rating:3.0/5.0
Slides: 35
Provided by: Pete3298
Category:

less

Transcript and Presenter's Notes

Title: Praxis der Internet-Programmierung


1
Praxis der Internet-Programmierung
  • Servlet I

2
Statische Webseiten
  • 11-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
ltHTMLgt lt!-- This example displays the content of
several ServerVariables. --gt ALL_HTTP server
variable lt Request.ServerVariables("ALL_HTTP"
) gt ltBRgt CONTENT_LENGTH server variable lt
Request.ServerVariables("CONTENT_LENGTH") gt ltBRgt
CONTENT_TYPE server variable lt
Request.ServerVariables("CONTENT_TYPE") gt ltBRgt
QUERY_STRING server variable lt
Request.ServerVariables("QUERY_STRING") gt ltBRgt
SERVER_SOFTWARE server variable lt
Request.ServerVariables("SERVER_SOFTWARE") gt
ltBRgt lt/HTMLgt
7
Java Servlet Framework
8
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\s
rc\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.Ht
    tpServlet (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("ltHTMLgt")
  • out.println("ltHEADgtltTITLEgtHello
    Worldlt/TITLEgtlt/HEADgt")
  • out.println("ltBODYgt")
  • out.println("ltBIGgtHello Worldlt/BIGgt")
  • out.println("lt/BODYgtlt/HTMLgt")

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("ltHTMLgt")
  • out.println("ltHEADgtltTITLEgtHello, " name
    "lt/TITLEgtlt/HEADgt")
  • out.println("ltBODYgt")
  • out.println("Hello, " name)
  • out.println("lt/BODYgtlt/HTMLgt")

19
Hello World Form
  • ltHTMLgt
  • ltHEADgt
  • ltTITLEgtIntroductionslt/TITLEgt
  • lt/HEADgt
  • ltBODYgt
  • ltFORM METHODGET ACTION"/servlet/hello_world.Hell
    o"gt
  • If you don't mind me asking, what is your name?
  • ltINPUT TYPETEXT NAME"name"gtltPgt
  • ltINPUT TYPESUBMITgt
  • lt/FORMgt
  • lt/BODYgt
  • lt/HTMLgt

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(tit
    le)
  • "ltBODY BGCOLOR\"FDF5E6\"gt\n"
  • "ltH1 ALIGNCENTERgt" title
    "lt/H1gt\n"
  • "ltBgtRequest Method lt/Bgt"
  • request.getMethod() "ltBRgt\n"
  • "ltBgtRequest URI lt/Bgt"
  • request.getRequestURI()
    "ltBRgt\n"
  • "ltBgtRequest Protocol lt/Bgt"

24
HTTP Request Header
  • request.getProtocol()
    "ltBRgtltBRgt\n"
  • "ltTABLE BORDER1 ALIGNCENTERgt\n"
  • "ltTR BGCOLOR\"FFAD00\"gt\n"
  • "ltTHgtHeader NameltTHgtHeader
    Value")
  • Enumeration headerNames request.getHeaderNam
    es()
  • while(headerNames.hasMoreElements())
  • String headerName (String)headerNames.next
    Element()
  • out.println("ltTRgtltTDgt" headerName)
  • out.println(" ltTDgt" request.getHeader(h
    eaderName))
  • out.println("lt/TABLEgt\nlt/BODYgtlt/HTMLgt")

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/technicalA
    rticles/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/1
    306Schaub/index.htm

28
Environement Variablen
CGI-Variable
29
CGI Variable
  • 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
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
Neues Servlet im JBuilder
32
(No Transcript)
33
(No Transcript)
34
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com