SlideShare a Scribd company logo
Unit 7: Design Patterns and Frameworks
 Web presentation layer patterns
       The Model-View-Controller (MVC) architectural pattern
       Catalog of MVC-based patterns
       Other patterns

 Web presentation-business integration patterns

 Business layer architectural patterns

 MVC Web frameworks




dsbw 2011/2012 q1                                               1
The MVC Architectural Pattern
 Divides an interactive application into three components/levels:

 Model:
         Contains the functional core of the application
         Encapsulates the appropriate data, and exports procedures that
          perform application-specific processing
 View:
         Displays information to the user
         Obtains the data from the model
         Different views present the model’s information in different ways
 Controller:
         Accepts user input as events
         Translates events to service requests for the model or display
          requests for the view

dsbw 2011/2012 q1                                                             2
The “Classical” MVC Pattern


                                                        Observer
                                                    *
                                                        update()
          1

         Model

data

attach( ob : Observer )
                                    View
detach( ob : Observer )                                                          Controller
notify()                                                 1         1
getData()                 initialize( m : Model )
                                                                       initialize( m : Model, v : View )
service()                 makeController()
                                                                       handleEvent()
                          activate()
                                                                       update()
                          display()
                          update()




dsbw 2011/2012 q1                                                                                      3
Catalog of MVC-Based Web Presentation Patterns

 Controller Patterns:
         Page Controller
         Front Controller
         Application Controller
         Intercepting Filter
 View Patterns
         View Helper
         Composite View
         Transform View
 Composite Patterns:
         Dispatcher View
         Service to Worker


dsbw 2011/2012 q1                                4
Page Controller




 Each Page Controller component act as the controller for a dynamic
  page on the Web site.
 The basic responsibilities of a Page Controller are:
         Decode the URL and extract any form data
         Invoke model components to process the request data
         Determine which view should display the result page and forward the
          model information to it
dsbw 2011/2012 q1                                                               5
Page Controller: How It Works




dsbw 2011/2012 q1               6
Page Controller: When to Use It
 Page Controller works particularly well in a site where most
    of the controller logic is pretty simple:


                        : User                         : System

                                 service(parameters)

                                       result




 Variant: Page Controller and View implemented by the same
    Server Page: (Model 1)



dsbw 2011/2012 q1                                                 7
Front Controller (Model 2)
 Problem: The system requires a centralized access point for
    request handling. Without a central access point, control code that
    is common across multiple requests is duplicated in numerous
    places. When control code is intermingled with view-creation code,
    the application is less modular and cohesive.
 Forces:
         You want to avoid duplicate control logic.
         You want to apply common logic to multiple requests.
         You want to separate system processing logic from the view.
         You want to centralize controlled access points into your system
 Solution: Use a Front Controller as the initial point of contact for
    handling all related requests. The Front Controller centralizes
    control logic that might otherwise be duplicated, and manages the
    key request handling activities .
dsbw 2011/2012 q1                                                            8
Front Controller: Class Diagram




                    1




dsbw 2011/2012 q1                 9
Front Controller: Sequence Diagram




dsbw 2011/2012 q1                    10
Front Controller + Application Controller




 An Application Controller has two main responsibilities: deciding which
  domain logic to run and deciding the view with which display the
  response.
 It is useful for designing complex use cases with definite rules about the
  order in which pages should be visited and different views depending on
  the state of objects.
 Separating the Application Controller from the Front Controller allows
  improving the modularity of the system, while enhancing its reusability.
 The Application Controller component is not a Server Page
dsbw 2011/2012 q1                                                              11
Front Controller + Application Controller (cont.)




dsbw 2011/2012 q1                                   12
Application Controller with Mapper




 Application Controller: Uses Mapper to resolve an incoming request to the
  appropriate action and view, to which it delegates or dispatches.
 Mapper: Uses a Map to translate an incoming request into the appropriate
  action and view. A Mapper acts as a factory
 Map: Acts as a dictionary or registry of references to target resources.
 Target: A resource that helps fulfill a particular request (view, command)

dsbw 2011/2012 q1                                                              13
Application Controller with Mapper (cont.)




dsbw 2011/2012 q1                            14
Application Controller with Mapper (cont.)




