dynamische webseiten
Download
Skip this Video
Download Presentation
Dynamische Webseiten

Loading in 2 Seconds...

play fullscreen
1 / 16

Dynamische Webseiten - PowerPoint PPT Presentation


  • 137 Views
  • Uploaded on

Dynamische Webseiten. Java servlets. Browser. Webserver. Servlet- Engine. Servlet. Servlet. Servlet. Servlet. Browser. Servlet- Engine mit eingebautem Webserver. Servlet. Servlet. Servlet. Servlet. Architektur. Genauer. Quelle: http://www.research.ibm.com/journal/sj/373/bayeh1.gif.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Dynamische Webseiten' - clementine-skinner


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
architektur

Browser

Webserver

Servlet-Engine

Servlet

Servlet

Servlet

Servlet

Browser

Servlet-Engine miteingebautemWebserver

Servlet

Servlet

Servlet

Servlet

Architektur
genauer
Genauer ...

Quelle: http://www.research.ibm.com/journal/sj/373/bayeh1.gif

servlet engines
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
servlet
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
lebenszyklus eines servlets
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
hello world
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();

}

}

hello world1
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();

}

}

hello world2
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);

}

}

initialisierung
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
    • ...
parameter
Parameter
  • HttpServletRequest.getParameter(name)String par = request.getParameter("ID");
  • liefert den Wert des Parameters (hier ID) als String
    • Ggf. Konvertierung, z.B.int value = Integer.parseInt(par)double value = Double.parseDouble(par)
  • bei GET und POST
  • Problem: Parameter mit Sonderzeichen
  • Lösung: URL-encoding
    • z.B. \' \' (blank) als +
beispiel parameter
Beispiel: Parameter

public class HelloWorldPar 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");

String par = request.getParameter("ID");

// Output liefern wir ueber "normale" Java IO

PrintWriter pw = response.getWriter();

pw.println("Hello World");

pw.println(par);

pw.close();

}

session
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ötigHttpSession session = request.getSession();count =(Integer)session.getAttribute("COUNT");
beispiel session
Beispiel: Session

public class HelloWorldSession extends HttpServlet {

private Integer count;

public void init(ServletConfig conf) throws ServletException

{

super.init(conf);

count = new Integer(0);

}

....

pw.println("Hello World");

HttpSession session = request.getSession();

count = (Integer) session.getAttribute("COUNT");

if (count == null)

count = new Integer(0);

pw.println(count);

count=new Integer(count.intValue()+1);

session.setAttribute("COUNT",count);

header modifizieren
Header modifizieren

public class Uhr extends HttpServlet

{

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException

{

// Was liefern wir zurueck ?

response.setHeader("Refresh","5");

response.setContentType("text/html");

// Output liefern wir ueber "normale" Java IO

PrintWriter pw = response.getWriter();

Date D = new Date();

pw.println("<HTML><BODY><h1>");

pw.println(D);

pw.println("</h1></BODY></HTML>");

pw.close();

}

zugriff auf datenbank
Zugriff auf Datenbank

public class TestEmpServlet extends HttpServlet {

...

out.println("<html><body>");

try { Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection conn =

DriverManager.getConnection ("jdbc:mysql://localhost/ba","till","haenisch");

Statement stmt = conn.createStatement ();

ResultSet rset = stmt.executeQuery (

"select empno,ename from EMP");

while (rset.next())

{

out.println(rset.getInt(1) + " " +

rset.getString(2) + "<br>");

}

}

catch (Exception e) {

out.println(e.getMessage());

}

ad