Application Frameworks



Ähnliche Dokumente
Oliver Paulus, 7. Februar Spring Framework Einführung. Oliver Paulus, Was ist Spring?

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

Struts 2 Das Imperium schlägt zurück?

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Contexts and Dependency Injection. W3L AG

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Der lokale und verteilte Fall

Workshop Java Webentwicklung Tapestry. Ulrich Stärk

Themen. Web Service - Clients. Kommunikation zw. Web Services

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

Einführung in die Programmierung

Einführung in Javadoc

Aspektorientierte Middleware Florian Wagner

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

C O C O O N. Wo ist Cocoon in die Apache Projekte einzureihen?

IBM Software Demos Rational Software Delivery Platform - Änderungen an Design und Architektur einer Anwendung

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

Testen mit JUnit. Motivation

Anwendung der Aspektorientierung : Security

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

10. Berechtigungsverwaltung Grundlagen der Programmierung II (Java)

Gebundene Typparameter

Auszug aus JAX-WS Folien

Spring Dynamic Modules for OSGi Service Platforms

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Themen. Web Services und SOA. Stefan Szalowski Daten- und Online-Kommunikation Web Services

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Gregor Raschke 2008 HIBERNATE. Eine Einführung

Konfiguration und Deployment einer hochverfügbaren ADF Anwendung

ASP: Active Server Pages

Django - ein Python Web-Framework

Eberhard Wolff. Spring. Framework für die Java-Entwicklung. "BJ dpunkt.verlag

Anwendung eines Enterprise Java Beans

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

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

XML Technologien Seminar WS 2011/ Einführung in HTML5 1

Es wird das Struts <html:option> Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht.

Programmierung von Java- Webanwendungen. paluno

Service Engineering. Einbindung von Web Services in eine Java-Anwendung. Prof. Dr. Andreas Schmietendorf 1. SoSe Service Engineering

Design Patterns MVC. Marcus Köhler Markus Merath Axel Reusch. Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 1

Factory Method (Virtual Constructor)

Design Patterns 2. Model-View-Controller in der Praxis

Programmierung von Client/Server- Anwendungen

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Objektorientierte Programmierung

Java: Vererbung. Teil 3: super()

Spring Dynamic Modules for OSGi Service Platforms

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Übungen zur Softwaretechnik

Übungen zu Softwaretechnik

Komponentenbasierte Softwareentwicklung mit PHP. Oliver Schlicht - bitexpert

Algorithmen und Datenstrukturen

Java Webentwicklung (mit JSP)

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate

Java - Webapplikationen

Online Kataloge. Wie binde ich einen SGVSB-Online-Katalog in eine Webseite ein. Versionsnummer: 1.0 Änderungsdatum:

Design by Contract with JML

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

Schedulingund Thread-Ausführer

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Client/Server-Programmierung WS2007/08. EJB/JSP: Schritt-für-Schritt Anleitung

Integrierte und automatisierte GUI-Tests in Java

Software-Engineering 2. Übungen zur Wiederholung. IT works. Metris GmbH

Unsere Webapplikation erweitern

GATE General Architecture for Text Engineering. Alexander Hein & Erik Dießler (VL Text Analytics )

Software Entwicklung II (SS12)

Große Übung Praktische Informatik 1

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

Wie ist das Wissen von Jugendlichen über Verhütungsmethoden?

Weblogic Server: Administration für Umsteiger

Installations Guide für YAJSW und DTLDAP

Universität Stuttgart Abteilung Anwendersoftware Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures

Architektur des agimatec-validation Frameworks

Wiederholung: Beginn

Einführung in die Scriptsprache PHP

Dokumentation: Content App Framework

BBCode v2.0. Einleitung...2 Installation... 3 Bugfixliste Inhaltsverzeichnis. Überarbeiteter BBCode + neuem Interface.

Java Server Pages 2 und Benutzerdefinierte Tags. Strahil Yordanov

Internetanbindung von Datenbanken

Typumwandlungen bei Referenztypen

Datenmanagement in Android-Apps. 16. Mai 2013

Das Spring Framework eine Einführung

Statistikreport für Sozialabteilungen von Zürcher Gemeinden Atelierbeitrag Statistiktage 2013

Templates für CMSMadeSimple

Formulare & Zähler. Erstellen von Formularen & Zählern mit FrontPage- oder ASP-Erweiterungen ZUGEHÖRIGE INFORMATIONEN

Inhaltsverzeichnis. Zusammenfassung Wydler

Der IBM Websphere Portalserver

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel

Anwendungsentwicklung mit Spring

Applets I. Grundlagen der g Applet-Programmierung

