Servlets/JSP - javalink.ch

Transcription

Servlets/JSP - javalink.ch
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
Servlets/JSP
•
Inhalt
1. Grundlagen
1. Einführung
2. Programmieren für das Web
2. Servlets
3. JSP (Java Server Pages)
4. Beispiel Country
1. Dateneingabe von Benutzer
2. Parameterübergabe
3. Auswerten eines Formulars
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 1
Lernziele
• Sie haben einen Überblick über die Möglichkeiten
der Web-Programmierung
• Sie wissen was Servlets/JSP sind und wie sie
funktionieren
• Die Möglichkeiten der Datenübergabe zwischen
Client und Server sind Ihnen bekannt
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 2
Teil 1
Seite 1
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
1.1 Einführung
• Sie geben auf einer Web-Seite eine Stadt ein und
erhalten eine Liste der Hotels (dynamisch)
• Sie können zu einem ausgewählten Hotel mehr
Informationen abrufen
– Anzahl freie Zimmer (dynamisch)
– Preis pro Zimmer (statisch/dynamisch)
• Nachdem Sie ein Hotel gewählt haben, reservieren
Sie ein Zimmer
– Angabe zur Ihrer Person (dynamisch)
– Anzahl Nächte (dynamisch)
• Ihre Reservierungs-Bestätigung wird angezeigt
(dynamisch)
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 3
1.2 Programmieren für das Web (1)
• Bei all diesen Vorgängen geht es um dynamische
Inhalte von Web-Seiten
• Dynamisch auf Client-Seite
– Web-Browser
• Applet eingebettet in HTML-Code
– Download etwas aufwändiger
– Bedienung der Benutzeroberfläche entspricht Applikation
– Kommunikation nur mit Herkunfts-Server möglich (Security)
• Skripts in HTML-Seite
– Sehr einfache Programmierung
– Keine zusätzliche lange Download-Zeit
– Benutzer hat Einsicht in Source-Code
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 4
Teil 1
Seite 2
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
1.2 Programmieren für das Web (2)
• Dynamisch auf der Server-Seite
– Web-/Application-Server
• Formular (HTML) auf Client-Seite wird ausgefüllt und
an Server gesendet
• Daten (Inhalt) werden auf der Server-Seite ausgewertet
• Dynamische Inhalte werden generiert
• Antwort/Fehlermeldung wird an Client zurückgesendet
• Benötigte Software
– Web-Server mit Schnittstelle zu Applikationen/Engine
• CGI è Perl/PHP
• ASP è VB-Script/Java-Script
• Servlets è JSP
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 5
2.1 Funktionsweise (1)
• Ein Servlet ist ein Java-Programm, das auf einem
Web-Server läuft
Bei einem Client
Request wird eine
service() Message
an das Servlet
gesendet
init()
loaded
service()
Servlet wird
gestoppt oder WebServer wir
heruntergefahren
service()
running
destroy()
dead
Servlet wir kreiert
wenn der WebServer startet oder
die Seite das erste
mal aufgerufen wird
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 6
Teil 1
Seite 3
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
2.1 Funktionsweise (2)
• Normalerweise arbeiten alle Clients auf dem selben
Servlet-Objekt für eine Web-Page
• Instanzvariablen können von mehreren Clients
verändert werden
– Synchronisation
• Beim Initialisieren eines Servlets wird ein Pool von
Threads für die Service-Routine eingerichtet
– Einer Client-Anfrage wird ein eigener Thread
(service()-Methode) zugeordnet
– Durch einen Pool von Threads werden Ressourcen
geschont
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 7
2.2 Beispiel
import java.io.*;
import javax.servlet.*;
public class FirstServlet extends GenericServlet
{
public void service( ServletRequest request,
ServletResponse response )
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " );
out.println( "<html>" );
....
out.println( "</html>" );
out.close();
}
}
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 8
Teil 1
Seite 4
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
2.3 Tomcat
• Tomcat
– Tomcat: Offizielle Referenzimplementation
– Apache Jakarta Projekt. Frei erhältlich.
• Nach dem Kompilieren der Klasse, muss diese in ein
spezielles Verzeichnis gestellt werden
<jakarta-tomcat-Pfad>/webapps/examples/WEB-INF/classes
• Die direkte Aktivierung des Servlets lautet:
http://localhost:8080/examples/servlet/ServletName
• Die Übersetzung von einer URL-Anfrage in die
entsprechende Klasse nennt sich Servlet-Mapping und wird
vom Servlet-Container übernommen
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 9
3.1 Übersicht
• Eine Java Server Page JSP ist eine HTML-Seite mit
eingebettetem JSP-Tags
• JSP-Tags sind syntaktische Elemente, ähnlich den
HTML-Tags
• JSP-Tags markieren Elemente von Java-Code
• Aufruf eines JSP-Files
– Beim erstmaligen Aufruf eines JSP-Files wird dieses in ein
Servlet konvertiert (JSP-Engine)
– Das Servlet wird automatisch gestartet
– Als Resultat generiert das Servlet eine HTML-Page
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 10
Teil 1
Seite 5
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
3.2 Architektur
• Architektur eines JSP-fähigen Webservers
Browser
HTTP-Request
HTTP-Response
Web-Server
Servlet-Container
kompilierte Servlets
generierte Servlets
JSP-Engine
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
JSPs
Servlets/JSP Teil1
Folie 11
3.3 Scriptlets
• JSP bietet die Möglichkeit, Fragmente von
Java-Code einzubetten
• JSP Scriptlets <% %>
– Syntax:
<% Statement %>
– Beispiel:
<%
out.println("Hallo, von JSP");
%>
– Ausgabe:
Hallo, von JSP
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 12
Teil 1
Seite 6
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
3.4 Ausdrücke
• In JSP können Java-Ausdrücke mit <%=
ausgewertet werden
%>
– Syntax:
<%= Ausdruck %>
– Beispiel:
<%
double nettoSumme = 102.5;
%>
Nettobetrag beträgt CHF <%= nettoSumme
%>
– Ausgabe:
Nettobetrag beträgt CHF 102.5
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 13
3.5 Packages
• Klassen und Packages importieren
– In Java
import package1.*;
import package2.*
– In JSP
<%@page import="package1.*,package2.*" %>
– oder
<%@page import="package1.*" %>
<%@page import="package2.*" %>
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 14
Teil 1
Seite 7
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
3.6 Variablen/Methoden
• Mit dem Scriptlet-Tag <% %> lässt sich direkt
ausführbarer Java-Code aufnehmen
• Für die Deklaration von Variablen und Methoden ist
die Syntax etwas anders <%!
%>
<%!
int memberVariable = 0;
static int classVariable = 0;
int max(int a, int b)
{
return a > b ? a : b
}
%>
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 15
3.7 Objekte/Aufrufparameter
• Vordefinierte Objekte
HttpServletRequest request
HttpServletResponse response
PrintWriter out
HttpSession session
• Aufrufparameter abfragen
– Parameter werden als Name/Wert-Paare empfangen
– Auf dem Request-Objekt kann mit der Methode
getParameter() abgefragt werden
<%
String wert = request.getParameter("NAME");
%>
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 16
Teil 1
Seite 8
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
3.8 Kommentare
• In JSP gibt es zwei Kommentartypen
– HTML-Kommentare
– JSP-Kommentare
• HTML-Kommentare <!--
-->
– werden unverändert in Ausgabe-Seite übernommen
– JSP-Tags sind erlaubt und werden ausgeführt
<! - Generiert mit JSP-Engine:
<%= application.getServerInfo() %>
-->
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 17
3.8 Kommentare
• JSP-Kommentare <%--
--%>
– werden nicht in Ausgabe-Seite übernommen
– JSP-Tags können so auskommentiert werden
<%Dieses JSP-Element wird nicht ausgeführt:
<%= application.getServerInfo() %>
<! - Dieser HTML-Kommentar verschwindet -->
--%>
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 18
Teil 1
Seite 9
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
3.9 Includes
• Vielfach setzen sich JSP-Seiten aus
wiederkehrenden Teilen zusammen
– z.B. Kopfzeile, die in jeder Seite erscheinen soll
• JSP bietet die Möglichkeit, Teile einer Seite aus
einer Datei einzufügen (Include)
• Dafür gibt es in JSP zwei Möglichkeiten
– Include-Direktive
– Include-Action
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 19
3.9.1 Include-Direktive
• Bei einer Include-Direktive fügt die JSP-Engine den
Inhalt einer Datei direkt in die JSP-Seite ein
– Syntax:
<%@ include file="Dateiname" %>
– Beispiel:
Willkommen bei Fasttrade
<%@ include file="Footer.jsp" %>
– Ausgabe:
Willkommen bei Fasttrade
Fasttrade
Ihr Online-Broker
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 20
Teil 1
Seite 10
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
3.9.2 Include-Action (1)
• Neben der Include-Direktive gibt es auch die
Include-Action
– Syntax:
<jsp:include page="Dateiname" flush="true|false"/>
• und
<jsp:include page="Dateiname" flush="true|false">
<jsp:param name= "Name" value="value" />
<jsp:param name= "Name" value="value" />
</jsp:include>
• Ist flush="true", schickt die Hauptseite vor dem
Aufruf der Unterseite die bis dahin erzeugte
Ausgabe an den Client
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 21
3.9.2 Include-Action (2)
• Include-Action ohne Parameter
– Beispiel:
Willkommen bei Fasttrade
<jsp:include page="Footer.jsp" flush="true" />
– Ausgabe:
Willkommen bei Fasttrade
Fasttrade
Ihr Online-Broker
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 22
Teil 1
Seite 11
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
3.9.2 Include-Action (3)
• Include-Action mit Parameter
– Beispiel:
• Datei: IncludeParameter.jsp
Schön, dass Sie uns mal wieder besuchen! <BR>
Heute ist der
<jsp:include page="LocalDate.jsp" flush="true">
<jsp:param name="LOCALE" value="de_DE" />
</jsp:include>
Nice to see you again! <BR>
Today we have
<jsp:include page="LocalDate.jsp" flush="true">
<jsp:param name="LOCALE" value="en_EN" />
</jsp:include>
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 23
3.9.2 Include-Action (4)
• Datei: LocalDate.jsp
<%@page import="java.text.*,java.util.*" %>
<%
String localeName = request.getParameter("LOCALE");
String language = localeName.substring(0, 2);
String country = localeName.substring(3, 5);
// Passendes Locale holen
Locale locale = new Locale(language, country);
// Aktuelles Datum holen
Date date = new Date();
// Formatieren
DateFormat = DateFormat.getDateInstance(DateFormat.LONG,
locale);
String dateString = date.Format.format(date);
%>
<%= dateString %>
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 24
Teil 1
Seite 12
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
3.9.2 Include-Action (5)
– Ausgabe:
Schön, dass Sie uns mal wieder besuchen!
Heute ist der 15. Oktober 2002
Nice to see you again!
Today we have October 15, 2002
• Die Datei LocalDate.jsp kann auch direkt
aufgerufen werden
http://localhost/Beispiele-Skript/LocalDate.jsp?LOCALE=en_EN
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 25
4.1 Dateneingabe von Benutzer (1)
• Dateneingabe von Benutzer in Country.html
<html><head>
<title>One Input Field</title>
</head>
<form action="ReadCountry.jsp" method="post">
<p>Enter Your Home Country:<br>
<input name="country" type="text" size="30">
<p>
<input type="submit" name="Send" value="Send">
<input type="reset" name="Reset"
value="Reset">
</p>
</form>
</body></html>
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 26
Teil 1
Seite 13
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
4.1 Dateneingabe von Benutzer (2)
• Im Formular könnte man an Stelle von post
<form action="ReadCountry.jsp" method="post">
auch get verwenden
<form action="ReadCountry.jsp" method="get">
• Die eingegebenen Daten werden dann an den URL
angehängt
• Da die Länge des URL‘s beschränkt ist, und die
übertragenen Daten sichtbar sind, sollte stets post
verwendet werden
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets/JSP Teil1
Folie 27
4.2 Parameterübergabe
• Parameterübergabe Name/Value
<input name="country" type="text" size="30">
parameter name
parameter value
String theCountry = request.getParameter("country");
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 28
Teil 1
Seite 14
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
Servlets/JSP
4.3 Auswerten eines Formulars
• Auswerten des Formulars in ReadCountry.jsp
<html><head><title>Feedback</title></head><body>
<%
String theCountry = request.getParameter("country");
if (theCountry != null) {
theCountry = theCountry.trim();
if (theCountry.equals(""))
out.println("You have to enter data!");
else
out.println("Hallo, you are from " + theCountry + "!");
}
%>
<p>
<a href = "Country.html">Back</a>
</body></html>
Abteilung Informatik, Fach Programmieren
2005 © Diego Schmidlin V20
Servlets_JSP_Teil1-P.ppt, V20
2005 © Diego Schmidlin
Servlets/JSP Teil1
Folie 29
Teil 1
Seite 15