dsbw 2011/2012 q1                            15
Intercepting Filter
 Problem: You want to intercept and manipulate a request and a response
    before and after the request is processed in order to determine if:
         The client has a valid session
         The request path violates any constraint
         You support the browser type of the client
         The client has used a special encoding to send the data
         The request stream is encrypted or compressed
 Forces
         You want centralized, common processing across requests
         You want pre and postprocessing components loosely coupled with core
          request-handling services.
         You want pre and postprocessing components independent of each other and
          self contained to facilitate reuse.
 Solution: Use an Intercepting Filter as a pluggable filter to pre and
    postprocess requests and responses. A Filter Manager combines loosely
    coupled filters in a chain, delegating control to the appropriate filter.

dsbw 2011/2012 q1                                                               16
Intercepting Filter: Structure, Participants and
                     Responsibilities




 FilterManager: Manages filter processing. It creates the FilterChain with
  the appropriate filters, in the correct order, and initiates processing.
 FilterChain: Ordered collection of independent filters
 Filter: Component that performs a specific pre and/or postprocessing
  task.
 Target: The resource requested by the client.

dsbw 2011/2012 q1                                                             17
Intercepting Filter: Sequence Diagram




dsbw 2011/2012 q1                       18
Java Filters: Example
 Motivation: HTML forms that include a file upload use a different
    encoding type than that of basic forms. As a result, form data that
    accompanies the upload is not available via simple getParameter()
    invocations. The following filter preprocesses requests to translate
    the encoding type into a single consistent format that makes all
    form data available as request attributes:
      public class MultipartEncodeFilter extends javax.servlet.Filter {
        public void doFilter(javax.servlet.ServletRequest request,
                             javax.servlet.ServletResponse response,
                             javax.servlet.FilterChain filterChain)
                   throws java.io.IOException, javax.servlet.ServletException {
          String contentType = request.getContentType();
          if (contentType.startsWith("multipart/form-data") ) {
                For each pair (attributeName, value) obtained from the request
                do request.setAttribute(attributeName, value)
            }
            filterChain.doFilter(request, response); }
      }

dsbw 2011/2012 q1                                                                 19
View Helper
 Problem: You want to separate a view from its processing logic.
       JSP and other template-based views allow embedding scriptlet code
       Embedded scriptlet code cannot be reused easily
       Embedded scriptlet code often acts as control code or performs view
        preparation activities, such as content retrieval.
       Mingling control logic, data access logic and formatting logic leads to
        problems with modularity, reuse, maintenance, and role separation.
 Forces:
       You want to use template-based views, such as JSP.
       You want to avoid embedding program logic in the view.
       You want to separate programming logic from the view to facilitate division of
        labor between software developers and web page designers
 Solution: Use Views to encapsulate formatting code and Helpers to
    encapsulate view-processing logic.
       A View delegates its processing responsibilities to its helper classes,
        implemented as POJOs, custom tags, or tag files.
       Helpers serve as adapters between the view and the model, and perform
        processing related to formatting logic, such as generating an HTML table.

dsbw 2011/2012 q1                                                                   20
View Helper: Structure




 Helper: Encapsulates processing logic for generating and
  formatting a View. A helper typically adapts a PresentationModel
  for a view or provides access to the raw data of the
  PresentationModel
 PresentationModel: Holds the data retrieved from the business
  service, used to generate the View. It can be either a Business
  Delegate or a DTO

dsbw 2011/2012 q1                                                    21
View Helper: Sequence Diagram




dsbw 2011/2012 q1               22
View Helper: Example with JavaBean and JSTL

<%@ taglib uri=http://java.sun.com/jsp/jstl/core
prefix="c" %>
<jsp:useBean id="welcomeHelper" scope="request"
class="WelcomeHelper" />
<HTML><BODY bgcolor="FFFFFF">
<c:if test = "${welcomeHelper.nameExists == true}">
<center><H3> Welcome <b>
<c:out value='${welcomeHelper.name}'/></b><br><br></H3>
</center>
</c:if>
<H4><center>We are happy for your visit!</center></H4>
</BODY>
</HTML>
dsbw 2011/2012 q1                                         23
Composite View
 Problem: You want to build a view from modular, atomic
  component parts that are combined to create a composite whole,
  while managing the content and the layout independently.
 Forces
    You want common subviews, such as headers, footers and
      tables reused in multiple views, which may appear in different
      locations within each page layout.
    You have content in subviews that frequently changes or might
      be subject to certain access controls, such as limiting access to
      users in certain roles.
    You want to avoid directly embedding and duplicating subviews
      in multiple views which makes layout changes difficult to
      manage and maintain.
 Solution: Use Composite Views that are composed of multiple
  atomic subviews. Each subview of the overall template can be
  included dynamically in the whole, and the layout of the page can
  be managed independently of the content.