MOC Entwicklung von ASP.NET MVC 4 Webapplikationen

WPF Bindung. Dr. Beatrice Amrhein

Advanced Software Engineering WS0910 Kapitel4. Dr. Dominik Haneberg

Transkript:

Seminar Software Engineering 1

Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung 2

Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung 3

Framework Grundlagen Framework Ein Framework ist eine Menge von kooperierenden Klassen, die einen wiederverwendbaren Entwurf für einen bestimmten Anwendungskontext vorgeben. Das Framework bestimmt dabei die Architektur der Applikation. Umkehrung des Kontrollflusses (Inversion of Control) Hollywood-Prinzip ( Don t call us, we call you ) 4

Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung 5

Spring OpenSource-Framework Grundlage: Buch "Expert One-On-One J2EE Design and Development von Rod Johnson Merkmale: Dependency Injection und AOP Module Quelle: http://static.springframework.org 6

Beispielanwendung Bibliothek 7

Beispielanwendung 8

Spring Bean Java- Klasse, welche über eine spezielle Konfiguration zur Spring Bean wird Beispiel: <!-- DataSource --> <bean id="datasource" class="org.springframework.jdbc.datasource. SingleConnectionDataSource"> <property name="driverclassname" value="com.mysql.jdbc.driver" /> <property name="url" value="jdbc:mysql://localhost/bib" /> <property name="username" value= sa" /> <property name="password" value= 123" /> </bean> 9

Spring Container erstellt, verbindet, konfiguriert und verwaltet alle Spring-Beans über deren kompletten Lebenszyklus Zwei Typen BeanFactory ApplicationContext BeanFactory factory = new XmlBeanFactory (new FileSystemResource("applicationContext.xml")); SampleBean samplebean = (SampleBean)factory.getBean("sampleBean"); 10

Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung 11

Dependency Injection Programmiertechnik um die Abhängigkeiten zwischen Objekten zu minimieren Übergabe der Verantwortung für die abhängige Objekten an das Framework Injizieren der Abhängigkeiten zur Laufzeit z. B. über XML-Datei 12

Dependency Injection Setter-Injection <bean id= Ex4711" class="bib.exemplar"> </bean> <property name="id" value="4711" /> <property name="book" ref="b4711" /> Constructor-Injection <bean id="ex4711" class="bib.exemplar"> <constructor-arg value="4711" /> <constructor-arg ref="b4711" /> </bean> 13

Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung 14

Aspektorientierte Programmierung Zur Vermeidung von Codewiederholungen Prinzip Separation of Concerns Auslagerung von sich wiederholenden Teilen: Aspekt Aspekte = Querschnittsbelange (Cross Cutting Concerns) In Spring: Nutzung via Proxy Joinpoint Stelle, an der in der Anwendung ein Aspekt eingebunden werden kann Pointcut Programmkonstrukt zur Auswahl von einem oder mehreren Joinpoints Wo wird der Aspekt ausgeführt? Advice Was wird wann ausgeführt? 15

