Title | Zusammenfassung Stichpunkte |
---|---|
Author | Maic Siemering |
Course | Web-Programmierung |
Institution | FernUniversität in Hagen |
Pages | 32 |
File Size | 907.1 KB |
File Type | |
Total Downloads | 234 |
Total Views | 397 |
Oktober 2016 WEB PROGRAMMIERUNG 1 Web Applikation: Software auf einer entfernten Hardware (Server) die lokal nicht installiert wird, um auf sie zuzugreifen Servlet oder Web Seite, die mit JSP oder JSF entwickelt wurde. 2. BASISTECHNOLOGIEN Definition World Wide Web Anwendung: Kommunikation HTTP, Cli...
Oktober 2016
WEB PROGRAMMIERUNG 1.MOTIVATION
Web Applikation: Software auf einer entfernten Hardware (Server) die lokal nicht installiert wird, um auf sie zuzugreifen
Web-Komponente: Servlet oder Web Seite, die mit JSP oder JSF entwickelt wurde.
2. BASISTECHNOLOGIEN
Definition World Wide Web Anwendung:
Client-Server-Anwendung Kommunikation über HTTP, Client ist ein Browser
Spezifika:
Gestaltungsmöglichkeiten Fenster Zulässige Programmabläufe Kommunikationsaufwand Portabilität Verfügbarkeit
// 2.1.1 Thin vs Rich Client 2.1.2 Code on Demand Laden von Code vom Server: JavaScript oder Applets 2.1.3 Web-Server
Software die eine HTTP Schnittstelle anbietet.
2.2 URI and URL URI: “scheme : scheme-specific-part”
URL – Uniform Resource Locator URN – Uniform Resource Name
2.3 Protokolle IP, TCP, UDP und HTTP Schichten:
Anwendungs -> HTTP Transport -> TCP UDP Vermittlung -> IP
// 2.3.1 TCP und UDP
2.3.2 HTTP
// Request und Response Schema // 2.3.3 HTTPS 2.4 HTML und XML Wird bestimmt durch den Content-Type. 2.4.1 HTML Tags:
Kommentar:
Absolute und relative Links (/ vs ./ oder ‚’)
Verweisende Tags: a, img
Schlüsselzeichen müssen als „Entity“ geschrieben werden (< -> <)
Formularelemente müssen innerhalb einem form-Tag liegen (input, textarea, select, option)
// Hint: POST versetzt nur die Queryparameter eines GET in den Body 2.4.2 XHTML HTML im strikten XML Format. -> Ähnlich, jedoch anderer Dokumentenkopf 2.4.3 XML – Extensible Markup Language Baumartiger Aufbau
Oberstes Element -> Wurzel Knoten
Case sensitive
Strikt: Tags müssen geschlossen werden, Attribute müssen Werte zugewiesen bekommen
DTD – Dokument Type Definition: Notation über die erlaubten Elemente im xml Dokument
Über wird zu Beginn der Typ der xml und die DTD angegeben (nach dem Versions und Encoding Hinweis)
2.5 statisch, dynamisch und generierte Inhalte DHTML -> Dynamisches HTML (HTML mit JavaScript)
2
CGI – Common Gateway Interface -> Request werden an Programme/Scripte geleitet und das Ergebnis als Response genutzt
2.6 Session Session-ID als erkennungsmerkmal um Zustand zuzuordnen.
Speicherorte:
1. URL-Rewriting Session-ID kann von Client oder Server eingesetzt werden als Query Parameter 2. versteckte Formularfelder Nur bei form Feldern möglich 3. Cookies Cookies sind clientseitig unterstützder Speicher, der bei jedem Request vom Browser als Header mitgegeben wird. Ggf. werden Cookies vom Browser nicht akzeptiert
3. SPRACHEN 3.1 CSS 3.2 PHP
Datentypen
Funktionen
Klassen
3.3 JavaScript Grundstein 1995 Clientseitig ausgeführter Code Speziele Objekte zur interaktion mit HTML: o screen – stellt Informationen über Bildschirm bereit o window – repräsentiert fenster in einem Browser o document – HTML Dokument o document.findElementById() -> HTML Element (.innerHTML: Inhalt des Elements) Ereignisse: o Mauso Tastaturo Objekto Formular-
4. TECHNOLOGIEN 4.1 ASP.NET und Java EE
3
ASP.NET – Framework, keine Programmiersprache o ASP.NET Web Forms – Steuerelemente und Ereignisse o ASP.NET MVC – Folgt dem MVC Patter
o ASP.NET Web Pages – HTML + Code Java EE – Spezifikation für ein Web System o Schichten: Client Web Business/Service Persistence o Beispiel Spezifikationen: Enterprise Java Beans JSP Java EE Application Deployment Java Servlets o Enthaltene Features: Transaktionen Kommunikation zwischen Komponenten Unterschiede: o Java EE herstellerunabhängig o .Net sprachunabhängig
4.2 Ajax – Async JavaScript and XML Updaten von Teilen einer HTML Seite XMLHttpRequest-Objekt kann via JS zugegriffen werden o Usage: new (), .open(method, url, async), .send() 4.3 jQuery – JS Bibliothek Zentrale Aufrufform ist $(‘selector’) Für Lifecycle management stellt jQuery einige Funktionen zur verfügung wie z.B. $(document).ready(function() {})
Unterstützung von Ereignissen Mächtige CSS Selektoren (Seite 66 Tabelle 4.2)
5. MEDIEN 5.1 Bildformate
Pixel vs Vektor Farbtiefe: 24bit -> RGB -> 8 bit pro Farbe = 256 Abstufungen Nachteil Vektor: Keine Bildbearbeitung durch Filter möglich
5.2 Video Videoformat: Spezifikationen wie Auflösung, Bildfrequenz, Farbtiefe, Tonspur Videocodec: digitale Kodierung/Dekodierung
6. WEBBROWSER 6.1 Verbreitung moderner Webbrauser Führende Browser: 4
o o o o o o
Chrome (Größter Marktanteil 2015) Firefox Safari IE Opera Edge (neu)
6.2 Grundlegende Funktionsweise Hauptkomponenten (Grafik Seite 79): o Benutzerschnittstelle o Browser-Modul o Rendering o Netzwerk o UI-Backend o JS Interpreter o XML Parser o Datenspeicher
7 EINSTIEG JAVA EE 7.1 Java EE im Überblick Spezifikation = Gesamtheit an Vorgaben, nach denen etwas produziert wird 3 Schichten Architektur: Client, Java EE, Datenbank-Server 4 Container: o Web Container (Java Servlet, JSF, JSP) o EJB Container (Services/Beans) o Applet Container o Application Client (Java GUI-Anwendung)
5
Java Persistence API – Persistierung von Daten durch ORM
7.2 Verzeichnisstruktur der Java EE-Webschicht Web Applikationen werden als WAR gepackt o /WEB-INF – Kein Zugriff von außen, Server relevantes o /WEB-INF/classes – Java Klassen o /WEB-INF/lib/*.jar – Java Bibliotheken o /WEB-INF/web.xml – Konfiguration o /META-INF – Metainformationen über das Archiv o /* - Statische Dateinen 7.3 Konfiguration der Web-Anwendung
Konfiguration: Menge von Parametern, Eigenschaften und Regeln, die eine Anwendung beschreibt Seit Java 5 auch mit Annotationen
7.3.1 Der Deployment Descriptor web.xml
Bereiche (Code Beispiel Seite 89): o
ServletContext-Initialisierungsparameter
o
Session-Konfig
o
Servlet-Deklaration
o
Servlet-Mappings
o
Filter-Definitionen
o
Filter-MAppings
o
Welcome File List
o
Fehlerseiten
7.3.2 Konfiguration durch Annotationen
Annotationen besitzen selbst keinen Effekt, dienen jedoch als Marker
@WebServlet – Definiert eine Klasse als Servlet
Servlet erweitert HttpServlet
8. SERVLETS
Servlet = Java Klasse, welche Requests bearbeitet.
8.1. Request Ablauf 1. Aufnahme des Request und konvertierung in HttpServletRequest 2. Erzeugen eines leeren HttpServletResponse (beinhaltet PrintWriter) 3. servlet.service(...) – Eine Art Dispatch -> leitet an passende Methode weiter 4. doXXX(...) ->
6
8.2. Aufgabe, Lebenszyklus, Thread-Sicherheit Servlet Aufgaben: o vom Client gesendete Daten lesen o vom Client gesendeten HTTP Request Header lesen o Ergebnisse erzeugen o HTTP Response Header setzen o Antwort seite erstellen Lebenszyklus eines Servlet: o Initialisierung o Request-Bearbeitung o Zerstörung Servlet ist Application Scope -> muss threadsicher sein Servlet sollte stateless sein (kein locking!!!) 8.3. Scopes Datenaustausch: o Servlet Chains o Domain Sevlets Datenaustausch über einen temporären Speicher (Scope) o Scope().setAttribute(name, obj), .getAttribute(name), ... Scopes: o Request Scope definiert durch HttpServletRequest o Session Scope definiert durch HttpSession.SessionObject 7
o o
Application Scope definiert durch .getServletContext Page Scope – nur in JSP
8.3.1. Java Beans Speicher von Daten meist in JavaBeans Anforderungen an eine Java Bean: o public constructor o no public attributes o getter and setter for private attributes Attribute + Getter|Setter = Property Getter/Setter = Accessor Methods Getter kann für Boolean auch isName heißen 8.4. Servlet API
8
HttpServlet. o service(ServletRequest req, ServletResponse res) o doXXX(HttpServletRequest req, HttpServletResponse resp) o init()/ destroy()
HttpServletRequest. o getParameterMap() o … o getHeaderNames() o getHeader(String name) o … o getRequestURI() -> String (z.B. “index.html”)
o o o
getRequestURL() -> StringBuffer (z.B. http://…/index.html) getSession() -> SessionObject getRequestDispatcher(String path) -> RequestDispatcher zur Suche nach anderem Servlet
HttpResponse. o setContentType(String type) o getWriter() -> PrintWriter o encodeURL(String url) -> String encoded URL und hängt Session-ID an, wenn keine Cookies benutzt werden o addCookie(Cookie c)
HttpSession. o invalidate() o getSevletContext() -> ServletContext o getRequestDispatcher(String path) -> RequestDispatcher RequestDispatcher. o forward(ServletRequest, ServletResponse) kein write auf den Request vorher o include(ServletRequest, ServletResponse) write auf request vorher möglich
8.5. Beispiel Systemanmeldung mit Servlets(Seite 109 ff) ShowSignInServlet o Zeigt Anmeldeformular CheckSignInServlet o Prüft Credentials
9. JAVASERVER PAGES
9
Eigenschaften: o unterstützt Entwurf dynamischer Web-Seiten o einbettung von Java in statischem HTML o JSP spezifische Tags unterstützen trennung von Logik und Anzeige JSP wird zur Laufzeit in Servlet übersetzt
9.1. Request
9.2. Template-Text, JSP-Kommentare und JSP-Direktiven Template-Text: o statischer HTML Code, der nicht verändert wird JSP-Kommentar o JSP-Direktive o o page import 10
o o
errorPage isErrorPage contentType include file taglib prefix uri
9.3 Scripting-Elemente dynamisch erzeugte Inhalte, Berechnungen, DB Zugriffe, etc. implizite Objekte o pageContext -> PageContext o request -> HTTPServletRequest o response -> HTTPServletResponse o session -> HTTP Session o application -> ServletContext o out -> JSPWriter JSP-Deklarationen o Deklaration von Variablen und Methoden (achten auf Threadsicherheit) -> Werden zu Variablen und Methoden des erstellten Servlets o JSP-Ausdruck o o Darf nur einen Ausdruck beinhalten, der in einen String umgewandelt werden kann JSP-Scriptlet o o Ausgaben über out.printLn() 9.4 JSP-Aktionen Form: o Wie HTML Tags, ggf auch mit
Beispiele: o o o id dient als name der bean o name referenziert die aufzurufende Bean o
9.5 EL - Expression Language
11
$audruck oder ${ausdruck}
#audruck oder #{ausdruck} -> lazy ausgewerteter ausdruck
Zugriff auf Objekte o
Page Scope > Request Scope > Session Scope > Application Scope
o
Falls ein Wert in einem Ausdruck nicht vorhanden ist, wird keine Exception geworfen sondern null zurückgegeben
Relationen, logische und arithmetische Operationen o
Anstelle der Zeichen Operationen (==, !, &&) können textuelle Terme benutzt werden (eq, not, and)
o
Impliziete Typ Umwandlungen werden vorgenommen
Implizite Objekte o
pageContext -> PageContext
o
pageScope -> Map
o
requestScope -> Map
o
sessionScope -> Map
o
applicationScope -> Map
o
initParam -> Map
o
param -> Map
o
paramValues -> Map
o
header -> Map
o
headerValues -> Map
o
cookie -> Map
o
// $empty value -> prüft ob variable empty ist
Funktionen o
eigene Funktionen können hinzugefügt werden
9.6 JSTL – Java Server Pages Standard Tag Library
Bibliotheken o core – Erstellung URLs, einfache Schleifen, bedingte Anweisungen, Ausnahmebehandlungen url value=““ - rewriting/encoding if test=““ – If... choosen, when, otherwise – If-Else, Switch Ersatz forEach items=”” var=”” forEach begin=”” end=”” var=”” o xml – Bearbeitung von xml o fmt - Internationalisierung o sql – Einbindung relationaler Datenbanken o functions – Funktionen für die EL eingebundene Funktionen warden über Namensräume abgegrenzt Bibliotheken müssen via taglib-Direktive geladen warden o Format:
9.7 Beispiel Systemanmeldung mit Servlet und JSP (Seite 136 ff) 12
10. SERVLETS UND JAVASERVER PAGES TECHNOLOGIE AUS SOFTWARE ENGINEERING SICHT
Grundregeln o Trennung von Verantwortlichkeiten Module ohne Überlappung o Kohäsionskriterium Verantwortung für nur eine fachliche/logische Aufgabe MVC Pattern o Controller -> Servlet o View -> JSP Seiten o Model -> EJB + Entities o Flow: Servlet nimmt Request an & Fragt EJBs nach Daten & legt diese in einen Scope & Leitet auf JSP um JSP zeigt Template + Daten aus dem Scope
10.1. Servlet Nur delegierende Funktion o -> EJB o -> Scope o -> JSP 10.2 JSP-Seite Visualisierung von Daten aus dem Scope Keine Aufrufe der Anwendungslogik/ EJBs 10.3 Anwendungskern Reine Serviceschicht 10.4 Vorteile der Strikten Umsetzung des MVC-Patterns Komplexitätsbeherrschung Aufteilung der Komponenten auf Spezialisten
11. ÜBERSICHT ÜBER ARCHITEKTURMUSTER UND ARCHITEKTUR
13
Softwarearchitektur o zentrale Realisierungsentscheidungen o grundsätzliches Strukturierungsschema o definiert große strukturbildenden Bestandteile (Komponenten) und deren Zusammenspiel ggf. Aufsplittung in Teilkomponenten Komponenten bündeln Klassen und Schnittstellen bezüglich einer Aufgabe/Domain Komponenten sollten disjunkt sein o Beipiel 3 Schichten Architektur
Idee: 3 übereinander liegende Schichten, jede Schicht darf nur darunterliegende Schichten benutzen Nichtfunktionale Aspekte (Usersicht): Performanz Sicherheit Verfügbarkeit Integrierbarkeit Robustheit Nichtfunktionale Anforderungen (technisch): Testbarkeit Integrierbarkeit Wartbarkeit Änderbarkeit Portierbarkeit Skalierbarkeit Wiederverwendbarkeit Architektur ist häufig ein Kompromiss Kriterien für eine gute Architektur: adäquate Basis zur Realisierung der Anforderungen (f und nf) unabhängig von den Spezifika (allgemein wie möglich, speziell wie nötig) Komponenten besitzen eine hohe Kohäsion + Seperation of Concerns Komponenten kaum gekoppelt (ggf. lose) -> Übersichtlichkeit
o
o
o o
12. SOFTWAREARCHITEKTURMUSTER 12.1 Client-Server
2 Komponenten: Client + Server
Server bietet Dienste
Client nutzt diese
12.2 Schichten
strikt (nur die unterhalb liegende Schicht)
allegmein (alle unterhal liegenden Schichten) o
Weniger Delegierungen
12.3 Model View Controller
Model: Anwendungskern?
View: UI liest vom Model
Controller: Annahme von Userereignissen
13. SOFTWAREARCHITEKTUR 14
13.1 5-Schichten-Architektur
Browser + 4 Softwareschichten
Schichten: o
Web-Schicht
o
Anwendungslogik
o
Anwendungsobjekte/Entitäten Schicht
o
Datenhaltung
13.2 Model-1-Architektur Kommt aus der Client-Server-Architektur Client = Webschicht (komplett JSP) Server = Model 13.3 Model-2-Architektur (Beispiel Seite 159 ff) Controler (Servlet) + Model + View (JSP)
14. EINSTIEG IN JSF
Strikte Trennung zwischen Java und HTML Ab JSF 2.0 ersetzen Facelets JSP zur View Definition
14 .1 Zentrale Bestandteile von JS
15
FacesServlet o
ist eine Art zentraler Controller
o
Request -> FacesContext
o
Pro Request eine Instanz Lifecycle
Facelets (siehe Kapitel 16)
Komponente
o
ist ein wiederverwendbares Element in einer JSF Seite
o
öffnendes + schließendes Tag
o
definiert durch Tag Bibliothek
Expression Language o
Managed Bean o
ist eine JavaBean
o
dient als Schnittstelle zwischen Präsentationsicht und Anwendungslogik
Validierung o
JSF besitzt Standard-Validatoren
o
Nutzung durch Tag
Konvertierung o
JSF besitzt Standard Validatoren
o
Nutzung durch Tag
Ereignis o
Verbindung mit Serverseitigen Objekten via Managed Beans
Events -> EventListener
Navigation o
Via Tags
15. DER JSF-LEBENSZYKLUS
16
Schritt 1- Ansicht wiederherstellen o Wiederherstellung der JSF Seite o Elemente und Komponentenbaum werden in einem Komponentenbaum organisiert Schritt 2 – Request-Parameter anwenden o Requestparameter werden rekursiv durch den Komponentenbaum durchgereicht und ggf. zugeordnet (Text in einem Textfeld, etc.) Schritt 3 – Validierung durchführen o Werte werden konvertiert und validiert o Bei einem Fehler weiter mit Schritt 6 und einer Fehlermeldung Schritt 4 – Model aktualisieren
o
Werte werden in gebundene Managed Beans übertragen (Bindung durch value Parameter)
Schritt 5 – Anwendung ausführen o Ausführung der Anwendungslogik, die entsprechenden Methoden werden durch Events getriggert o Festlegung welche Seite folgt Schritt 6 – Antwort rendern o Aufbau des Komponentenbaumes der neuen Seite o Rendern des Antwortdokuments o Serialisierung des Komponentenbaumes
16. FACELETS ALS SEITENDEKLARATIONSSPRACHE
JSF Seite ist ein xhtml Dokument Trennung von Tags durch Namensräume
16.1 Die HTML-Tag Library
Komponenten Gruppen: (-Komponenten) o Eingabeo Ausgabeo Befehlso Auswahlo Formularo Bildausgabeo Panelo Nachrichten-
Tagliste siehe S. 173
16.2 Die Core-Tag Library Beispiel Code S. 174 ff (Länderliste) 16.3 Validatoren
Es stehen einige Tags zur Validierung zur Verfügung o validateRequired o validateLength o validateLongRange o ...
Bei einer fehlschlagenden Überprüfung, werden Fehlermeldungen auf sogenannten message-Elementen ausgegeben, die den Feldern zugeordnet sind
Sollte die Web App im Entwicklungsmodus sein, werden die Nachrichten direkt angezeigt, im Produktionsmodus nur wenn erwünscht.
17. MANAGED BEANS 17
Managed Bean ist eine Java Klasse, die mit @Named Annotiert ist
17.1 Implementierung einer Managed Bean @Named + @SessionScoped -> Session Bean 1...