dsbw 2011/2012 q1                                                     24
Composite View: Structure




 Template: Represents the page layout
 ViewManager: Uses a Template to enforce a layout into which it places
    the appropriate content.
       A simple ViewManager might use the standard JSP include tag (<jsp:include>)
        to include SimpleView segments into a Template.
       A more sophisticated ViewManager might use POJOs or custom tag helpers to
        provide content and layout management in a more comprehensive and
        robust manner.
dsbw 2011/2012 q1                                                                25
Composite View: Sequence Diagram




dsbw 2011/2012 q1                  26
Transform View
 Problem: You want a view that processes domain data
    element by element and transforms it into HTML.
 Forces: The data returned by the business layer is either in
    XML or in something automatically transformable to it
 Solution: Use a Transform View that transforms directly from
    domain-oriented XML into (X)HTML by using XSLT (eXtensible
    Stylesheet LanguageTransformations). Normally XSLT does
    this by transforming each XML element into an (X)HTML
    element.




dsbw 2011/2012 q1                                                27
Dispatcher View
 Problem: You want a view to handle a request and generate a
    response, with little or no business processing performed
    before rendering the view.
 Forces:
       You have static views
       You have views generated from an existing presentation model
       You have views which are independent of any business service
        response
       You have limited business processing

 Solution: Use Dispatcher View with views as the initial access
    point for a request. Business processing, if necessary in
    limited form, is managed by the views.

dsbw 2011/2012 q1                                                  28
Dispatcher View: Structure




 BusinessHelper: Helps the View initiate business processing to handle a
  request
 BusinessService: Encapsulates the business logic and business state. A
  remote business service is accessed via a Business Delegate
 PresentationModel: Holds the data retrieved from the business service
  (DTO).

dsbw 2011/2012 q1                                                           29
Dispatcher View: Sequence Diagram




dsbw 2011/2012 q1                   30
Service To Worker
 Problem: You want to perform core request handling and
    invoke business logic before control is passed to the view
 Forces:
       You want specific business logic executed to service a request in
        order to retrieve content that will be used to generate a
        dynamic response.
       You have view selections which may depend on responses from
        business service invocations.
       You may have to use a framework or library in the application

 Solution: Use Service to Worker to centralize control and
    request handling to retrieve a presentation model before
    turning control over to the view. The view generates a
    dynamic response based on the presentation model.

dsbw 2011/2012 q1                                                      31
Service To Worker: Structure




dsbw 2011/2012 q1              32
Service to Worker: Sequence Diagram




dsbw 2011/2012 q1                     33
References
 Books
         ALUR, Deepak et al. Core J2EE Patterns: Best Practices and
          Design Strategies, 2on Edition, Prentice Hall PTR, 2003.
         FOWLER, Martin Patterns of Enterprise Application
          Architecture, Addison Wesley, 2002.


 Webs
         www.corej2eepatterns.com
         java.sun.com/blueprints/corej2eepatterns/
         java.sun.com/blueprints/guidelines/designing_enterprise_appli
          cations_2e/web-tier/web-tier5.html


dsbw 2011/2012 q1                                                      34

More Related Content

What's hot

Singleton design pattern
Singleton design patternSingleton design pattern
Singleton design pattern
11prasoon
 
Design patterns ppt
Design patterns pptDesign patterns ppt
Design patterns ppt
Aman Jain
 
Validation testing
Validation testingValidation testing
Validation testing
Slideshare
 

What's hot (20)

Windowforms controls c#
Windowforms controls c#Windowforms controls c#
Windowforms controls c#
 
Java Spring Framework
Java Spring FrameworkJava Spring Framework
Java Spring Framework
 
MVC ppt presentation
MVC ppt presentationMVC ppt presentation
MVC ppt presentation
 
Creating simple component
Creating simple componentCreating simple component
Creating simple component
 