Aspektorientierte Programmierung package aop; public class LoggingAdvice implements MethodInterceptor { public Object invoke(methodinvocation methodinvocation){ Log log; log = LogFactory.getLog(getClassName(methodInvocation)); log.info("class : " + getclassname(methodinvocation)); log.info("method : " + getmethodname(methodinvocation)); log.info("arguments : " + getarguments(methodinvocation));... //ausführen der eigentlichen Methode result = methodinvocation.proceed();... }... } Advice 16

Aspektorientierte Programmierung <!-Advice--> <bean id="logginginterceptor" class="aop.loggingadvice" /> AOP Konfiguration <! Pointcut--> <bean id="loggingpointcut" class="org.springframework.aop.support.jdkregexpmethodpointcut"> <property name="pattern" value="services.*" /> </bean> <! Advisor--> <bean id="loggingadvisor" class="org.springframework.aop.support.defaultpointcutadvisor"> <property name="advice" ref="logginginterceptor" /> <property name="pointcut" ref="loggingpointcut" /> </bean> 17

Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung 18

Datenbankanbindung Spring DAO Kapselung des Datenbankzugriffs durch Data Access Objects Verwendung des Template-Entwurfsmuster Quelle: [Wa08] 19

Datenbankanbindung DAO package jdbc; public class BookDAO extends JdbcDaoSupport implements IBookDao{ public List getall() { return (List) getjdbctemplate().query( "SELECT DESCRIPTION, ISBN, AUTOR, ID FROM Book ", new BookRowMapper()); } } <! DAO --> <bean id="bookdao" class="jdbc.bookdao"> <property name="jdbctemplate" ref="template" /> </bean> 20

JDBC-Anbindung <!-- Datenquelle --> <bean id="datasource" class= Datenbankanbindung "org.springframework.jdbc.datasource.singleconnectiondatasource"> <property name= driverclassname value= com.mysql.jdbc.driver /> <property name= url value= jdbc:mysql://localhost/bib /> <property name= username value= sa /> <property name= password value= 123 /> </bean> Datenquelle und Template <!-- JDBC Template --> <bean id="template" class="org.springframework.jdbc.core.jdbctemplate"> <property name="datasource" ref="datasource" /> <property name="nativejdbcextractor"> <bean class="org.springframework.jdbc.support.nativejdbc. CommonsDbcpNativeJdbcExtractor" /> </property> </bean> 21

Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung 22

Modell View Controller Spring MVC 2 1 3 4 Quelle: [Wa08] <bean name= /book.htm class= mvc.bookcontroller > <property name= bookservice ref= bookservice /> </bean> 23

Modell View Controller Controller package mvc; public class BookController extends AbstractController{ private BookService bookservice; private String view = "booklist"; public BookService getbookservice() { return bookservice; } public void setbookservice(bookservice bookservice) { this.bookservice = bookservice; } protected ModelAndView handlerequestinternal(httpservletrequest request, HttpServletResponse response) throws Exception { Map model = new HashMap(); model.put("books", bookservice.getbooks()); return new ModelAndView(view, model); } 24

Modell View Controller Spring MVC 6 5 <bean id="viewresolver" class=" InternalResourceViewResolver"> <property name="prefix" value="/web-inf/jsp/"/> <property name="suffix" value=".jsp"/> </bean> Ergebnis: /WEB-INF/jsp/booklist.jsp Quelle: [Wa08] 25

6 <%@ page language="java" contenttype="text/html; charset=iso-8859-1" pageencoding="iso-8859-1"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> </head> <body> </body> </html> <h1>willkommen in der Bibliothek</h1><br> <h2>hier sehen Sie alle verfügbaren Bücher</h2><br> <table> </table> <tr><th>buch</th><th>autor</th></tr> <c:foreach items="${books}" var="book"> <tr> <td><c:out value="${book.description}"/></td> <td><c:out value="${book.autor}"/></td> <td><c:out value="${book.isbn}"/></td> </tr> </c:foreach> Modell View Controller View 26

Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung 27

Authentifizierung und Autorisierung auf Webanfrage- und Methodenaufrufebene Spring Security nutzt dafür DI und AOP Sicherheit Authentification-Managers überprüft den Benutzernamen und das Passwort Access-Decision-Manager prüft die Benutzerrechte Spring Security 28

Sicherheit Authentifizierung Quelle: [Wa08] 30

Sicherheit Autorisierung Aufruf einer geschützten Methode 34

Sicherheit <bean id="securityinterceptor" class="org.springframework.security. <property name="authenticationmanager"> method.aopalliance.methodsecurityinterceptor"> <ref bean="authenticationmanager"/> </property> <property name="accessdecisionmanager"> <ref bean="accessdecisionmanager"/> </property> <property name="objectdefinitionsource"> <value> services.bookservice.getbooks*=role_user services.lendingservice.getlendings*=role_user services.userservice.getusers*=role_admin services.lendingservice.deletebyid*=role_admin services.lendingservice.save*=role_admin </value> </property> </bean> Autorisierung 35

<!--AutoProxy--> <bean id="autoproxycreator" class="org.springframework.aop. framework.autoproxy.beannameautoproxycreator"> <property name="interceptornames"> <list> <value>securityinterceptor</value> </list> </property> <property name="beannames"> <list> <value>bookservice</value> <value>lendingservice</value> <value>userservice</value> <value>exemplarservice</value> </list> </property> </bean> Sicherheit Autorisierung 36

Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung 37

Vergleich Spring und Java EE Spring als Lightweight-Modell zu Java EE Dependency Injection AOP Wird von beiden unterstützt In Java EE nur für Java EE Elemente wie EJB, Servlets Konfiguration Spring: Deskriptoren Java EE: Annotationen Spring: Grundfunktionalität Java EE: Interceptor-Konzept für EJB 3.0 Java EE ist ein Standard 38

Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung 39

Zusammenfassung und Ausblick Spring DI und AOP Datenbankanbindung MVC Sicherheit Ausblick Gute Dokumentation von Spring verfügbar Bücher und Webseiten Weiterentwicklung und Unterstützung 40

Vielen Dank für die Aufmerksamkeit! 41