Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Einführung Servlets/JSPs

Ähnliche Präsentationen


Präsentation zum Thema: "Einführung Servlets/JSPs"—  Präsentation transkript:

1 Einführung Servlets/JSPs

2 HTML HyperText Markup Language
Sprache, in der Webseiten geschrieben sind <html> <head> <title>Eine Beispielseite</title> </head> <body> <h1>Überschrift</h1> <p>Ein ziemlich sinnfreier Text, der nur demonstrieren soll, was HTML ist</p> </body> </html>

3 HTML Request und Response
HTTP Request (Client: Browser, Programme) – URL – Methode (GET/POST/…) – Body (z. B: Parameter bei POST, Datei-Uploads…) – Diverse andere Informationen (Header) HTTP Response (Web-Server) – Angeforderte Datei (HTML, GIF, …)

4 Servlet API Anwendungsprogrammierschnittstelle für
server-seitige Java-Programme Servlet: gewöhnliche Java-Klasse, mit der sich der Webserver beliebig erweitern läßt Servlets stellen Dienste für den Client bereit, die dieser anfragen kann Anfrage und Antwort über Datenströme Servlet API bietet Unterstützung für Cookies und ein Session-Management

5 Servlet Implementierung
Typisch: Unterklasse von HttpServlet oder GenericServlet doGet() oder/und doPost() überschreiben Alternativ: service() überschreiben

6 HelloWorld Servlet 1:import java.io.*; 2:import java.util.Date;
3:import javax.servlet.*; 4: 5:public class HelloWorld extends javax.servlet.GenericServlet { 6: public void service(ServletRequest req, ServletResponse res){ 7: res.setContentType("text/html"); 8: PrintWriter out = res.getWriter(); 9: Date d = new Date(); 10: out.println("<html><head></head><body>" + 11: "Hello World am " + d.toString() + 12: "</body></html>"); 13: } 14:}

7

8 Aufruf eines Servlets Anfrage: HTTP Request
– URL in Browser eingeben (GET) – HTML Link klicken (GET) – HTML Formular abschicken (GET/POST) • Verarbeitung: Parameter holen, Datenbank abfragen, Berechnungen durchführen etc. • Ergebnis: HTTP Response – Wird vom Browser angezeigt – Evtl. automatisch weitere Requests, etwa Bilder

9 Input und Output Request-Objekt enthält Anfrageparameter
request.getParameter(String paraName) • Response-Objekt stellt Ausgabekanal zur Verfügung response.getWriter() für Textausgabe response.getOutputStream() für Binärdaten

10 GET-Methode mit Hyperlink
<html> <head> <title>Calculator</title> </head> <body> <a href="servlet/sep.CalculatorServlet?x=12&y=13"> Berechnung starten </a> </body> </html>

11 GET-Methode mit Formular
<html> <head> <title>Calculator</title> </head> <body> <form action="servlet/sep.CalculatorServlet"> X: <input type="text" name="x"> Y: <input type="text" name="y"> <input type="submit"> </form> </body> </html>

12 POST-Method (nur Formular)
<html> <head> <title>Calculator</title> </head> <body> <form action="servlet/sep.CalculatorServlet" method="post"> X: <input type="text" name="x"> Y: <input type="text" name="y"> <input type="submit"> </form> </body> </html>

13 Vergleich GET/POST GET Methode – Parameter sind Bestandteil des URLs
->Bei Bookmarks werden Parameter mitgespeichert ->Ungeeignet für Passwörter – Links benutzen automatisch GET Methode POST Methode – Parameter werden im Body des Requests übertragen – Notwendig z.B. bei Datei-Upload

14 import javax.servlet.*;
import javax.servlet.http.*; import java.io.*; public class CalculatorServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int x = Integer.parseInt(request.getParameter("x")); int y = Integer.parseInt(request.getParameter("y")); PrintWriter out = response.getWriter(); out.println("<html><head><title>MyCalc</title></head>"); out.println("<body>"); out.println("Berechnung: "+x+" + "+y+" = " + (x+y)); out.println("</body>"); out.println("</html>"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response);

15 Web-Applikation • $TOMCAT_HOME/webapps/myapp
• Struktur des Verz. myapp: – WEB-INF • web.xml • classes (eigene Klassen, Package-Struktur beachten!) • lib (Hilfsbibliotheken, z.B. db2java.zip, upload.jar) – index.html (index.jsp) & mgl. andere Dateien/Verz. Servlet-Mapping: in Datei web.xml. Zugriff dann über

16 Servlet: Vor- u. Nachteile
Vorteil: sehr flexibel Nachteil: HTML ist in Java-Quellcode eingebettet – Unübersichtlich – HTML-Editoren können nicht benutzt werden – Kein Syntax-Highlighting von HTMLQuellcode • Alternative: Java Server Pages (JSP)

17 Java Server Pages • JSP-Seiten als normale HTML-Seite geschrieben
("Template", statischer Teil), vermischt mit ein wenig Java (dynamischer Teil) • Java in speziellen "tags", z.B. <%...%> • JSP-Dateien müssen die Endung .jsp haben • JSP wird in ein Java-Servlet übersetzt, welches dann kompiliert wird. • Das Servlet arbeitet in der gewohnten Art und Weise. Browser sieht nur HTML

18 Beispiel <HTML> <BODY>
Hello! The time is now <%= new java.util.Date() %> </BODY> </HTML> • Äquivalent: Hello! The time is now <% out.print(new java.util.Date()) %>

19 JSP-Syntax • Verschiedene JSP “tags” für versch. Zwecke
<%= expression %> – expression ist evaluiert. Das Ergebnis in die HTML Seite eingefügt • <% code %> – code wird in service-Methode des Servlets eingefügt – Diese Konstruktion: scriptlet • <%! declarations %> – Die declarations werden in die Servlet-Klasse, nicht in eine Methode eingefügt • <%-- JSP Kommentar --%> (<!-- HTML -->)

20 JSP: Vordefinierte Variablen
• request: das HttpServletRequest-Objekt • response: das HttpServletResponse-Objekt • session: die HttpSession assoziiert mit dem Request oder null wenn es keine Session gibt • out: JspWriter (ähnlich PrintWriter) zum Senden von Daten an den Client • Beispiel: Your hostname: <%=request.getRemoteHost() %> Äquivalent: Your hostname: <%out.print(request.getRemoteHost()) %>

21 Deklaration und Direktive
• Global, beeinflußen das ganze Servlet • Direktive %> • Am wichtigsten: page-Direktive • page import="java.util.*" %> • Deklarationen: Definitionen von Variablen und Methoden <%! static final int PI = ; double u(double radius) { return 2*PI*r; } %> • Benutzung in der Seite: Umfang des Einheitskreises: <%= u(1.0) %>


Herunterladen ppt "Einführung Servlets/JSPs"

Ähnliche Präsentationen


Google-Anzeigen