Component Diagram
Component DiagramComponent Diagram
Component Diagram
 
Syllabus T.Y.Bsc. I.T. (SEM V & SEM VI)
Syllabus T.Y.Bsc. I.T. (SEM V  &  SEM VI)Syllabus T.Y.Bsc. I.T. (SEM V  &  SEM VI)
Syllabus T.Y.Bsc. I.T. (SEM V & SEM VI)
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Java abstract class & abstract methods
Java abstract class & abstract methodsJava abstract class & abstract methods
Java abstract class & abstract methods
 
C#
C#C#
C#
 
Data abstraction and object orientation
Data abstraction and object orientationData abstraction and object orientation
Data abstraction and object orientation
 
Introduction to Design Pattern
Introduction to Design  PatternIntroduction to Design  Pattern
Introduction to Design Pattern
 
Creational pattern
Creational patternCreational pattern
Creational pattern
 
Singleton design pattern
Singleton design patternSingleton design pattern
Singleton design pattern
 
Why MVC?
Why MVC?Why MVC?
Why MVC?
 
Java interface
Java interfaceJava interface
Java interface
 
C# Tutorial
C# Tutorial C# Tutorial
C# Tutorial
 
JDBC: java DataBase connectivity
JDBC: java DataBase connectivityJDBC: java DataBase connectivity
JDBC: java DataBase connectivity
 
Design patterns ppt
Design patterns pptDesign patterns ppt
Design patterns ppt
 
SOLID - Principles of Object Oriented Design
SOLID - Principles of Object Oriented DesignSOLID - Principles of Object Oriented Design
SOLID - Principles of Object Oriented Design
 
Validation testing
Validation testingValidation testing
Validation testing
 

Viewers also liked

Genius Hour and ePortfolios
Genius Hour and ePortfoliosGenius Hour and ePortfolios
Genius Hour and ePortfolios
Gallit Zvi
 
Twitter and Blogging by @gallit_z and @hughtheteacher
Twitter and Blogging by @gallit_z and @hughtheteacherTwitter and Blogging by @gallit_z and @hughtheteacher
Twitter and Blogging by @gallit_z and @hughtheteacher
Gallit Zvi
 
Tarun Kumar Thesis 2
Tarun Kumar Thesis 2Tarun Kumar Thesis 2
Tarun Kumar Thesis 2
Tarun_Kumar85
 
ใบงานที่ 11
ใบงานที่ 11ใบงานที่ 11
ใบงานที่ 11
Moo Mild
 
ใบงานที่ 11
ใบงานที่ 11ใบงานที่ 11
ใบงานที่ 11
Moo Mild
 
Priyanka baskar-timeline-v2
Priyanka baskar-timeline-v2Priyanka baskar-timeline-v2
Priyanka baskar-timeline-v2
sankarje
 
ใบงานที่ 11
ใบงานที่ 11ใบงานที่ 11
ใบงานที่ 11
Moo Mild
 
Englishidom
EnglishidomEnglishidom
Englishidom
Moo Mild
 
Interning in Silicon Valley
Interning in Silicon ValleyInterning in Silicon Valley
Interning in Silicon Valley
tiffanywlim
 

Viewers also liked (20)

Unit 06: The Web Application Extension for UML
Unit 06: The Web Application Extension for UMLUnit 06: The Web Application Extension for UML
Unit 06: The Web Application Extension for UML
 
Ameratex energy
Ameratex energyAmeratex energy
Ameratex energy
 
Blog
BlogBlog
Blog
 
Genius Hour and ePortfolios
Genius Hour and ePortfoliosGenius Hour and ePortfolios
Genius Hour and ePortfolios
 
Tomas tirolesas
Tomas tirolesasTomas tirolesas
Tomas tirolesas
 
Twitter and Blogging by @gallit_z and @hughtheteacher
Twitter and Blogging by @gallit_z and @hughtheteacherTwitter and Blogging by @gallit_z and @hughtheteacher
Twitter and Blogging by @gallit_z and @hughtheteacher
 
Tarun Kumar Thesis 2
Tarun Kumar Thesis 2Tarun Kumar Thesis 2
Tarun Kumar Thesis 2
 
