5. JavaServer Faces (JSF) / JEE

Größe: px
Ab Seite anzeigen:

Download "5. JavaServer Faces (JSF) / JEE"

Transkript

1 5. JavaServer Faces (JSF) / JEE 5.1 Grundlagen 5.2 Einführendes nulltes Beispiel 5.3 Validierung 5.4 Einschub: Contexts and Dependency-Injection 5.5 JSF mit JPA und JNDI 5.6 Funktionale Erweiterung 5.7 Sicherheit 5.8 Weitere JSF-Möglichkeiten 5.9 JSF-Lebenszyklus 5.10 Templates und Komponenten 5.11 Nutzung von Ajax 5.12 Testen von Web-Applikationen - Selenium 5.13 JSF-Erweiterungen 259

2 Literatur E.Burns, C. Schalk, JavaServer Faces 2.0: The Complete Reference, Mc Graw Hill, New York, 2010 M. Marinschek, M. Kurz, G. Müllan, JavaServer Faces 2.0, dpunkt, Heidelberg, 2010 (im Wesentlichen auch: D. Geary, C. Horstmann, Core JavaServer Faces, 3. Auflage, Prentice Hall, USA, 2010 K. Ka Iok Tong, Beginning JSF 2 APIs and JBoss Seam, Apress, Berkeley, USA, 2009 Standard: Sun, JSR 344: JavaServer Faces 2.2, Sun, JEE7 Tutorial, Bücher nutzen teilweise auf Eclipse und JBoss; nicht notwendig, funktioniert fast alles mit Netbeans und Glassfish / Apache 260

3 5.1 Grundlagen verschiedene Ziele von JSF-Applikationen Software, die Web als zusätzlichen Nutzen hat (z. B. Web- Präsenz, Kataloge, Bestellmöglichkeiten) verteilte Softwaresysteme, die Netz als Komponentenverbindung nutzen (z. B. B2B) Arbeitsplatzsoftware, die auch das Web nutzt (nahtlose Integration, Web ist unsichtbar ) letztes Ziel gewinnt immer mehr Bedeutung für andere Ziele Aber: Nicht immer ist Web-fähige Software gewünscht! 261

4 Technische Herausforderungen (1/2) auf welchem Rechner läuft welche Software zentraler Server oder peer-to-peer Client-Server, wer ist thin, wer ist fat Browser-fähig oder standalone welcher Browser, welche Sicherheitseinstellungen, welche Plugins, welches HTML Wie bekommt Kunde Software zum Laufen, wie funktionieren Updates darf man, muss man offline arbeiten können Usability 262

5 Technische Herausforderungen (2/2) Sicherheit wie Daten sicher verschicken, wem gehört Internet, wer muss zuhören dürfen Performance und Stabilität schnelle Antworten auch bei Last saubere, reproduzierbare Transaktionen was passiert bei Netzausfall 263

6 Typische splattformen (Ausschnitt).Net / Microsoft ASP.Net (Active Server Pages, gute Abstraktion, zunächst zu wenig Web-Server (IIS)) Silverlight (Browser-PlugIn) für RIA, mittlerweile auch lokal Oberflächen basierend auf WPF (Windows Presentation Forum, vektorbasiert, anfänglich zu langsam) Java Servlets, JSP, JSF [später genauer], angegeben mit steigenden Abstraktionsgrad sehr weit verbreitet verschiedene neue Frameworks (z. B. Apache Wicket) GWT (Google Widget Toolset), SW einmal in Java schreiben, dann individuell für Browser in Javascript übersetzen JavaFX, eigene Sprache nutzt im Browser JRE Meinung: Silverlight und JavaFX gegenüber HTML5 und aktuell noch Flash immer im Nachteil, was mit JavaFX2 passiert unklar 264

7 Konzept eines Seitenaufrufs Client HTTP-Request HTTP-Response mit HTML-Datei im Body HTML (Hypertext Markup Language) Web- Container Application Server Auszeichnungssprache mit festgelegten tags zum Aufbau der Ausgabe Ebene 3/4 typisch TCP/IP, Session Ebene 5: HHTP, Darstellungsebene 6: HTML, Programmebene 7: JVM EJB- Container 265

8 HTTP-Ablauf Client: Request get, post, head, put,... URL HTTP1.x Header Info: Accept, Cookie,... Body: Post-Parameter Server: Response Statusmeldung: HTTP1.x 200 OK, oder 404 Error Header Info: Content-type, set-cookie,... Body: Dokument Verbindungsabbau Protokoll ist zustandslos/gedächtnislos; Client wird bei erneutem Request ohne Trick nicht als Bekannter erkannt 266

9 Web-Server mit Container nutzen Servlet: Wortkreation aus den Begriffen Server und Applet, (serverseitiges Applet) Web-Server leitet HTTP- Request an Servlet weiter Servlet kann Antwort (HTML-Code) berechnen Servlet kann Anfrage- Informationen und Serverumgebung nutzen Servlet kann mit anderen Servlets kommunizieren Container 267

10 Motivation für JSF Die Widerverwendbarkeit von Servlets ist gering Innerhalb jeder JSP bzw. jedes Servlets müssen ähnliche Schritte ausgeführt werden Nur ein Teil der Applikationslogik kann in Tag-Bibliotheken gekapselt werden Workflow ist in der Applikationslogik versteckt, dadurch schwer nachvollzierbar ab JSF 2.0 sehr flexible Gestaltungsmöglichkeiten, u. a. AJAX- Einbettung Hinweis: wir betrachten nur Grundkonzepte (-> mehr evtl. Semesteraufgabe) 268

11 Web-Server mit JSF- (und EJB-) Unterstützung Beispiele: Apache Tomcat BEA WebLogic Server IBM WebSphere (Apache Geronimo) JBoss Oracle WebLogic Sun Glassfish Enterprise Server (Glassfish) 269

12 Konzeptübersicht Web-Seite in XHTML Input-Komponente beschrieben in XHTML... Web-Seite in XHTML Output-Komponente beschrieben in XHTML... event leitet auf Folgeseite liest Modell Java-Programm im Container im Server 270

13 XHTML Idee: HTML nicht XML-konform und zu viele Freiheiten XHTML in fast allen Elementen wie HTML XHTML basierend auf XML-Schema leichter zu verarbeiten Unterschiede zu HTML (Ausschnitt) Tags und Attribute müssen klein geschrieben werden Attributwerte immer in Anführungsstrichen boarder="7" korrekte XML-Syntax: <br/> nicht <br> generell saubere Terminierung <input... /> XHTML2 wegen HTML5 zurückgestellt (verschwimmt damit) Standard: Literatur: U. Ogbuji, XHTML step-by-step, 271

14 Web-GUI-Komponenten JSF bietet alle klassischen GUI-Komponenten zur Darstellung und Bearbeitung an Grundidee: Komponenten schicken bei Veränderungen Events Nutzung von MVC2 Komponenten als XHTML eingebettet <h:inputtext id="imname" value="#{modul.name required="true"/> <h:outputtext id="omname" value="#{modul.name"/> Kontakt zum Java-Programm über Methodenaufrufe (lesend und aufrufend, z. B. modul.setname(...), modul.getname() große Komponenten können aus kleineren komponiert werden 272

15 5.2 Nulltes JSF-Beispiel (1/11) Aufgabe: Modul (Name + Nummer) eingeben und auf zweiter Seite wieder ausgeben Beispiel zeigt: Konzept der XHTML-Nutzung erste JSF-Befehle Seitenmanövrierung durch JSF 0. Beispiel zeigt nicht: ordentliche Softwarearchitektur (Controller und Model trennen) Validierungsmöglichkeiten für Eingaben Layout-Gestaltung viele weitere coole Dinge 273

16 Nulltes JSF-Beispiel (2/11) - Start index.xhtml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html"> <h:head> <title>moduleingabe</title> </h:head> <h:body> <h:form> <h:outputtext value="modulname "/> <h:inputtext id="mname" value="#{modul.name" required="true"/><br/> <h:outputtext value="modulnummer "/> <h:inputtext id="mnr" value="#{modul.nr" required="true"/><br/> <h:commandbutton value="abschicken" action="#{modul.uebernehmen"/> </h:form> </h:body> </html> 274

17 Nulltes JSF-Beispiel (3/11) - Analyse der Startseite Einbinden der JSF-Bibliotheken <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f ="http://xmlns.jcp.org/jsf/core" > Nutzung von Standard XHTML (vereinfacht, da so als Standardnamensraum gesetzt) enge Verwandtschaft HTML zu XHTML (<h:form>) für value="#{modul.name" offene Fragen: was ist modul? ( -> Managed Bean) warum #? (Trennung von ausführbaren Elementen) was passiert bei modul.name? (set/get abhängig von in/out) Ausblick: action="#{modul.uebernehmen", echtes Event- Handling (Methodenaufruf) 275

18 Nulltes JSF-Beispiel (4/11) - Ausgabe ausgabe.xhtml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html"> <h:head> <title>modulausgabe</title> </h:head> <h:body> <h:form> <h:outputtext value="modulname: "/> <h:outputtext id="mname" value="#{modul.name"/> <br/> <h:outputtext value="modulnummer: "/> <h:outputtext id="mnr" value="#{modul.nr"/><br/> <h:commandbutton value="zur Eingabe" action="#{modul.eingeben"/> </h:form> </h:body> </html> 276

19 Nulltes JSF-Beispiel (5/11) - Managed Bean [1/3] package entities; import java.io.serializable; import javax.enterprise.context.requestscoped; public class Modul implements Serializable { private static final long serialversionuid = 1L; private int nr; private String name; public Modul(){ public Modul(int nr, String name) { this.nr = nr; this.name = name; 277

20 Nulltes JSF-Beispiel (6/11) - Managed Bean [2/3] public String uebernehmen(){ return "./ausgabe.xhtml"; public String eingeben(){ return "./index.xhtml"; public String getname() { return name; public void setname(string name) { this.name = name; public int getnr() { return nr; public void setnr(int nr) { this.nr = nr; //Manövrieren 278

21 Nulltes JSF-Beispiel (7/11) - Managed Bean public boolean equals(object object) { if (object==null!(object instanceof Modul)) return false; Modul other = (Modul) object; if (this.nr!= other.nr!this.name.equals(other.name)) return false; return // generieren lassen public int hashcode() { int hash = 5; hash = 47 * hash + this.nr; hash = 47 * hash + (this.name!= null? this.name.hashcode() : 0); return public String tostring() {return name+"("+nr+")"; 279

22 Nulltes JSF-Beispiel (8/11) - web.xml [1/2] Konfigurationsdatei für Servlets (hier benötigt) <?xml version="1.0" encoding="utf-8"?> <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee <context-param> <param-name>javax.faces.project_stage</param-name> <param-value>development</param-value> </context-param> <servlet> <servlet-name>faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.facesservlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> 280

23 Nulltes JSF-Beispiel (9/11) - web.xml [2/2] <servlet-mapping> <servlet-name>faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>faces/index.xhtml</welcome-file> </welcome-file-list> </web-app> in glassfish-web.xml (Glassfish-spezifisch) steht, wenn existent, z. B. <context-root>/vljsfnulltesbeispiel</context-root> 281

24 Nulltes JSF-Beispiel (10/11) - Projektstruktur 282

25 Nulltes JSF-Beispiel (11/11) - Ergebnis 283

26 Richtige Klassen und Annotationen nutzen! bei Korrekturvorschlägen immer auch richtige Klasse achten, steht nicht immer oben oder ist ausgewählt!!! falsche Klasse führt teilweise zu extrem schwer zu findenden Fehlern Historisch sind diese Klassen oft verwandt und ältere Ansätze werden nicht verschwinden 284

27 Einschub: IE 9 ggfls. Problem Programm läuft problemlos in Firefox und Chrome in IE 8 gab es auch keine Probleme in IE 9, erfolgt nach Drücken des Knopfes folgende Ausgabe 285

28 Einschub: IE 9 - Lösung Session-Informationen können statt im Server auch im Client gehalten werden entlastet Server, ist aber für Nutzer langsamer Ergänzung in web.xml: <context-param> <param-name>javax.faces.state_saving_method</param-name> <param-value>client</param-value> </context-param> Anmerkung: fehlt systematische Fehleranalyse: NetBeans 7.3.1, Glassfish 4, MS IE 9, MS IE 9 Nutzereinstellungen, Win 7 x64, 286

29 Einschub: korrekte Pfadangabe Browser zeugt immer vergangene Seite wenn nicht gewünscht, dann Manövrierungsstring ändern ist etwas langsamer (warum, später genauer) Scope setzen public String uebernehmen(){ return "./ausgabe.xhtml?faces-redirect=true"; public String eingeben(){ return "./index.xhtml?faces-redirect=true"; 287

30 Basisprinzip der Applikationssteuerung Im Controller: Aufruf einer Methode ohne Parameter vom Rückgabetyp String <h:commandbutton value="abschicken" action="#{modul.uebernehmen"/> Im Modell: public String uebernehmen(){ return "./ausgabe.xhtml"; Methode kann natürlich abhängig von Variablen unterschiedliche Seiten liefern Beachten: Navigation kann in den Tiefen des Codes verschwinden ( -> Konstanten nutzen, Architektur) Hinweis: wir werden noch Varianten kennenlernen 288

31 Lebensdauer von Informationen (Scope) Request Session Application nur ein Aufruf für eine Nutzer- Sitzung solange Zeit aktuelles Deployment läuft Anmerkung: Obwohl es verlockend ist, viele Informationen in Session oder Application zu legen, ist dies wegen Performance verboten (wird gespeichert, evtl. passiviert, hat wilde Referenzen, Zugriff muss ggfls. synchronisiert werden) fehlt: CoversationScoped; im Programm Scope starten und enden 289

32 Scope-Beispiel (1/5) - Bean-Klassen Modul als einfache Klasse (wichtig!) public class Modul implements Serializable {...// wie = public class ModulRequest public class ModulSession public class ModulApplication extends Modul{ 290

33 Scope-Beispiel (2/5) - Ausschnitt index.xhtml <h:form> <h:panelgrid columns="3" > <h:outputlabel for="mnamer" value="modulname "/> <h:inputtext id="mnamer" value="#{modulr.name"/> <h:message for="mnamer" /> <h:outputlabel for="mnrr" value="modulnummer "/> <h:inputtext id="mnrr" value="#{modulr.nr"/> <h:message for="mnrr" /> <!-- auch moduls und modula --> <h:commandbutton value="abschicken" action="#{modulr.uebernehmen"/> </h:panelgrid> </h:form> 291

34 Scope-Beispiel (3/5) - Ausschnitt ausgabe.xhtml <h:form> <h:messages globalonly="true"/> <h:outputtext value="modulname r: "/> <h:outputtext id="mnamer" value="#{modulr.name"/> <br/> <h:outputtext value="modulnummer r: "/> <h:outputtext id="mnrr" value="#{modulr.nr"/><br/> <h:commandbutton value="zur Eingabe" action="#{modulr.eingeben"/><br/> <!-- auch moduls und modula --> <h:commandbutton value="ausgabe wiederholen" action="#{modulr.uebernehmen"/> </h:form> 292

35 Scope-Beispiel (4/5) - Ein Nutzer, zwei Klicks 293

36 Scope-Beispiel (5/5) - Zwei Nutzer Nutzer 2 Nutzer 1 Zeit 294

37 Manövrieren vor JSF 2.0 Grundidee: Automat mit Seiten als Knoten (Zustände), Übergang findet durch String-Konstanten statt String-Konstanten sind Ergebnisse von (Action-) Methoden (oder stehen direkt in action="eingeben") index.xhtml ausgabe.xhtml 295

38 Manövrieren vor JSF faces-config.xml 1/2 <?xml version='1.0' encoding='utf-8'?> <faces-config version="1.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee <navigation-rule> <from-view-id>/index.xhtml</from-view-id> <navigation-case> <from-outcome>anzeigen</from-outcome> <to-view-id>/ausgabe.xhtml</to-view-id> </navigation-case> </navigation-rule> <navigation-rule> <from-view-id>/ausgabe.xhtml</from-view-id> <navigation-case> <from-outcome>eingeben</from-outcome> <to-view-id>/ index.xhtml </to-view-id> </navigation-case> </navigation-rule> 296

39 Manövrieren vor JSF Managed Bean // statt durch Annotationen können Beans auch in faces- // config.xml angelegt werden public class Modul implements Serializable { private static final long serialversionuid = 1L; private int nr; private String name; // fehlt: get- und set-methoden für Exemplarvariablen public Modul(){ public String uebernehmen(){ //Action-Methode // Zugriff auf Exemplarvariablen möglich return "ANZEIGEN"; public String eingeben(){ // Zugriff auf Exemplarvariablen möglich return "EINGEBEN";

40 Manövrieren vor JSF faces-config.xml 2/2 <managed-bean> <managed-bean-name>modul</managed-bean-name> <managed-bean-class>entities.modul</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> </faces-config> Vorteil der klassischen Navigation: Es gibt zentrale Stelle, an der es einen Überblick über mögliche Abläufe gibt Nachteile: JSF 2.0 bietet flexiblere Ablaufsteuerung XML ist schwer nachvollziehbar Konfigurationsdatei faces-config.xml bleibt trotzdem wichtig 298

41 Erinnerung: Konstanten in Programmen schlecht return "ANZEIGEN"; besser: Konstanten getrennt deklarieren public class Modul implements Serializable{ private final static string ANZEIGEN = "ANZEIGEN";... return ANZEIGEN; Alternativ: Klasse mit Konstanten package konstanten; public class Navigation{ public final static string ANZEIGEN = "ANZEIGEN";... return konstanten.navigation.anzeigen; sumgebungen erlauben dann einfache Suche und Änderung (Refactoring) 299

42 Standardattribut rendered (1/3) JSF-Elemente werden typischerweise ineinander geschachtelt (typische GUI-Idee der Schächtelchen in Schächtelchen) viele (Schachtel-)Elemente haben Attribut rendered; Boolescher Wert, ob Element dargestellt public class Mojo { private boolean jo=true; public Mojo(){ public boolean getjo() {return jo; public void setjo(boolean jo) {this.jo = jo; public String change(){ jo=!jo; return "./index.xhtml"; 300

43 Standardattribut rendered (2/3) - JSF-Seite <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html"> <h:head> <title>klickklack</title> </h:head> <h:body> <h:form id="f1"> <h:panelgrid id="p1" rendered="#{mo.jo"> <h:outputlabel value= HS rocks"/> </h:panelgrid> <h:panelgrid id="p2" rendered="#{!mo.jo"> <h:outputlabel value="os rocks"/> </h:panelgrid> <h:commandbutton action="#{mo.change" value="press"/> </h:form> </h:body> </html> 301

44 Standardattribut rendered (3/3) <?xml version='1.0' encoding='utf-8'?> oder in <faces-config version="1.2"...> faces-config.xhtml <managed-bean> <managed-bean-name>mo</managed-bean-name> <managed-bean-class>entities.mojo</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> </faces-config> 302

45 Strukturierung mit panelgrid / Kommentare mit h:panelgrid können einzelne Komponenten zu einem Block zusammengefasst und einheitlich behandelt werden (ähnlich zu JPanel in Swing) durch columns="3" eine Spaltenanzahl angegebbar Ausgabe erfolgt in Tabellenform Elemente werden zeilenweise ergänzt (?!) Kommentare In JSF-Seiten <!-- Dies liest eh keiner --> wandern in Ausgabe, Ausdrücke mit #{ werden ausgewertet Ergänzung in web.xml: <context-param> <param-name>javax.faces.facelets_skip_comments</param-name> <param-value>true</param-value> </context-param> 303

46 5.3 Validierung/ Fehleingaben im nullten Beispiel (1/2) Eingabe: Fehler wird automatisch unter der bleibender Seite ausgegeben j_idt7 ist interner Name, mname ist unsere id des Eingabefeldes 304

47 Fehleingaben im nullten Beispiel (2/2) Anpassung des Projektstatus (oder Parameter löschen) in web.xml (Development, UnitTest, SystemTest, Production) <context-param> <param-name>javax.faces.project_stage</param-name> <!-- <param-value>development</param-value> --> <param-value>production</param-value> </context-param> Applikation bleibt auf der Seite, keine sichtbare Fehlermeldung im Server-Log: INFO: WARNUNG: FacesMessage(s) wurde(n) in die Warteschlange gestellt, aber möglicherweise nicht angezeigt. sourceid=j_idt7:mname[severity=(error 2), summary=(j_idt7:mname: Validierungs-Fehler: Wert wird benötigt.), detail=(j_idt7:mname: Validierungs-Fehler: Wert wird benötigt.)] 305

48 Direkte Validierungen - einige Möglichkeiten <h:form> <h:panelgrid columns="3" > <h:outputlabel for="mname" value="modulname "/> <h:inputtext id="mname" value="#{modul.name" required="true" size="8" requiredmessage="nich leer" validatormessage="4 Zeichen"> <f:validatelength minimum="4" maximum="4"/> </h:inputtext> <h:message for="mname" /> <h:outputlabel for="mnr" value="modulnummer "/> <h:inputtext id="mnr" value="#{modul.nr" required="true" requiredmessage="mach Zahl eh" size="4" convertermessage="nomahle Zahl"/> <h:message for="mnr" /> <h:commandbutton value="abschicken" action="#{modul.uebernehmen"/> </h:panelgrid> </h:form> 306

49 Ausgaben beim Drücken von Abschicken 307

50 Globale Fehlermeldungen erzeugen und anzeigen public String uebernehmen() { if (name.equals("ooad")) { FacesContext ctxt = FacesContext.getCurrentInstance(); FacesMessage ms = new FacesMessage(); ms.setseverity(facesmessage.severity_error); ms.setsummary("ooad ist schon da"); ms.setdetail("ooad im Standard"); ctxt.addmessage(null, ms); return "ANZEIGEN"; //in ausgabe.xhtml <h:form> <h:messages globalonly="true"/> <h:outputtext value="modulname: "/> 308

51 Validierer selbst gestrickt (1/2) public class Modul implements Serializable {... // Validierungsmethoden können beliebigen Namen haben, // müssen aber die folgende Signatur haben public void pruefe(facescontext context, UIComponent component, Object value) throws ValidatorException { if (((String) value).equals("ooad")) { throw new ValidatorException(new FacesMessage( FacesMessage.SEVERITY_ERROR, "oweh", "ole ole"));... Hinweis: wird?faces-redirect=true genutzt, ist zu ergänzen: context.getexternalcontext().getflash().setkeepmessages(true); 309

52 Validierer selbst gestrickt (2/2) in index.xhtml <h:panelgrid columns="3" > <h:outputlabel for="mname" value="modulname "/> <h:inputtext id="mname" value="#{modul.name" validator="#{modul.pruefe"/> <h:message for="mname" /> 310

53 Erinnerung: Bean Validation nicht: Nutzer Oberfläche Java fachliche Ebene Datenzugriffsschicht DB besser: individuelle Datenvalidierung individuelle Datenvalidierung Java individuelle Datenvalidierung individuelle Datenvalidierung Nutzer Oberfläche fachliche Ebene Datenzugriffsschicht DB Datenmodell mit Validierungsregeln 311

54 Beispiel public class Modul implements Serializable { private static final long serialversionuid = message="dreistellig") private groups={validators.modulgroup.class) private String name; //... übliche Konstruktoren, get und set Hinweis: Implementierung des Validierers in Libraries benötigt (Klasseneigenschaften werden nicht unterstützt!?) 312

55 Beispiel @Constraint(validatedBy = Modulnamenregel { String message() default "Modul unerwuenscht"; Class<?>[] groups() default {; Class<? extends Payload>[] payload() default {; String[] verboten() default {; package validators; public interface ModulGroup { 313

56 Beispiel Bean-Validation (3/6) public class ModulnamenregelValidator implements ConstraintValidator<Modulnamenregel,String>{ private String[] niveau; public void initialize(modulnamenregel ca) { this.niveau=ca.verboten(); public boolean isvalid(string t, ConstraintValidatorContext cvc) { System.out.println("isValid"); for(string s:this.niveau) if(s.equals(t)){ cvc.buildconstraintviolationwithtemplate( "Modul in unerwuenschter Liste: " + Arrays.toString(niveau)).addConstraintViolation(); return false; return true; 314

57 Beispiel Bean-Validation (4/6) - index.xhtml <h:body> <h:form> <h:panelgrid columns="3" > <h:outputlabel for="mname" value="modulname "/> <h:inputtext id="mname" value="#{modul.name"> <f:validatebean disabled="false" validationgroups="validators.modulgroup"/> </h:inputtext> <h:message for="mname" /> <h:outputlabel for="mnr" value="modulnummer "/> <h:inputtext id="mnr" value="#{modul.nr" /> <h:message for="mnr" /> <h:commandbutton value="abschicken" action="#{modul.uebernehmen"/> </h:panelgrid> </h:form> </h:body> 315

58 Beispiel Bean-Validation (5/6) 316

59 Beispiel Bean-Validation (6/6) Bean Validation- (und JPA-) Realisierungen enthalten 317

60 Ordentliche Softwarearchitektur JSF-Seite <<managed-bean>> Controller Bean (Entität) #{controller.bearbeiten #{controller.bean.attribut #{controller.speichern Controller (und Bean) auch backing bean, Handler genannt bei DB-Nutzung greift Controller auf DB-Verwaltungsschicht zu; die verwaltet Bean-Objekte JPA einfach im Controller (besser eigener Schicht) nutzen (später schöner mit JEE als 318

61 5.4 Einschub: Contexts and Dependency-Injection Ausgangsszenario: Oftmals wird nur ein Objekt mit bestimmten Eigenschaften benötigt, Details sind uninteressant public class Modulverwaltung { private Set<Modul> module; Variable module benötigt nur eine zum Interface Set passende Implementierung Durch eine set-methode kann die gewählte Art der Set- Implementierung zur Laufzeit getauscht werden (vgl. auch Strategy-Pattern) public void setmodule(set<modul> m) { this.mosdule = m; Ansatz wird auch Setter-Injection genannt (Variante Constructor-Injection) 319

62 Injection (1/4): Ausgangssituation weitergehender Ansatz: Container übernimmt bei Objekt- Erstellung das passende Füllen von Exemplarvariablen alt: public class Modul { public String uebernehmen(){ return "./ausgabe.xhtml"; public String eingeben(){ return "./index.xhtml"; 320

63 Injection (2/4): Hilfsklasse public class Global implements Serializable{ private static int aufrufe = 0; public Global(){ public String startseite(){ return "./index.xhtml"; public String uebernahme(){ aufrufe++; Logger.getLogger(Global.class.getName()).log(Level.INFO, aufrufe+". Aufruf"); return "./ausgabe.xhtml"; 321

64 Injection (3/4): beans.xml CDI wird mit Hilfe der Datei beans.xml aktiviert kann leer sein, typische minimale Füllung <?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee bean-discovery-mode="all"> </beans> Achtung in letzter Zeile von Hand annotated auf all geändert (nicht immer notwendig), sonst hier aber: SEVERE: Exception while loading the app : CDI deployment failure:weld Unsatisfied dependencies for type [Global] with qualifiers at injection point private entities.modul.global] Datei erlaubt viele weitere CDI-Konfigurationen 322

65 Injection (4/4): Anwendung public class Modul implements Serializable private Global global; public String uebernehmen(){ return global.uebernahme(); public String eingeben(){ return global.startseite(); Funktionalität wie vorher, mit log-information 323

66 CDI genauer JSR 346: Contexts and Dependency Injection for JavaTM EE 1.1, Teile auch in Java SE nutzbar; benötigt aber das Laden einer Steuerungsklasse am Anfang gutes Video: (CDI 1.0) QX1tChV7Z7l1LFF4L9j_g&index=50&feature=plpp Dokumentation: US/pdf/weld-reference.pdf viele weitere Einsatzmöglichkeiten und Varianten zur Objektauswahl ; Nutzung spezieller JEE-Objekte 324

67 ConversationScope (1/4) Entwickler kann selbst Länge der Session bestimmen, damit zwischen RequestScope und SessionScope import javax.enterprise.context.conversation; import javax.enterprise.context.conversationscoped; import javax.inject.inject; public class Scopeanalyse implements Serializable { private String wert; private List<String> liste = new private Conversation conver; 325

68 ConversationScope (2/4) public Scopeanalyse(){ // get- und set-methoden fehlen public void hinzu(){ if(this.conver.istransient()){ this.conver.begin(); if(this.wert!= null &&!this.wert.trim().equals("")){ this.liste.add(wert); // kein String zurueck, da auf gleicher Seite geblieben public void vergiss(){ if (!this.conver.istransient()){ this.conver.end(); 326

69 ConversationScope (3/4) <h:head> <title>scope Spielerei</title> </h:head> <h:body> <h:form id="main"> <h:inputtextarea id="ein" value="#{scope.wert" rows="3"/><br/> <ui:repeat value="#{scope.liste" var="w"> <h:outputtext value="#{w "/> </ui:repeat> <br/> <h:commandbutton value="übernehmen" action="#{scope.hinzu"/> <h:commandbutton value="vergessen" action="#{scope.vergiss"/> </h:form> </h:body> Anmerkung: mit <ui:repeat> wird über eine Sammlung (scope.liste) iteriert, jeweiliges Objekt in Laufvariable w 327

70 ConversationScope (4/4) Bild jeweils nach dem Klicken 328

71 Ausgabeprobleme: Umlaute und Zeilenumbrüche vor Knopfnutzung danach danach 329

72 Umlaute Text-Encoding Sonderzeichen, wie Umlaute bei Eingaben problematisch wenn konsequent UTF-8 genutzt, dann kein Problem; trifft man öfter nicht an häufig, gerade im MS-Bereich, nur ISO nutzbar nicht ganz sauberer Trick: Eingaben selbst passend umwandeln (läuft ggfls. nicht in Ländern mit nichtlateinischer Schrift) String s1 = new String("äöüÄÖßÜ"); System.out.println(s1); String s2 = new String(s1.getBytes("UTF-8"), "ISO "); System.out.println(s2); String s3 = new String(s2.getBytes("UTF-8"), "ISO "); System.out.println(s3); 330

73 Umlaute saubere Glassfish-Lösung Codierung des Glassfish auf UTF-8 umstellen in glassfishweb.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> <glassfish-web-app error-url=""> <class-loader delegate="true"/> <locale-charset-info default-locale=""> <locale-charset-map locale="" charset=""/> <parameter-encoding default-charset="utf-8"/> </locale-charset-info> </glassfish-web-app> https://wikis.oracle.com/display/glassfish/faqhttprequestparameterencoding 331

74 Zeilenumbrüche (1/2) verschiedene Lösungen, alle nicht optimal Konvertierer schreiben <h:outputtext converter="wandel" hier: HTML-Wissen nutzen, genauer CSS <h:inputtextarea id="ein" value="#{scope.wert" rows="3"/><br/> <div style="white-space: pre-wrap"> <ui:repeat value="#{scope.liste" var="w"> <h:outputtext value="#{w "/> </ui:repeat> </div> <h:commandbutton value="übernehmen" action="#{scope.hinzu"/> <h:commandbutton value="vergessen" action="#{scope.vergiss"/> 332

75 Zeilenumbrüche (2/2) 333

76 5.5 JSF mit JPA und JNDI Einschub: Nutzung von JPA bei DB im Server Datenbank einrichten Datenbank wird unter JNDI-Namen im Server registriert JSF-Applikation kann über JNDI auf DB zugreifen JSF-Container regelt DB-Zugriff (nicht Nutzer!), typische container-managed Persistance [geht auch individuell] 334

77 Verwaltung einer Modulliste (1/9) - Entität public class Modul implements Serializable { private static final long serialversionuid = GenerationType.AUTO) private int id; private int nr; // so sind gleiche Nummern erlaubt private String private int version; public Modul() { public Modul(int nr, String name) { this.nr = nr; this.name = name; // fehlen get- und set-methoden, equals über id 335

78 Verwaltung einer Modulliste (2/9) - Seitenstruktur 336

79 Verwaltung einer Modulliste (3/9) - Datenbank <?xml version="1.0" encoding="utf-8"?> <persistence version="2.0" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/persistence <persistence-unit name="jsfmodulliste1mitjpapu" transaction-type="jta"> <provider>org.eclipse.persistence.jpa.persistenceprovider </provider> <jta-data-source>jsfmodul1</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> </properties> </persistence-unit> </persistence> 337

80 Verwaltung einer Modulliste (4/9) - Startseite <h:form id="f1"> <h:messages globalonly="true"/> <h:panelgrid columns="3" > <h:outputlabel for="mname" value="modulname "/> <h:inputtext id="mname" value="#{module.modul.name"/> <h:message for="mname" /> <h:outputlabel for="mnr" value="modulnummer "/> <h:inputtext id="mnr" value="#{module.modul.nr"/> <h:message for="mnr"/> <h:commandbutton value="abschicken" action="#{module.uebernehmen"/> </h:panelgrid> <h:commandlink action="#{module.anzeigen" > <h:outputtext value="zur Modulübersicht"/> </h:commandlink> </h:form> 338

81 Verwaltung einer Modulliste (5/9) - public class ModuleController //nicht selber erzeugen, wird injiziert private EntityManagerFactory private UserTransaction utx; private List<Modul> module = new ArrayList<>(); private Modul modul=new Modul(); private EntityManager em; private final String HINZUFUEGEN = "./index.xhtml"; private final String ANZEIGEN = "./uebersicht.xhtml"; private final String EINGEBEN = "./index.xhtml"; public ModuleController() { 339

82 Verwaltung einer Modulliste (6/9) - Controller 2/3 public Modul getmodul() {return modul; public void setmodul(modul modul) {this.modul = modul; public List<Modul> getmodule() {return module; public void setmodule(list<modul> module) {this.module = module; public String anzeigen() { em = emf.createentitymanager(); module= em.createquery("select m FROM Modul m",modul.class).getresultlist(); em.close(); return ANZEIGEN; public String eingeben() { modul = new Modul(); return EINGEBEN; 340

83 Verwaltung einer Modulliste (7/9) - Controller 3/3 public String uebernehmen() { FacesContext ctxt = FacesContext.getCurrentInstance(); FacesMessage ms = new FacesMessage("Erfolgreich eingetragen"); try { em = emf.createentitymanager(); utx.begin(); em.persist(modul); module= em.createquery("select m FROM Modul m",modul.class).getresultlist(); utx.commit(); catch (Exception e) { ms = new FacesMessage( e.getmessage()); finally { if (em!= null) { em.close(); ctxt.addmessage(null, ms); modul=new Modul(); return HINZUFUEGEN; 341

84 Verwaltung einer Modulliste (8/9) - Ergebnisseite 1/2 <h:form id="f2"> <h:messages globalonly="true"/> <h:panelgrid rendered="#{!empty module.module"> <h:datatable value="#{module.module" var="m" border="8" frame="box" > <h:column > <f:facet name="header"> <h:outputtext value="nummer" /> </f:facet> <h:outputlabel value="#{m.nr"/> </h:column> 342

85 Verwaltung einer Modulliste (9/9) - Ergebnisseite 2/2 <h:column> <f:facet name="header"> <h:outputtext value="modulname" /> </f:facet> <h:outputlabel value="#{m.name"/> </h:column> </h:datatable> </h:panelgrid> <h:commandlink action="#{module.eingeben" > <h:outputtext value="zur Moduleingabe"/> </h:commandlink> </h:form> 343

86 Projektaufbau 344

87 Einschub: Ausgabe von Sammlungen in Tabellen <h:datatable value="#{module.module" var="m"> datatable erlaubt die Datenaufbereitung einer Collection in Tabellenform (Iterator über Daten mit getmodule(); Elemente in Variable m); grundlegende Darstellungsmöglichkeiten einstellbar Zur Ausgabe wird minimal <h:column> benötigt Attribut first für erste Zeile und rows für Zeilenzahl Nie, nie Elemente der alten JSTL nutzen <c:foreach> wenn keine Tabelle gewünscht <ui:repeat value= var > nutzt xmlns:ui="http://xmlns.jcp.org/jsf/facelets" 345

88 EJB-SessionBeans Architekturvariante bisher einfache direkte Software-Architektur (nutzbar für kleinere und mittlere Projekte) Problem: Skalierung nicht unbedingt sichergestellt, da Server nicht im Detail eingreifen kann Problem: direkte Nutzung von JPA sehr bastelig Fazit: vorgestellte Lösung zeigt gut das Prinzip, aber nicht sinnvoll eine Software-Architektur Lösung: Datenbankzugriff in eigene Klasse (Enterprise JavaBean, EJB) auslagern EJB werden vom Server verwaltet (Tempo, Skalierung) EJB werden in Managed Bean injiziert 346

89 EJB - Konzept Standardisierte Komponenten eines JEE-Servers Klassen zur Steuerung von Prozessen und Verwaltung von Daten, die leicht in anderen EJB-Applikationen nutzbar sind Unterstützt mit wenig Aufwand Transaktionssteuerung (Transaktion pro Methodenaufruf) Sicherheitseinstellungen Identifikation von Objekten zur Zusammenarbeit Drei Arten (local und remote Varianten) Entity Bean wie bereits bekannt) Session Bean: Kommunikation mit bei jeder Nutzung neu in einer Session nutzbar Message Driven Bean: asynchroner Nachrichtenablauf 347

90 EJB-Umsetzung (1/4) package ejb; import entities.modul; import java.util.list; import javax.ejb.stateless; import javax.persistence.entitymanager; import public class Modulverwaltung = "vljsfmodullistemitejbpu") private EntityManager em; public void persist(object object) { em.persist(object); //Exception weiterreichen public List<Modul> getmodule() { return em.createquery("select m FROM Modul m", Modul.class).getResultList(); 348

91 EJB-Umsetzung (2/4) Teil 1/2 package view; import ejb.modulverwaltung; import entities.modul; import java.io.serializable; import java.util.list; import javax.inject.inject; import javax.faces.bean.managedbean; import = public class ModulBean implements Serializable { private static final long serialversionuid = 1L; private Modul modul = new private Modulverwaltung mv; public ModulBean() { 349

92 EJB-Umsetzung (3/4) Teil 2/2 public List<Modul> getmodule() { return mv.getmodule(); public String uebernehmen() { try { mv.persist(modul); modul = new Modul(); // evtl. nicht notwendig catch (Exception e) { // wie vorher mit FacesContext return "./uebersicht.xhtml"; public String eingeben() { return "./index.xhtml"; public String anzeigen() { return "./uebersicht.xhtml"; // get und set für this.modul 350

93 EJB-Umsetzung (4/4) Klasse Modul bleibt unverändert XHTML-Seiten bleiben unverändert gleiches Verhalten, wie vorher sinnvoll: Objektänderungen in SessionBean (Objekt mit find suchen, ändern und persistieren) wenn durchhangeln über this.modul nicht gewünscht: public class ModulBean implements Serializable { private static final long serialversionuid = 1L; private int nr; private String private Modulverwaltung mv; // Methoden anpassen, in index.html direkt module.nr 351

94 Projektstruktur 352

5. JavaServer Faces(JSF)

5. JavaServer Faces(JSF) 5. JavaServer Faces(JSF) Grundlagen Nutzung von JSF-Annotationen Validierung von Eingaben Ausgabe von Fehlermeldungen Auswahl darzustellender Elemente typische elementare Software-Architektur JSF + JPA

Mehr

Ansatz 1: Alle kennen Entitäten-Modell (1/2) Erinnerung: Eine Komponentenarchitektur-Variante. Ansatz 1: Alle kennen Entitäten-Modell (2/2)

Ansatz 1: Alle kennen Entitäten-Modell (1/2) Erinnerung: Eine Komponentenarchitektur-Variante. Ansatz 1: Alle kennen Entitäten-Modell (2/2) Erinnerung: Eine Komponentenarchitektur-Variante Datenbank als zentrale Kommunikationsplattform Ansatz 1: alle Komponenten kennen Entitäten-Modell Ansatz 2: Datenzugriffsschicht kapselt Datenbank Ansatz

Mehr

5. JavaServer Faces (JSF)

5. JavaServer Faces (JSF) 5. JavaServer Faces (JSF) 5.1 Grundlagen 5.2 Einführendes nulltes Beispiel 5.3 Validierung 5.4 JSF mit JPA und JNDI 5.5 Kompakt: EJB-SessionBeansund CDI 5.6 Funktionale Erweiterung 5.7 Sicherheit 5.8 Weitere

Mehr

4. JavaServer Faces (JSF) / JEE

4. JavaServer Faces (JSF) / JEE 4. JavaServer Faces (JSF) / JEE 4.1 Grundlagen 4.2 Einführendes nulltes Beispiel 4.3 Validierung 4.4 JSF mit EJB und JPA 4.5 Get 4.6 Sicherheit 4.7 Weitere JSF-Möglichkeiten 4.8 JSF-Lebenszyklus 4.9 Templates

Mehr

4. Servlets Ein kleiner Einstieg. Kurze Java Historie. Erinnerung: Internet Anwendungen. Konzept eines Seitenaufrufs

4. Servlets Ein kleiner Einstieg. Kurze Java Historie. Erinnerung: Internet Anwendungen. Konzept eines Seitenaufrufs 4. s Ein kleiner Einstieg Erinnerung: HTTP und HTML Idee von Web n und Containern Erstellung einfacher s (zunächst software technisch übelst unstrukturiert) Literatur: B. Basham, K. Sierra, B. Bates, Head

Mehr

Programmierung von Client/Server- Anwendungen

Programmierung von Client/Server- Anwendungen Programmierung von Client/Server- Anwendungen Komponenten des Web-Containers (Java EE) SoSe2015 Prof. Dr. Andreas Schmietendorf 1 Übersicht zur Vorlesung Entwicklung der Java Enterprise Edition Servlets,

Mehr

JBoss Seam. Ein JEE 5 Webframework. Jörg Wüthrich Infopoint, 4. Februar 2009

JBoss Seam. Ein JEE 5 Webframework. Jörg Wüthrich Infopoint, 4. Februar 2009 JBoss Seam Ein JEE 5 Webframework Jörg Wüthrich Infopoint, 4. Februar 2009 Inhalt Einführung Warum Seam? Zentrale Konzepte Demo Validierung Abschliessende Gedanken 04.02.2009 Infopoint - JBoss Seam - Jörg

Mehr

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH Erfahrungen und Erkenntnisse Klaus Richarz, HBT GmbH Java Enterprise Edition 5.0 JBoss Seam Konsequenzen für Realisierung Qualitätssicherung Build & Deployment Fazit & Empfehlungen JBoss Seam in Projekten,

Mehr

Fehleingaben im nullten Beispiel (2/2) 5.3 Validierung/ Fehleingaben im nullten Beispiel (1/2) Ausgaben beim Drücken von Abschicken

Fehleingaben im nullten Beispiel (2/2) 5.3 Validierung/ Fehleingaben im nullten Beispiel (1/2) Ausgaben beim Drücken von Abschicken 5.3 Validierung/ Fehleingaben im nullten Beispiel (1/2) Eingabe: Fehler wird automatisch unter der bleibender Seite ausgegeben j_idt7 ist interner Name, mname ist unsere id des Eingabefeldes Fehleingaben

Mehr

Java EE 6 Ein Überblick

Java EE 6 Ein Überblick Java EE 6 Ein Überblick Bernd Müller Fakultät Informatik Ostfalia Hochschule Braunschweig/Wolfenbüttel GI-Regionalgruppe Braunschweig, 16.2.2012 Bernd Müller, Fakultät Informatik, Ostfalia, 16.2.2012 1/31

Mehr

Java - Webapplikationen

Java - Webapplikationen Java - Webapplikationen Bestandteile (HTTP,, JSP) Aufbau (Model View Controller) Datenverwaltung (Java Beans, Sessions) Entwicklung (Projektstruktur, Sysdeoplugin für Eclipse) 17. Januar 2006 Jan Hatje

Mehr

Sicherheit. letzten beiden Punkte typischerweise durch Verschlüsselung realisiert. Komponentenbasierte Software Entwicklung. Prof. Dr.

Sicherheit. letzten beiden Punkte typischerweise durch Verschlüsselung realisiert. Komponentenbasierte Software Entwicklung. Prof. Dr. Sicherheit Vier Aufgaben Authentifizierung: Nutzer erkennen; klassisch über Name und Passwort Autorisierung: Nutzer darf nur bestimmte Aktionen durchführen, klassisch über Rechte Rollen System Vertraulichkeit:

Mehr

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de EJB Beispiel JEE Vorlesung 10 Ralf Gitzel ralf_gitzel@hotmail.de 1 Stundenkonzept Gemeinsame Übung Stoff der letzten Stunde wird gemeinsam in einem Beispiel umgesetzt Details werden nochmals erklärt bzw.

Mehr

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Entwicklung von Web-Anwendungen auf JAVA EE Basis Entwicklung von Web-Anwendungen auf JAVA EE Basis Java Enterprise Edition - Überblick Prof. Dr. Bernhard Schiefer Inhalt der Veranstaltung Überblick Java EE JDBC, JPA, JNDI Servlets, Java Server Pages

Mehr

Beuth Hochschule für Technik Berlin, FB VI Informatik und Medien Software Engineering (SE II), 2. Kapitel: Wir bauen uns eine Web-Applikation.

Beuth Hochschule für Technik Berlin, FB VI Informatik und Medien Software Engineering (SE II), 2. Kapitel: Wir bauen uns eine Web-Applikation. Kapitel WIR BAUEN UNS EINE WEB-APPLIKATION (DRITTER TEIL) 2.10 Eine Benutzungsoberfläche mit JSF (Dritte Fingerübung) Technische Voraussetzungen 2.11 Die generelle Struktur von JSF Navigation zwischen

Mehr

Erste Schritte mit JavaServer Faces und MyEclipse. Allgemeines. Erstellen eines JavaServer Faces Projektes

Erste Schritte mit JavaServer Faces und MyEclipse. Allgemeines. Erstellen eines JavaServer Faces Projektes Erste Schritte mit JavaServer Faces und MyEclipse Dieses Tutorial soll den Einstieg in das noch recht neue Framework, JavaServer Faces (JSF), erleichtern. Es wird Schritt für Schritt eine Beispiel-Anwendung

Mehr

2. Bean Validation. Java Bean

2. Bean Validation. Java Bean 2. Bean Validation Java Bean Annotationen zur Validierung von Java Beans Auswertung von Bean Annotationen Gruppierung von Bean Annotationen Erstellung eigener Bean Annotationen 80 Java Bean Ist die Spezifikation

Mehr

Web 2.0 Software-Architekturen

Web 2.0 Software-Architekturen Web 2.0 Software-Architekturen Servlets als Controller einer MVC Web Architektur Prof. Dr. Nikolaus Wulff HTTP und HTML Das HyperText TransferProtokoll (HTTP) beschreibt eine einfache verbindungslose Kommunikation,

Mehr

Schritt 4: Hallo Enterprise Bean

Schritt 4: Hallo Enterprise Bean Prof. Dr. Th. Letschert FB MNI JEE Schritt 4: Hallo Enterprise Bean Einstieg: EJBs erzeugen und nutzen Meine erstes EJB Projekt Enterprise Beans sind eine Backend Technologie, die mit unterschiedlichen

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans Java Enterprise Edition - Überblick Was ist J2EE Java EE? Zunächst mal: Eine Menge von Spezifikationen und Regeln. April 1997: SUN initiiert die Entwicklung

Mehr

Web-Anwendungen mit Arquillian testen

Web-Anwendungen mit Arquillian testen Michael Kotten open knowledge @michaelkotten @_openknowledge Wozu denn testen? Ich mach doch keine Fehler! Wozu denn testen? > Notwendig bei komplexen Systemen > Sicherung von > Qualität > Funktionalität

Mehr

Agenda. Einleitung. Einbinden von JSF AJAX Beispiele Komponenten Entwicklung PrimeFaces Praktikum. Was ist JSF Aufbau und Techniken HTML vs.

Agenda. Einleitung. Einbinden von JSF AJAX Beispiele Komponenten Entwicklung PrimeFaces Praktikum. Was ist JSF Aufbau und Techniken HTML vs. JavaServer Faces E-Commerce (WS 2011/12) Fachhochschule Münster FB02 Elektrotechnik und Informatik Referenten: Matthias Wellmeyer, Sven Wermers, Malte Wesker Agenda Einleitung Was ist JSF Aufbau und Techniken

Mehr

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk Workshop Java Webentwicklung Einführung in Hibernate Ulrich Stärk Ablauf Montag bis Donnerstag 09:00 Uhr s.t. Beginn, bis ca. 17:00 Uhr 1 Stunde Mittagspause Donnerstag Experiment Aufzeichnung der Programmiertätigkeit

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

Enterprise Java Beans Einführung

Enterprise Java Beans Einführung Enterprise Java Beans Einführung Vorlesung 8 Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht EJBs im JEE Umfeld Verschiedene Typen von EJBs Von der Javaklasse

Mehr

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel ralf_gitzel@hotmail.de

JSP JSTL. JEE Vorlesung Teil 6. Ralf Gitzel ralf_gitzel@hotmail.de JSP JSTL JEE Vorlesung Teil 6 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Wiederholung / Vertiefung JSTL Grundlagen JSTL Basisbefehle Templates über JSTL

Mehr

Modell 2 und JSF. JSP und Modell 1 MVC und Modell 2 Java Web Frameworks und Struts Java Server Faces

Modell 2 und JSF. JSP und Modell 1 MVC und Modell 2 Java Web Frameworks und Struts Java Server Faces Modell 2 und JSF JSP und Modell 1 MVC und Modell 2 Java Web Frameworks und Struts Java Server Faces JSP ein mächtiges Werkzeug! Client JSP Bean Fachlogik JSP Eine JSP empfängt Benutzer-Anfragen, "Requests"

Mehr

Contexts and Dependency Injection. W3L AG info@w3l.de

Contexts and Dependency Injection. W3L AG info@w3l.de 1 Contexts and Dependency Injection W3L AG info@w3l.de 2015 2 Inhaltsverzeichnis Teil 1: Motivation Teil 2: Inversion of Control Teil 3: Contexts and Dependency Injection Teil 4: Beispiel zurück 3 Motivation

Mehr

FH LU JEE Vorlesung SS 2010. Ralf Gitzel ralf_gitzel@hotmail.de

FH LU JEE Vorlesung SS 2010. Ralf Gitzel ralf_gitzel@hotmail.de FH LU JEE Vorlesung SS 2010 Ralf Gitzel ralf_gitzel@hotmail.de 1 Einführung + Organisatorisches Ralf Gitzel ralf_gitzel@hotmail.de 2 Dozent Dr. Ralf Gitzel Promotion an der Universität Mannheim in Wirtschaftsinformatik

Mehr

Der IBM Websphere Portalserver

Der IBM Websphere Portalserver Der IBM Websphere Portalserver Ergebnisse aus dem Universitäts-Praxis-Projekt 2001/2002 Vortrag von Il-Hyun Kim und Horst Rechner am 19. Juli 2002 Weiterer Teilnehmer am UPP: Clemens Oertel Betreuer: Dipl.-Phys.

Mehr

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Präsentation zur Diplomarbeit von Übersicht Java 2 Enterprise Edition Java Servlets JavaServer Pages Enterprise JavaBeans Framework

Mehr

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013 GTUG Java Arbeitskreis Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung September 2013 Jürgen Depping CommitWork GmbH Seite 1 Info@CommitWork.de www.commitwork.de Agenda Was ist OmnivoBase?

Mehr

Einsatz und Grenzen von Java Server Faces 2.0

Einsatz und Grenzen von Java Server Faces 2.0 Kai Wähner München 09. September 2010 Einsatz und Grenzen von Java Server Faces 2.0 Einordnung von JSF in JEE 9/11/2010 Seite 2 Einordnung von JSF in JEE 9/11/2010 Seite 3 "Überblick" über JSF 9/11/2010

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans JPA - JAVA Persistence API Problem In JAVA-programmen arbeitet man mit Hauptspeicherobjekten. Nach Beendigung des Programmes sind diese nicht mehr vorhanden.

Mehr

Programmierung von Java- Webanwendungen. paluno

Programmierung von Java- Webanwendungen. paluno Programmierung von Java- Webanwendungen Gliederung 1 Vorstellung und Einführung 2 Basiswissen Web 3 XML und JSF- Einführung 4 JSF- Komponenten und RichFaces 5 Wiederholung der ersten Woche 6 JSF- Konzepte

Mehr

XPages Good to know. Benjamin Stein & Pierre Hein Stuttgart 7. Mai 2015

XPages Good to know. Benjamin Stein & Pierre Hein Stuttgart 7. Mai 2015 XPages Good to know Benjamin Stein & Pierre Hein Stuttgart 7. Mai 2015 Agenda 1. Einführung Was sind XPages? 2. Allgemeine Tipps Allgemeine Tipps für die Verwendung von XPages 3. Designer Tipps Tipps für

Mehr

Inhaltsverzeichnis. Zusammenfassung Wydler

Inhaltsverzeichnis. Zusammenfassung Wydler Inhaltsverzeichnis 1 Multitier Anwendungen... 2 2 J2EE Komponenten... 2 2.1 J2EE Design Patterns for Performance... 2 2.1.1 Design Patterns... 2 2.1.2 Session Façade... 2 2.1.3 Data Transfer Object (Value

Mehr

JSF (JavaServer Faces) Erstellen einer Webseite

JSF (JavaServer Faces) Erstellen einer Webseite Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski JSF (JavaServer Faces) Erstellen einer Webseite Dipl. Inf. Manuel Götz Dipl. Inf.

Mehr

Application Frameworks

Application Frameworks Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

Mehr

Bean-Mapping mit MapStruct

Bean-Mapping mit MapStruct Machst Du noch Reflection oder annotierst Du schon? Bean-Mapping mit MapStruct Thomas Much thomas@muchsoft.com www.muchsoft.com 1 20 Jahre Java, 18 Jahre Beans JavaBeans JAXBEntities 2015 2006 2005 2000

Mehr

Inhaltsverzeichnis. Enterprise Java im Überblick. Technologien der Java2 Enterprise Edition

Inhaltsverzeichnis. Enterprise Java im Überblick. Technologien der Java2 Enterprise Edition Inhaltsverzeichnis Vorwort 13 I Enterprise Java im Überblick 1 Bedeutung von Enterprise Java und IBM WebSphere 21 1.1 Enterprise Java 23 1.1.1 Anforderungen 23 1.1.2 E-Business 30 1.1.3 Java 36 1.2 IBM

Mehr

Java Server Pages (JSP)

Java Server Pages (JSP) Überblick über Internet-Technologien Server-Technologien Datenbankkopplung Servlets JSP PHP CGI XML+XSL Dokumentsprachen Client-PGM ruft DB-Server Web-Server ruft Datenbankserver HTML+Javascript HTML+Applets

Mehr

Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen. KNF Kongre 2001 Henning P. Schmiedehausen

Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen. KNF Kongre 2001 Henning P. Schmiedehausen <henning@apache.org> Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen Henning P. Schmiedehausen Turbine - ein berblick Open Source unter Apache License 100% pure Java, Java 2 (JDK 1.2+) Servlet-basiertes

Mehr

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

Mehr

Gegenseitige Beeinflussungen von Testautomatisierung, Testmanagement und Entwicklung

Gegenseitige Beeinflussungen von Testautomatisierung, Testmanagement und Entwicklung Gegenseitige Beeinflussungen von Testautomatisierung, Testmanagement und Entwicklung Jan Düttmann Archimedon Software + Consulting GmbH & Co. KG Marienstraße 66 32427 Minden Stephan Kleuker Hochschule

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Java Persistence API 2.x. crud + relationships + jp-ql

Java Persistence API 2.x. crud + relationships + jp-ql Java Persistence API 2.x crud + relationships + jp-ql Grundprinzip 10.02.10 2 Problematik Man muss bei der Persistierung immer das Klassenmodell und dessen Umsetzung im Datenmodell (in der DB) berücksichtigen.

Mehr

Java Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov

Java Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov Java Server Pages 2 und Benutzerdefinierte Tags Strahil Yordanov Überblick Einleitung JSP im Kontext von J2EE JSP2 Benutzerdefinierte Tags Zusammenfassung Einleitung Java Server Pages ist eine Technik

Mehr

Faclets. Eine alternative View Technologie um JSF Applikationen OHNE JSP zu entwickeln Wird unter java.net gehostet Open Source, CDDL Lizenz

Faclets. Eine alternative View Technologie um JSF Applikationen OHNE JSP zu entwickeln Wird unter java.net gehostet Open Source, CDDL Lizenz Facelets Faclets Eine alternative View Technologie um JSF Applikationen OHNE JSP zu entwickeln Wird unter java.net gehostet Open Source, CDDL Lizenz (COMMON DEVELOPMENT AND DISTRIBUTION LICENSE) Von Jacob

Mehr

5. Übung zu Software Engineering

5. Übung zu Software Engineering 5. Übung zu Software Engineering WS 2009/2010 Henning Heitkötter Desktop-Anwendung AUFGABE 13 1 Schichtenarchitektur Strukturierung komplexer Anwendungen Anforderungen: Flexibilität, Robustheit, Wartbarkeit,

Mehr

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005 Praktikum Datenbanksysteme Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005 Tomcat-Installation $JAVA_HOME (z.b. /home/dbp00/j2sdk1.4.2) $CATALINA_HOME (/home/dbp00/jakarta-tomcat-4) Skripte zum Start/Stop:

Mehr

Moderne Web- Anwendungen mit

Moderne Web- Anwendungen mit Moderne Web- Anwendungen mit Oliver.Damm@akquinet.de September 2013 Web- Anwendungen mit Vaadin???

Mehr

Web-Design mit JSF und AJAX. Java Enterprise Erkner, 6.1.2007 Carsten Mjartan (mjartan@codecentric.de)

Web-Design mit JSF und AJAX. Java Enterprise Erkner, 6.1.2007 Carsten Mjartan (mjartan@codecentric.de) Web-Design mit JSF und AJAX Java Enterprise Erkner, 6.1.2007 Carsten Mjartan (mjartan@codecentric.de) 0 Agenda Ajax als Web 2.0 Technologie Java-Server Faces 1 Java Server Faces Sun-Spezifikation (JSR-127)

Mehr

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel ralf_gitzel@hotmail.de

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel ralf_gitzel@hotmail.de JSP Grundlagen JEE Vorlesung Teil 5 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht JSP Konzept Model-View-Controller mit JSPs JSP Expression Language EL Literale

Mehr

RESTful Services mit Java EE

RESTful Services mit Java EE RESTful Services mit Java EE Thilo Frotscher thilo@frotscher.com Vorstellung Freiberuflicher Softwarearchitekt und Trainer Fachliche Schwerpunkte Java Plattform Services und Integration Kundenspezifische

Mehr

Java 2, Enterprise Edition Einführung und Überblick

Java 2, Enterprise Edition Einführung und Überblick Universität aiserslautern AG Datenbanken und Informationssysteme Seminar Datenbank-Aspekte des E-Commerce Java 2, Enterprise Edition Einführung und Überblick m_husema@informatik.uni-kl.de Vortragsinhalte

Mehr

Dataport IT Bildungs- und Beratungszentrum. HTML- Grundlagen und CSS... 2. XML Programmierung - Grundlagen... 3. PHP Programmierung - Grundlagen...

Dataport IT Bildungs- und Beratungszentrum. HTML- Grundlagen und CSS... 2. XML Programmierung - Grundlagen... 3. PHP Programmierung - Grundlagen... Inhalt HTML- Grundlagen und CSS... 2 XML Programmierung - Grundlagen... 3 PHP Programmierung - Grundlagen... 4 Java - Grundlagen... 5 Java Aufbau... 6 ASP.NET Programmierung - Grundlagen... 7 1 HTML- Grundlagen

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9d: Datenbankapplikationen Architektur einer Web-Applikation mit Servlets, JSPs und JavaBeans

Mehr

Inhaltsverzeichnis. 1 Ein Einstieg mit Profil 1. 2 Aufsetzen der Entwicklungsumgebung 19

Inhaltsverzeichnis. 1 Ein Einstieg mit Profil 1. 2 Aufsetzen der Entwicklungsumgebung 19 xi 1 Ein Einstieg mit Profil 1 1.1 Java EE 7 der Standard für Enterprise Java.................. 1 1.1.1 Struktur einer Enterprise-Java-Anwendung............. 1 1.1.2 Die Java Enterprise Edition (Java EE)..................

Mehr

JSF 2.x Reality Check. Was geht heute schon? Was vermissen wir? Was kommt noch?

JSF 2.x Reality Check. Was geht heute schon? Was vermissen wir? Was kommt noch? JSF 2.x Reality Check Was geht heute schon? Was vermissen wir? Was kommt noch? Agenda Was ist JSF 2.0? Entstehungsgeschichte Neuerungen gegenüber 1.2 Konkrete Verbesserungen Projekt-Setup Quick Prototyping

Mehr

ORACLE Business Components for Java (BC4J) Marco Grawunder

ORACLE Business Components for Java (BC4J) Marco Grawunder ORACLE Business Components for Java (BC4J) Marco Grawunder Gliederung 2 Probleme von J2EE/EJB J2EE-Pattern Lösungsansatz: BC4J Architektur einer BC4J-Anwendung Komponenten Entity Objects View Objects Application

Mehr

Einleitung JavaServer Pages Erweiterungsmechanismen Beispiel Fazit. JavaServer Pages. Seminar Webprogrammierung WS04/05. Timothy Burk. 6.

Einleitung JavaServer Pages Erweiterungsmechanismen Beispiel Fazit. JavaServer Pages. Seminar Webprogrammierung WS04/05. Timothy Burk. 6. Seminar Webprogrammierung WS04/05 6. Juni 2005 1 Einleitung Die Vorgeschichte Java-Servlets 2 Merkmale Von der JSP zur HTML-Ausgabe Syntax 3 4 5 Die Vorgeschichte Java-Servlets Einleitung Ansätze für dynamische

Mehr

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java Oliver Kalz Agenda Grundlagen Objektpersistenz Objektrelationales Mapping Performance Fazit

Mehr

EJB3.0 Unit-Testing Reloaded

EJB3.0 Unit-Testing Reloaded EJB3.0 Unit-Testing Reloaded Werner Eberling werner.eberling@mathema.de www.mathema.de Werner Eberling, MATHEMA Software GmbH - EJB3.0 - Unit-Testing Reloaded (G4 - Folie 1) Java Forum Stuttgart 2007 Automatisiertes

Mehr

Schritt 5: Session Beans

Schritt 5: Session Beans Prof. Dr. Th. Letschert FB MNI JEE Schritt 5: Session Beans Session Beans Übersicht Session Beans dienen dazu serverseitige Geschäftsprozesse zu realisieren. Es gibt sie drei Zustands Varianten: Stateless

Mehr

Java zur Realisierung von Internetanwendungen

Java zur Realisierung von Internetanwendungen Java zur Realisierung von Internetanwendungen Elementare Web-Programmierung Prof. Dr. Bernhard Schiefer HTTP Web-Browser Web-Browser GET http://www.zw.fh-kl.de/beispiel.htm beispiel

Mehr

Benutzung von Eclipse zur Entwicklung von Java EE 5 Anwendungen mit dem JBoss Application Server

Benutzung von Eclipse zur Entwicklung von Java EE 5 Anwendungen mit dem JBoss Application Server Benutzung von Eclipse zur Entwicklung von Java EE 5 Anwendungen mit dem JBoss Application Server Starten und Auswahl des Workspaces Starten Sie Eclipse als die Entwicklungsumgebung. Wählen Sie als Workspace

Mehr

JSP und Servlet Programmierung

JSP und Servlet Programmierung Seminarunterlage Version: 5.02 Copyright Version 5.02 vom 1. März 2013 Dieses Dokument wird durch die veröffentlicht. Copyright. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen

Mehr

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. WebSphere Application Server Teil 4 UNIVERSITÄT LEIPZIG Mainframe Internet Integration Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013 WebSphere Application Server Teil 4 Leistungsverhalten el0100 copyright W. G. Spruth,

Mehr

Webanwendungen mit IBM Rational und IBM WebSphere V6

Webanwendungen mit IBM Rational und IBM WebSphere V6 Joachim Gucker, Michael Müller, Dietmar Rager, Stefan Schäffer, Walter Schilder, Veronika Thurner, Dina Winkler 2008 AGI-Information Management Consultants May be used for personal purporses only or by

Mehr

Application Server und Continuous Integration

Application Server und Continuous Integration Application Server und Continuous Integration Outline 2 Einleitung Application Server Java EE Enterprise Applikationen vs. Web Applikationen Web Application Life Cycle Servlets JavaServer Pages verschiedene

Mehr

Java Beans Enterprise Java Beans. Eine kurze Einführung in die Welt der Bohnen

Java Beans Enterprise Java Beans. Eine kurze Einführung in die Welt der Bohnen Java Beans Enterprise Java Beans Eine kurze Einführung in die Welt der Bohnen Java Beans Einführung Stefan Sauer Was ist ein Java Bean? Beans sind Komponenten. Einmal schreiben Überall wiederverwerten

Mehr

Web-Anwendungsentwicklung mit dem Delivery Server

Web-Anwendungsentwicklung mit dem Delivery Server Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010

Mehr

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck 28.05.2003

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS Universität zu Lübeck 28.05.2003 Praktikum Datenbanksysteme Ho Ngoc Duc IFIS Universität zu Lübeck 28.05.2003 Nullwerte und Primitive Typen Wenn parent==null, was wird in der Datenbank gespeichert? Wenn man aus der DB liest, wie kann

Mehr

Java Beans (22.02.2001)

Java Beans (22.02.2001) Component Based Software Development Java Beans (22.02.2001) Stefan Jäger Robert Kalcklösch Veranstalter: M. Bittner W. Koch Inhalt Einführung in Java Die Java Beans Einsatz und Entwicklung von Beans Enterprise

Mehr

J2EEKurs. Enterprise JavaBeans Einführung. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, 10.-14.10.2005. Universität Freiburg, Germany

J2EEKurs. Enterprise JavaBeans Einführung. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, 10.-14.10.2005. Universität Freiburg, Germany Enterprise JavaBeans Einführung Universität Freiburg, Germany Sommercampus, Freiburg, Germany, 10.-14.10.2005 Inhalt Allgemeines Motivation Rollen Aufbau einer EJB Arten von Beans Enterprise JavaBeans

Mehr

Praktikum Spring MVC. 1.2. Spring integrieren In der pom.xml Einträge für Spring hinzufügen.

Praktikum Spring MVC. 1.2. Spring integrieren In der pom.xml Einträge für Spring hinzufügen. Praktikum Spring MVC Aufgabe 1 Im ersten Teil des Praktikums wird eine Test Webapplikation entwickelt, anhand derer einige Konzepte von Spring nachvollzogen werden können. Dabei handelt es sich um Spring

Mehr

EJB 3 - Ein Blick über den Tellerrand. Heiko W. Rupp

EJB 3 - Ein Blick über den Tellerrand. Heiko W. Rupp <hwr@pilhuhn.de> EJB 3 Ein Blick über den Tellerrand Heiko W. Rupp Agenda Abriss des Standards Blick auf vorhandene Implementierungen Erfahrungen aus der Praxis Verlosung der 2 Bücher Agenda Abriss des

Mehr

FH LU JEE Vorlesung SS 2014. Ralf Gitzel ralf_gitzel@hotmail.de

FH LU JEE Vorlesung SS 2014. Ralf Gitzel ralf_gitzel@hotmail.de FH LU JEE Vorlesung SS 2014 Ralf Gitzel ralf_gitzel@hotmail.de 1 Einführung + Organisatorisches Ralf Gitzel ralf_gitzel@hotmail.de 2 Dozent Dr. Ralf Gitzel Promotion an der Universität Mannheim in Wirtschaftsinformatik

Mehr

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes 1 XSS: Cross-Site Scripting 1.) Es gelangen Daten in den Web-Browser, die Steuerungsinformationen

Mehr

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

Einleitung. Gliederung. Struts-Framework. Model-View-Controller-Pattern

Einleitung. Gliederung. Struts-Framework. Model-View-Controller-Pattern Struts-Framework Model-View-Controller-Pattern STRUTS Open Source Web Application Framework Unterprojekt des Apache Jakarta Basierend auf: JSP, Servlets, JavaBeans Model View Controller Architektur Dipl.-Inf.

Mehr

G s e a s m a t m ar a ch c i h tek e tur u I und IoC

G s e a s m a t m ar a ch c i h tek e tur u I und IoC Gesamtarchitektur I und IoC Schichten einer Web-Anwendung Initiiert durch J2EE und Spring: Strukturierte Sicht auf UI und Fachlogik (Domäne) Ergibt 5 Schichten: Man unterscheidet Präsentations- und Domänenmodell!

Mehr

SaaS-Referenzarchitektur. iico-2013-berlin

SaaS-Referenzarchitektur. iico-2013-berlin SaaS-Referenzarchitektur iico-2013-berlin Referent Ertan Özdil Founder / CEO / Shareholder weclapp die Anforderungen 1.000.000 registrierte User 3.000 gleichzeitig aktive user Höchste Performance Hohe

Mehr

Inhalt: Konfiguration: web.xml ; server.xml Workflow: Weiterleitung von Requests Lektion II-IV Lektion V-VI

Inhalt: Konfiguration: web.xml ; server.xml Workflow: Weiterleitung von Requests Lektion II-IV Lektion V-VI Servlet II Inhalt: Konfiguration: web.xml ; server.xml Workflow: Weiterleitung von Requests Lektion II-IV Lektion V-VI 3-1 1. Grundlagen 2. Servlets 3. JSP 4 1.1. JAR Files 4 1.2. TCP/IP, Sockels 4 1.3.

Mehr

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire Integration von Web Services in J EE Anwendungen mit XFire 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire univativ : = Umsetzung durch Studenten und Young Professionals.

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5.

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung Informatik I: Einführung in die Programmierung 21. Das WWW befragen Albert-Ludwigs-Universität Freiburg Bernhard Nebel 13.01.2015 1 13.01.2015 B. Nebel Info I 3 / 17 Oft braucht ein Programm Informationen,

Mehr

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer Applets Belebung von Webseiten Dipl.-Ing. Wolfgang Beer Was sind Applets? Java Klassen, die spezielle Richtlinien befolgen, um: "in Internet-Browsern lauffähig zu sein" Somit ist, komplexere Funktionalität,

Mehr

Komponenten & Hypermedia Seminar Prof. Dr. Frank Thiesing Struts Java-Framework für Web-Applikationen. Referenten: Fabian Bartelt Jens de Witt

Komponenten & Hypermedia Seminar Prof. Dr. Frank Thiesing Struts Java-Framework für Web-Applikationen. Referenten: Fabian Bartelt Jens de Witt Komponenten & Hypermedia Seminar Prof. Dr. Frank Thiesing Struts Java-Framework für Web-Applikationen Referenten: Fabian Bartelt Jens de Witt - Struts 1 Inhaltsverzeichnis Was ist Struts? Vorkenntnisse

Mehr

Java Enterprise Edition (Java EE)

Java Enterprise Edition (Java EE) Java Enterprise Edition (Java EE) Eine Einführung Java Enterprise Editon Java EE platform API and runtime environment for developing and running enterprise applications and services large-scale multi-tiered

Mehr

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6 WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 6 Abgabe: Montag, 05.12.2011, 12.00 Uhr, Informatik

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

VS12 Slide 1. Verteilte Systeme. Vorlesung 12 Sebastian Iwanowski FH Wedel

VS12 Slide 1. Verteilte Systeme. Vorlesung 12 Sebastian Iwanowski FH Wedel VS12 Slide 1 Verteilte Systeme Vorlesung 12 Sebastian Iwanowski FH Wedel Mögliche Plattformen für Web Services VS12 Slide 2 VS12 Slide 3 Java-Software für verteilte Systeme J2EE: Java 2 Enterprise Edition

Mehr

Evolution der Web-Entwicklung nach AJAX

Evolution der Web-Entwicklung nach AJAX Evolution der Web-Entwicklung nach AJAX Vortrag BMW Messe, Oktober 2007 Rudolf Lindner, Projektleiter Technologie F&F GmbH Was ist eine WEB-Anwendung? Datenbank Datenbank Server Logik Prozesse Datenbank

Mehr

Programmieren von Webinformationssystemen

Programmieren von Webinformationssystemen Programmieren von Webinformationssystemen Wolfgang Gassler Databases and Information Systems (DBIS) Institute of Computer Science University of Innsbruck dbis-informatik.uibk.ac.at 1 HTML Hypertext Markup

Mehr