Java - Webapplikationen

Werbung
Java - Webapplikationen
●
Bestandteile (HTTP, Servlet, JSP)
●
Aufbau (Model – View – Controller)
●
Datenverwaltung (Java Beans, Sessions)
●
Entwicklung (Projektstruktur, Sysdeoplugin für Eclipse)
17. Januar 2006
Jan Hatje
JAVA-Webapplikationen
1
HyperText Transfer Protocol (HTTP)
HTTP dient der Kommunikation zwischen Webserver und Webbrowser
● HTTP ist ein zustandsloses Protokoll
● Request Methoden
●
1) GET: Standardmethode, Parameter werden an die URL angehängt
2) POST: Für grössere Datenmengen, Parameter befinden sich im Requestbody
●
Response (HTML, Dateien)
Client
(Browser)
Request (GET oder POST)
Server
(Webserver)
Response (HTML)
Verbindungsabbau
JAVA-Webapplikationen
2
Webserver Apache Tomcat
Sun veröffentlicht nur die Spezifikation für Webserver
● Apache implementiert diese mit Tomcat
●
Client
z.B.
Browser
Request
Response
Webserver
z.B. Apache
(statische
Inhalte)
dynamische
Inhalte
Servletcontainer
z.B. Tomcat
(entsprechende
Servlets werden
aufgerufen und
die Ausgabe
zurückgegeben)
Fordert der Client dynamische Inhalte an, leitet der Webserver die
Anfrage an den Servletcontainer weiter
● Tomcat kann auch selbständig arbeiten, wird aber meist zusammen mit
einem Webserver eingesetzt
●
JAVA-Webapplikationen
3
Servlets
●
Servlets sind vollstänig in Java implementiert
●
Sie werden auf dem Server abgearbeitet
●
Der Client “sieht” nur HTML (Benötigt keine JRE)
Servlet
CGI
+ Geschwindigkeit, für jede Anfrage
wird nur ein Thread erzeugt.
– Geschwindigkeit, für jede Anfrage
wird ein extra Prozess erzeugt.
+ Einfache Kommunikation zwischen
Objekten (z. B. Datenbankanbindung kann geteilt werden)
– Aufwendige Kommunikation
zwischen Objekten
– Nur Java möglich
+ CGI ist eine Schnittstelle → große
Auswahl an Sprachen
JAVA-Webapplikationen
4
Servlets Codebeispiel
public class MyClass extends HttpServlet
{
public void doGet (HttpServletRequest req,
HttpServletResponse res)
{
...
PrintWriter out = res.getWriter();
out.println("<HTML><BODY>");
out.println("<H1>Output</H1>");
...
if (req.getParameter("param1") != null)
{
var1 = req.getParameter("param1");
}
...
}
public void doPost (HttpServletRequest req,
HttpServletResponse res)
{
...
}
}
JAVA-Webapplikationen
Servlet muss von der Klasse
“HttpServlet” abgeleitet werden.
In “doGet” werden Client Anfragen
vom Typ GET verarbeitet.
Objekte “HttpServletRequest” und
“HttpServletResponse” bieten
Informationen über die Anfrage bzw
Mechanismen für die Antwort.
Methode “getWriter()” von
“HttpServletResponse” schreibt die
Antwort für den Client.
Methode “getParameter(...)” bietet
Zugriff auf die vom Client
gesendeten Parameter.
5
JSP (Java Server Pages)
Servlets sind aufwendig, da sie auch statische Inhalte ausgeben
→ JSP trennen dynamischen und statischen Teil:
●
●
HTML (statische Elemente)
●
Java (Logik und dynamische Inhalte)
●
JSP spezifische Elemente (Arbeitserleichterung)
JSP werden vom JSP-Compiler in ein Servlet umgewandelt
1. Client fordert eine JSP an
2. Server wandelt die JSP, wenn sie erstmals aufgerufen wurde
3. Server führt das generierte Servlet aus und antwortet dem Client
JAVA-Webapplikationen
6
JSP Codebeispiel
<body><html>
<%@ page import = "java.util.*" %>
<%@ page include file = "url" %>
Hallo <%= userName %>
Time: <%= new Date() %>
<%
...
int param1 = 0;
if (param1 == request.getParameter("param2")
{
out.println( "Alles ok" );
...
}
else
...
HTML-Tags
Direktiven:Anweisungen für das
globale Dokument
Ausdrücke: Variable oder
Rückgabewert einer Methode wird in
Ausgabestrom geschrieben
Skriptlets: beliebiger Javacode.
Request (httpServletRequest)
Response (httpServletRersponse)
%>
<%-- Kommentar -->
<jsp:forward page="nextPage.jsp"/>
</body></html>
JAVA-Webapplikationen
Kommentar in einer JSP
Aktionen: starten spezielle JSPFunktionalitäten.
7
MVC - Modell
●
Servlets und JSP werden schnell unübersichtlich
●
Wiederverwendbarkeit von Projektteilen ist schwierig
→ Ein Projekt sollte in drei Einheiten getrennt werden:
●
Model (Daten der Anwendung)
●
View (Repräsentation der Daten)
●
Controller (Verarbeitung der Daten, Aufruf von Views)
View
update
JAVA-Webapplikationen
Controller
Model
8
MVC 2 - Modell
Dispatcher
request
Controller
Servlet
Servlet
Servlet
Servlet
Javaklasse
oder Servlet
response
Servlet
Servlet
Servlet
JSP
Servlet
Servlet
Servlet
Java Bean
View
Model
JAVA-Webapplikationen
9
Java Bean
JSP
Java Bean
public class UserDataBean {
private String userName = new String();
private int status = 0;
<body><html>
...
<jsp:useBean id="userData"
class="MyProject.UserDataBean" />
public String getUserName() {
return userName;
}
Hello
<jsp:getProperty name="userData"
property="userName" />
public void setUserName(String userName) {
this.userName = userName;
}
<form>
public int getStatus() {
return status;
}
...
<input name="userName" type="text">
<input name="status" type="text">
public void setStatus(String status) {
this.status = status;
}
</form>
<jsp:setProperty name="userData" property="*"/>
...
</body></html>
JAVA-Webapplikationen
}
10
Session
Daten können nicht über mehrere Anfragen gespeichert werden, da
HTTP zustandslos ist → Sessions müssen indirekt angelegt werden:
●
Eine Session wird über eine ID in einem Cookie identifiziert
●
Clientanfragen können einem bestimmten Nutzer zugeordnet werden
●
Objekten werden Attribute zugeordnet, über die sie identifiziert
werden
JSP
Servlet
<% MyProject.UserData udat =
(MyProject.UserData)session.getAttribute(
"userData"); %>
...
<%= udat.printAddress() %>
JAVA-Webapplikationen
HttpSession ses = requ.getSession(true);
UserData udat = (UserData)
ses.getAttribute("userData");
if(udat == null) {
udat = new UserData();
ses.setAttribute("userData", udat);
}
11
Sysdeo - Eclipseplugin
●
Tomcat kann direkt über Eclipse
gesteuert werden.
●
Projekttyp “Java → Tomcat Projekt”
●
Eclipsedebugger steht zur Verfügung
●
Projektexport in *.war – Dateien
●
Automatische Anpassung von “server.xml” (Eclipse Workspace
kann benutzt werden)
JAVA-Webapplikationen
12
“Tomcat Projekt” - Struktur
Allgemeine Klassendateien von
Tomcat für Servlets und JSP
Hier befindet sich die “normalen” JavaKlassen und diejenigen für die Servlets
Die vom JSP-Compiler generierten Servlets
*.jar-Dateien, die für das Projekt benötigt werden
“web.xml” ordnet jedem Servlet eine URL zu,
über die es aufgerufen wird
JSP, HTML, ... -Dateien können im
Projektverzeichnis beliebig angeordnet werden
JAVA-Webapplikationen
13
Herunterladen