加速器と素粒子物理での超?低レイヤー
加速器と素粒子物理での超?低レイヤー加速器と素粒子物理での超?低レイヤー
加速器と素粒子物理での超?低レイヤー
 
Rscon4 presentation on Genius Hour
Rscon4 presentation on Genius HourRscon4 presentation on Genius Hour
Rscon4 presentation on Genius Hour
 
ใบงานที่ 11
ใบงานที่ 11ใบงานที่ 11
ใบงานที่ 11
 
ใบงานที่ 11
ใบงานที่ 11ใบงานที่ 11
ใบงานที่ 11
 
Priyanka baskar-timeline-v2
Priyanka baskar-timeline-v2Priyanka baskar-timeline-v2
Priyanka baskar-timeline-v2
 
Building Your PLN
Building Your PLNBuilding Your PLN
Building Your PLN
 
ใบงานที่ 11
ใบงานที่ 11ใบงานที่ 11
ใบงานที่ 11
 
Englishidom
EnglishidomEnglishidom
Englishidom
 
Boda Ingrid y Juan Pablo.
Boda Ingrid y Juan Pablo.Boda Ingrid y Juan Pablo.
Boda Ingrid y Juan Pablo.
 
Presentation1
Presentation1Presentation1
Presentation1
 
Stephanie neri final_presentation
Stephanie neri final_presentationStephanie neri final_presentation
Stephanie neri final_presentation
 
Interning in Silicon Valley
Interning in Silicon ValleyInterning in Silicon Valley
Interning in Silicon Valley
 
Spatula
SpatulaSpatula
Spatula
 

Similar to Unit 07: Design Patterns and Frameworks (1/3)

[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)
Carles Farré
 

Similar to Unit 07: Design Patterns and Frameworks (1/3) (20)

[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)
[DSBW Spring 2009] Unit 07: WebApp Design Patterns & Frameworks (1/3)
 
MVC Pattern. Flex implementation of MVC
MVC Pattern. Flex implementation of MVCMVC Pattern. Flex implementation of MVC
MVC Pattern. Flex implementation of MVC
 
Unit 07: Design Patterns and Frameworks (2/3)
Unit 07: Design Patterns and Frameworks (2/3)Unit 07: Design Patterns and Frameworks (2/3)
Unit 07: Design Patterns and Frameworks (2/3)
 
Spring Framework-II
Spring Framework-IISpring Framework-II
Spring Framework-II
 
Client Side MVC & Angular
Client Side MVC & AngularClient Side MVC & Angular
Client Side MVC & Angular
 
Mvc architecture
Mvc architectureMvc architecture
Mvc architecture
 
AngularJS: Overview & Key Features
AngularJS: Overview & Key FeaturesAngularJS: Overview & Key Features
AngularJS: Overview & Key Features
 
Struts(mrsurwar) ppt
Struts(mrsurwar) pptStruts(mrsurwar) ppt
Struts(mrsurwar) ppt
 
Intro ASP MVC
Intro ASP MVCIntro ASP MVC
Intro ASP MVC
 
Angularjs
AngularjsAngularjs
Angularjs
 
MVC
MVCMVC
MVC
 
Web tier-framework-mvc
Web tier-framework-mvcWeb tier-framework-mvc
Web tier-framework-mvc
 
Ria Mvc
Ria MvcRia Mvc
Ria Mvc
 
J2EE pattern 5
J2EE pattern 5J2EE pattern 5
J2EE pattern 5
 
MVC
MVCMVC
MVC
 
Struts notes
Struts notesStruts notes
Struts notes
 
Struts natraj - satya
Struts   natraj - satyaStruts   natraj - satya
Struts natraj - satya
 
Struts natraj - satya
Struts   natraj - satyaStruts   natraj - satya
Struts natraj - satya
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
.NET,ASP .NET, Angular Js,LinQ
.NET,ASP .NET, Angular Js,LinQ.NET,ASP .NET, Angular Js,LinQ
.NET,ASP .NET, Angular Js,LinQ
 

More from DSBW 2011/2002 - Carles Farré - Barcelona Tech (10)

Unit 09: Web Application Testing
Unit 09: Web Application TestingUnit 09: Web Application Testing
Unit 09: Web Application Testing
 
Unit 08: Security for Web Applications
Unit 08: Security for Web ApplicationsUnit 08: Security for Web Applications
Unit 08: Security for Web Applications
 
Unit 07: Design Patterns and Frameworks (3/3)
Unit 07: Design Patterns and Frameworks (3/3)Unit 07: Design Patterns and Frameworks (3/3)
Unit 07: Design Patterns and Frameworks (3/3)
 
Unit 05: Physical Architecture Design
Unit 05: Physical Architecture DesignUnit 05: Physical Architecture Design
Unit 05: Physical Architecture Design
 
Unit 04: From Requirements to the UX Model
Unit 04: From Requirements to the UX ModelUnit 04: From Requirements to the UX Model
Unit 04: From Requirements to the UX Model
 
Unit03: Process and Business Models
Unit03: Process and Business ModelsUnit03: Process and Business Models
Unit03: Process and Business Models
 
Unit 02: Web Technologies (2/2)
Unit 02: Web Technologies (2/2)Unit 02: Web Technologies (2/2)
Unit 02: Web Technologies (2/2)
 
Unit 02: Web Technologies (1/2)
Unit 02: Web Technologies (1/2)Unit 02: Web Technologies (1/2)
Unit 02: Web Technologies (1/2)
 
Unit 01 - Introduction
Unit 01 - IntroductionUnit 01 - Introduction
Unit 01 - Introduction
 
Unit 10: XML and Beyond (Sematic Web, Web Services, ...)
Unit 10: XML and Beyond (Sematic Web, Web Services, ...)Unit 10: XML and Beyond (Sematic Web, Web Services, ...)
Unit 10: XML and Beyond (Sematic Web, Web Services, ...)
 

Recently uploaded

Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 

Recently uploaded (20)

GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 

Unit 07: Design Patterns and Frameworks (1/3)

  • 1. Unit 7: Design Patterns and Frameworks  Web presentation layer patterns  The Model-View-Controller (MVC) architectural pattern  Catalog of MVC-based patterns  Other patterns  Web presentation-business integration patterns  Business layer architectural patterns  MVC Web frameworks dsbw 2011/2012 q1 1
  • 2. The MVC Architectural Pattern  Divides an interactive application into three components/levels:  Model:  Contains the functional core of the application  Encapsulates the appropriate data, and exports procedures that perform application-specific processing  View:  Displays information to the user  Obtains the data from the model  Different views present the model’s information in different ways  Controller:  Accepts user input as events  Translates events to service requests for the model or display requests for the view dsbw 2011/2012 q1 2
  • 3. The “Classical” MVC Pattern Observer * update() 1 Model data attach( ob : Observer ) View detach( ob : Observer ) Controller notify() 1 1 getData() initialize( m : Model ) initialize( m : Model, v : View ) service() makeController() handleEvent() activate() update() display() update() dsbw 2011/2012 q1 3
  • 4. Catalog of MVC-Based Web Presentation Patterns  Controller Patterns:  Page Controller  Front Controller  Application Controller  Intercepting Filter  View Patterns  View Helper  Composite View  Transform View  Composite Patterns:  Dispatcher View  Service to Worker dsbw 2011/2012 q1 4
  • 5. Page Controller  Each Page Controller component act as the controller for a dynamic page on the Web site.  The basic responsibilities of a Page Controller are:  Decode the URL and extract any form data  Invoke model components to process the request data  Determine which view should display the result page and forward the model information to it dsbw 2011/2012 q1 5
  • 6. Page Controller: How It Works dsbw 2011/2012 q1 6
  • 7. Page Controller: When to Use It  Page Controller works particularly well in a site where most of the controller logic is pretty simple: : User : System service(parameters) result  Variant: Page Controller and View implemented by the same Server Page: (Model 1) dsbw 2011/2012 q1 7
  • 8. Front Controller (Model 2)  Problem: The system requires a centralized access point for request handling. Without a central access point, control code that is common across multiple requests is duplicated in numerous places. When control code is intermingled with view-creation code, the application is less modular and cohesive.  Forces:  You want to avoid duplicate control logic.  You want to apply common logic to multiple requests.  You want to separate system processing logic from the view.  You want to centralize controlled access points into your system  Solution: Use a Front Controller as the initial point of contact for handling all related requests. The Front Controller centralizes control logic that might otherwise be duplicated, and manages the key request handling activities . dsbw 2011/2012 q1 8
  • 9. Front Controller: Class Diagram 1 dsbw 2011/2012 q1 9
  • 10. Front Controller: Sequence Diagram dsbw 2011/2012 q1 10
  • 11. Front Controller + Application Controller  An Application Controller has two main responsibilities: deciding which domain logic to run and deciding the view with which display the response.  It is useful for designing complex use cases with definite rules about the order in which pages should be visited and different views depending on the state of objects.  Separating the Application Controller from the Front Controller allows improving the modularity of the system, while enhancing its reusability.  The Application Controller component is not a Server Page dsbw 2011/2012 q1 11
  • 12. Front Controller + Application Controller (cont.) dsbw 2011/2012 q1 12
  • 13. Application Controller with Mapper  Application Controller: Uses Mapper to resolve an incoming request to the appropriate action and view, to which it delegates or dispatches.  Mapper: Uses a Map to translate an incoming request into the appropriate action and view. A Mapper acts as a factory  Map: Acts as a dictionary or registry of references to target resources.  Target: A resource that helps fulfill a particular request (view, command) dsbw 2011/2012 q1 13
  • 14. Application Controller with Mapper (cont.) dsbw 2011/2012 q1 14
  • 15. Application Controller with Mapper (cont.) dsbw 2011/2012 q1 15
  • 16. Intercepting Filter  Problem: You want to intercept and manipulate a request and a response before and after the request is processed in order to determine if:  The client has a valid session  The request path violates any constraint  You support the browser type of the client  The client has used a special encoding to send the data  The request stream is encrypted or compressed  Forces  You want centralized, common processing across requests  You want pre and postprocessing components loosely coupled with core request-handling services.  You want pre and postprocessing components independent of each other and self contained to facilitate reuse.  Solution: Use an Intercepting Filter as a pluggable filter to pre and postprocess requests and responses. A Filter Manager combines loosely coupled filters in a chain, delegating control to the appropriate filter. dsbw 2011/2012 q1 16
  • 17. Intercepting Filter: Structure, Participants and Responsibilities  FilterManager: Manages filter processing. It creates the FilterChain with the appropriate filters, in the correct order, and initiates processing.  FilterChain: Ordered collection of independent filters  Filter: Component that performs a specific pre and/or postprocessing task.  Target: The resource requested by the client. dsbw 2011/2012 q1 17
  • 18. Intercepting Filter: Sequence Diagram dsbw 2011/2012 q1 18
  • 19. Java Filters: Example  Motivation: HTML forms that include a file upload use a different encoding type than that of basic forms. As a result, form data that accompanies the upload is not available via simple getParameter() invocations. The following filter preprocesses requests to translate the encoding type into a single consistent format that makes all form data available as request attributes: public class MultipartEncodeFilter extends javax.servlet.Filter { public void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain filterChain) throws java.io.IOException, javax.servlet.ServletException { String contentType = request.getContentType(); if (contentType.startsWith("multipart/form-data") ) { For each pair (attributeName, value) obtained from the request do request.setAttribute(attributeName, value) } filterChain.doFilter(request, response); } } dsbw 2011/2012 q1 19
  • 20. View Helper  Problem: You want to separate a view from its processing logic.  JSP and other template-based views allow embedding scriptlet code  Embedded scriptlet code cannot be reused easily  Embedded scriptlet code often acts as control code or performs view preparation activities, such as content retrieval.  Mingling control logic, data access logic and formatting logic leads to problems with modularity, reuse, maintenance, and role separation.  Forces:  You want to use template-based views, such as JSP.  You want to avoid embedding program logic in the view.  You want to separate programming logic from the view to facilitate division of labor between software developers and web page designers  Solution: Use Views to encapsulate formatting code and Helpers to encapsulate view-processing logic.  A View delegates its processing responsibilities to its helper classes, implemented as POJOs, custom tags, or tag files.  Helpers serve as adapters between the view and the model, and perform processing related to formatting logic, such as generating an HTML table. dsbw 2011/2012 q1 20
  • 21. View Helper: Structure  Helper: Encapsulates processing logic for generating and formatting a View. A helper typically adapts a PresentationModel for a view or provides access to the raw data of the PresentationModel  PresentationModel: Holds the data retrieved from the business service, used to generate the View. It can be either a Business Delegate or a DTO dsbw 2011/2012 q1 21
  • 22. View Helper: Sequence Diagram dsbw 2011/2012 q1 22
  • 23. View Helper: Example with JavaBean and JSTL <%@ taglib uri=http://java.sun.com/jsp/jstl/core prefix="c" %> <jsp:useBean id="welcomeHelper" scope="request" class="WelcomeHelper" /> <HTML><BODY bgcolor="FFFFFF"> <c:if test = "${welcomeHelper.nameExists == true}"> <center><H3> Welcome <b> <c:out value='${welcomeHelper.name}'/></b><br><br></H3> </center> </c:if> <H4><center>We are happy for your visit!</center></H4> </BODY> </HTML> dsbw 2011/2012 q1 23
  • 24. Composite View  Problem: You want to build a view from modular, atomic component parts that are combined to create a composite whole, while managing the content and the layout independently.  Forces  You want common subviews, such as headers, footers and tables reused in multiple views, which may appear in different locations within each page layout.  You have content in subviews that frequently changes or might be subject to certain access controls, such as limiting access to users in certain roles.  You want to avoid directly embedding and duplicating subviews in multiple views which makes layout changes difficult to manage and maintain.  Solution: Use Composite Views that are composed of multiple atomic subviews. Each subview of the overall template can be included dynamically in the whole, and the layout of the page can be managed independently of the content. dsbw 2011/2012 q1 24
  • 25. Composite View: Structure  Template: Represents the page layout  ViewManager: Uses a Template to enforce a layout into which it places the appropriate content.  A simple ViewManager might use the standard JSP include tag (<jsp:include>) to include SimpleView segments into a Template.  A more sophisticated ViewManager might use POJOs or custom tag helpers to provide content and layout management in a more comprehensive and robust manner. dsbw 2011/2012 q1 25
  • 26. Composite View: Sequence Diagram dsbw 2011/2012 q1 26
  • 27. Transform View  Problem: You want a view that processes domain data element by element and transforms it into HTML.  Forces: The data returned by the business layer is either in XML or in something automatically transformable to it  Solution: Use a Transform View that transforms directly from domain-oriented XML into (X)HTML by using XSLT (eXtensible Stylesheet LanguageTransformations). Normally XSLT does this by transforming each XML element into an (X)HTML element. dsbw 2011/2012 q1 27
  • 28. Dispatcher View  Problem: You want a view to handle a request and generate a response, with little or no business processing performed before rendering the view.  Forces:  You have static views  You have views generated from an existing presentation model  You have views which are independent of any business service response  You have limited business processing  Solution: Use Dispatcher View with views as the initial access point for a request. Business processing, if necessary in limited form, is managed by the views. dsbw 2011/2012 q1 28
  • 29. Dispatcher View: Structure  BusinessHelper: Helps the View initiate business processing to handle a request  BusinessService: Encapsulates the business logic and business state. A remote business service is accessed via a Business Delegate  PresentationModel: Holds the data retrieved from the business service (DTO). dsbw 2011/2012 q1 29
  • 30. Dispatcher View: Sequence Diagram dsbw 2011/2012 q1 30
  • 31. Service To Worker  Problem: You want to perform core request handling and invoke business logic before control is passed to the view  Forces:  You want specific business logic executed to service a request in order to retrieve content that will be used to generate a dynamic response.  You have view selections which may depend on responses from business service invocations.  You may have to use a framework or library in the application  Solution: Use Service to Worker to centralize control and request handling to retrieve a presentation model before turning control over to the view. The view generates a dynamic response based on the presentation model. dsbw 2011/2012 q1 31
  • 32. Service To Worker: Structure dsbw 2011/2012 q1 32
  • 33. Service to Worker: Sequence Diagram dsbw 2011/2012 q1 33
  • 34. References  Books  ALUR, Deepak et al. Core J2EE Patterns: Best Practices and Design Strategies, 2on Edition, Prentice Hall PTR, 2003.  FOWLER, Martin Patterns of Enterprise Application Architecture, Addison Wesley, 2002.  Webs  www.corej2eepatterns.com  java.sun.com/blueprints/corej2eepatterns/  java.sun.com/blueprints/guidelines/designing_enterprise_appli cations_2e/web-tier/web-tier5.html dsbw 2011/2012 q1 34