SlideShare a Scribd company logo
Using Struts 2 and Spring
Frameworks Together
Bruce Phillips
University of Kansas
March 2009


 Presentation and code examples available at
   http://www.brucephillips.name/spring
References
 Spring Framework -
 http://www.springsource.org/documentation
 Spring Community Forums -
 http://forum.springsource.org/
 Introduction to the Spring Framework 2.5 -
 http://www.theserverside.com/tt/articles/article.ts
 s?l=IntrotoSpring25
 Spring in Action, 2nd Edition, Manning Publishing,
 August 2007
 Pro Spring 2.5, Apress Publishing, August 2008
 Struts 2 Framework - http://struts.apache.org

                                                   2
References
 Using Struts 2 and Spring Frameworks Together, Bruce
 Phillips Blog -
 http://www.brucephillips.name/blog/index.cfm/2008/10/17/Usi
 ng-Struts-2-and-Spring-Frameworks-Together
 Introduction to the Java Spring Framework,
 http://www.brucephillips.name/blog/index.cfm/2009/1/29/Intr
 oduction-to-the-Java-Spring-Framework
 Struts 2 In Practice, Manning Publishing,
 http://www.manning.com/wannemacher/
 Apache Struts 2 Documentation, Spring Plugin -
 http://struts.apache.org/2.x/docs/spring-plugin.html
 Struts User Forum - http://www.nabble.com/Struts---User-
 f206.html
 Maven - http://maven.apache.org/
 Maven - http://books.sonatype.com/maven-book/index.html

                                                           3
Spring and Struts 2 Frameworks
 Introduction to the Java Spring
 Framework
 ◦ http://www.brucephillips.name/blog/index.cfm/
   2009/1/29/Introduction-to-the-Java-Spring-
   Framework
 Introduction to The Struts 2 Java Web
 Application Framework
 ◦ http://www.brucephillips.name/blog/index.cfm/
   2008/10/7/Introduction-toThe-Struts-2-Java-
   Web-Application-Framework

                                               4
Advantages of Using
Spring and Struts 2 Together
 Leverage the strengths of both
 frameworks
 Spring
 ◦ Dependency management
 ◦ Aspect-Oriented Programming (AOP)
 ◦ Spring JDBC
 Struts 2
 ◦ Simplifies implementing the model, view,
   controller (MVC) pattern in a web application

                                                   5
Example Applications
 Struts2_Spring_Example
 ◦ Simple Struts 2 application that uses Spring to
   manage dependencies
 ContactsWebApp
 ◦ More complicated Struts 2 application that
   uses Spring to manage dependencies,
   implement cross-cutting (AOP) concerns, and
   interact with a database repository
 Code and installation instructions at
 ◦ http://www.brucephillips.name/spring

                                                     6
Classes Depend On Other Classes
          Developers must “manage” these class dependencies (coupling)

                        Struts ActionSupport Classes


 CreatePhone                CreateContact              CreateEmail




                                                               Service Classes


 PhoneService               ContactService             EmailService


           ContactsWebApp –
           sampling of class
           dependencies                                      Persistence Classes


PhoneDataAccess           ContactDataAccess         EmailDataAccess

                                                                                   7
Struts Without Spring
 Struts web applications tend to have quite a few
 “controller” (ActionSupport) classes
 These “controller” classes call upon other classes to
 do the work
 Without Spring must use concrete object
 instantiation
 ◦ ContactService contactService = new
   ContactServiceImpl();
 ◦ The same code will be repeated in all the other Struts
   ActionSupport classes that use a ContactService object
 Each class is responsible for managing its
 dependencies
 ◦ More difficult to configure, maintain, and change


                                                            8
Struts With Spring
 Use Spring to manage dependencies
 ◦ Dependencies are specified and managed in
   one place
 ◦ Much easier to change dependencies
 ◦ Most dependencies can be “auto-wired”
 Use the other benefits Spring provides
 ◦ Aspect Oriented Programming (AOP)
 ◦ Spring JDBC
 ◦ Transaction Management

                                               9
Jars Required
 See Struts2_Spring_Example application
 ◦ jars are under Referenced Libraries
 ◦ spring.jar is needed to use Spring capabilities
 ◦ struts2-spring-plugin-2.1.6.jar is needed so
   that Struts 2 can use Spring




                                                     10
How To Integrate Spring Into Struts
 Changes to web.xml
 ◦ Add ContextLoaderListener and
   RequestContextListener to web.xml
 Add applicationContext.xml
 ◦ Under WEB-INF
 ◦ Spring configuration and bean definitions




                                               11
Use Spring to Manage
Dependencies
 There are two different ways to have
 Spring manage the dependencies in a
 Struts application
 ◦ Configure your actions as Spring beans
    applicationContext.xml
 ◦ Configure your actions in struts.xml
    applicationContext_alternate.xml
 ◦ In both cases use Spring to manage
   dependencies between your ActionSupport
   classes and other classes
                                             12
Struts2_Spring_Example
 Register class is a Struts ActionSupport class
 ◦ Register class depends upon a PersonService
   class
 Option 1 use Spring to create and manage
 the Register objects
    See applicationContext.xml
      Note the id value for the Register bean
    Register class requires a PersonService object and
    Spring will manage this dependency
    In struts.xml create the action node but for the class
    value use the id value specified in
    applicationContext.xml


                                                             13
Struts2_Spring_Example
 Option 2
 ◦ See struts_alternate.xml
    Create action node as usual by specifying the complete
    class for the class attribute
 ◦ See applicatonContext_alternate.xml
    Just create those beans for classes that are NOT Struts
    ActionSupport classes
 ◦ Spring will manage any dependencies for the
   ActionSupport classes
    Register class depends on PersonService class
    Before a Register object is provided to the application,
    Spring will pass a PersonService object to class
    Register’s setPersonService method


                                                               14
Struts 2 and Spring
Configuration Options
 How both option 1 and option 2 manage
 dependencies can be configured to bypass
 the defaults
 ◦ See chapter 3 Struts 2 In Practice
 ◦ See Struts 2 Spring plugin documentation at:
    http://struts.apache.org/2.x/docs/spring-plugin.html




                                                           15
ContactsWebApp
 Very simple contacts manager
 Web application that uses Struts 2 and
 Spring
 ◦ Database is embedded Derby
 Uses Struts to manage ActionSupport
 classes (option 2) and Spring to:
 ◦ Manage dependencies
 ◦ Implement cross-cutting concerns such as logging,
   performance timing
 ◦ Interact with database repository (Spring JDBC)

                                                   16
ContactsWebApp – FindContact and its dependencies

  ActionSupport         FindContact
  Class



    Service         ContactSearchService
    Layer




                     ContactDataAccess
Persistence Layer




PhoneDataAccess       EmailDataAccess      PersonDataAccess




                         DataSource
                                                              17
ContactsWebApp – struts.xml and
applicationContext.xml
 struts.xml
 ◦ Action nodes specify complete class value
 ◦ For example FindContact
    Note class FindContact needs a
    ContactSearchService object and has a public
    setContactSearchService method
 applicationContext.xml
 ◦ Spring configuration
 ◦ Create Spring beans for all non-
   ActionSupport classes that are used by the
   ActionSupport class
                                                   18
Struts 2 – Spring Interaction
applicationContext.xml
 Spring will provide any objects needed by
 the ActionSupport classes automatically
  ◦ Autowire “by name”
  ◦ For example FindContacts property
    contactSearchService will get a value because
    Spring will call the setContactSearchService
    method and pass it a contactSearchService object
 Spring is also managing dependencies for the
 other classes
  ◦ For example see contactSearchService,
    contactDataAccess and personDataAccess beans
  ◦ Be sure to specify scope=“request”

                                                   19
Spring AOP
 Can use Spring AOP just as we did in the
 non-Struts 2 Contact application
 Same configuration in the Struts 2
 project’s applicationContext.xml as we
 had in the Contact (non-web) project’s
 applicationContext_DB_Repository.xml
 See package edu.ku.si.contact.advice



                                            20
AOP Example - Exception Logging
 Need to specify where to apply the
 advice
 ◦ See ExceptionLogging class PointCut
   definition
 ◦ Don’t need to apply advice to the
   ActionSupport classes because they won’t be
   the originator of any Exceptions
 Rename c:/derby/contactsDB to
 c:/derby/tcontactsDB
 Run ContactsWebApp

                                                 21
Spring JDBC
 Can use Spring JDBC as we did in the
 Contact (non-Struts 2) application
 See package edu.ku.si.contact.data
 The data access classes extend Spring
 JDBC’s SimpleJdbcDaoSupport
 ◦ See PersonDataAccess
 ◦ Much simpler to query database and process
   results
 ◦ Note Spring JDBC will manage opening and
   closing connections, handling exceptions, etc.

                                                    22
Data Source Management
 The data access classes need a Data Source
 object
 ◦ See applicationContext.xml
 ◦ Note no scope is specified for the dataSource
   bean
 By extending SimpleJdbcDaoSupport the
 data access classes inherit the setDataSource
 method which Spring uses to inject the data
 source object
 To use connection pooling see notes in
 applicationContext.xml
                                                   23
Why Use Spring With Struts 2?
 Significantly reduces coupling between
 classes
 Central management of dependencies
 Applications are easier to maintain and
 change
 Leverage Spring features that Struts 2
 doesn’t provide
 ◦ Aspect-oriented programming
 ◦ Spring JDBC
                                           24

More Related Content

DOCX
Struts notes
PDF
Struts notes
PPTX
Spring framework DAO
PPT
Struts2.x
PPTX
Spring jdbc dao
DOCX
What is the difference between struts 1 vs struts 2
PDF
important struts interview questions
ODT
Spring IOC advantages and developing spring application sample
Struts notes
Struts notes
Spring framework DAO
Struts2.x
Spring jdbc dao
What is the difference between struts 1 vs struts 2
important struts interview questions
Spring IOC advantages and developing spring application sample

Similar to Struts 2 And Spring Frameworks Together (20)

PPT
Krazykoder struts2 spring_hibernate
PDF
Toms introtospring mvc
PPT
Struts2-Spring=Hibernate
PDF
Web Development with Apache Struts 2
PPTX
struts unit best pdf for struts java.pptx
PPT
Learn spring at amc square learning
PPT
strut2
PDF
01 spring-intro
PPT
Spring 3.1: a Walking Tour
PPT
Hybernat and structs, spring classes in mumbai
PPTX
Spring (1)
PPTX
Introduction to j2 ee frameworks
PDF
스프링 프레임워크
PPT
Spring Basics
PDF
Struts An Open-source Architecture for Web Applications
PPTX
Spring Basics
PDF
Spring Mvc
PPTX
Struts & spring framework issues
PPTX
Spring
PPTX
Spring framework
Krazykoder struts2 spring_hibernate
Toms introtospring mvc
Struts2-Spring=Hibernate
Web Development with Apache Struts 2
struts unit best pdf for struts java.pptx
Learn spring at amc square learning
strut2
01 spring-intro
Spring 3.1: a Walking Tour
Hybernat and structs, spring classes in mumbai
Spring (1)
Introduction to j2 ee frameworks
스프링 프레임워크
Spring Basics
Struts An Open-source Architecture for Web Applications
Spring Basics
Spring Mvc
Struts & spring framework issues
Spring
Spring framework
Ad

More from Syed Shahul (13)

PDF
Beginning java and flex migrating java, spring, hibernate, and maven develop...
PDF
Sahih Bukhari - Tamil
PDF
Hibernate Interview Questions
PDF
Struts Live
PDF
Struts Intro
PDF
Step By Step Guide For Buidling Simple Struts App
PDF
Hibernate Reference
PDF
Hibernate Tutorial
PDF
Spring Live Sample Chapter
PDF
Spring Reference
PPT
Jamon 22
PPS
Do U Know Him
PPT
Hot Chocolate
Beginning java and flex migrating java, spring, hibernate, and maven develop...
Sahih Bukhari - Tamil
Hibernate Interview Questions
Struts Live
Struts Intro
Step By Step Guide For Buidling Simple Struts App
Hibernate Reference
Hibernate Tutorial
Spring Live Sample Chapter
Spring Reference
Jamon 22
Do U Know Him
Hot Chocolate
Ad

Recently uploaded (20)

PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PPT
Teaching material agriculture food technology
PDF
Mushroom cultivation and it's methods.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Machine learning based COVID-19 study performance prediction
PPTX
1. Introduction to Computer Programming.pptx
PDF
Encapsulation theory and applications.pdf
PPTX
Tartificialntelligence_presentation.pptx
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
A comparative analysis of optical character recognition models for extracting...
Reach Out and Touch Someone: Haptics and Empathic Computing
OMC Textile Division Presentation 2021.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Empathic Computing: Creating Shared Understanding
Digital-Transformation-Roadmap-for-Companies.pptx
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Teaching material agriculture food technology
Mushroom cultivation and it's methods.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Machine learning based COVID-19 study performance prediction
1. Introduction to Computer Programming.pptx
Encapsulation theory and applications.pdf
Tartificialntelligence_presentation.pptx
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
gpt5_lecture_notes_comprehensive_20250812015547.pdf
NewMind AI Weekly Chronicles - August'25-Week II
A comparative study of natural language inference in Swahili using monolingua...
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Unlocking AI with Model Context Protocol (MCP)
A comparative analysis of optical character recognition models for extracting...

Struts 2 And Spring Frameworks Together

  • 1. Using Struts 2 and Spring Frameworks Together Bruce Phillips University of Kansas March 2009 Presentation and code examples available at http://www.brucephillips.name/spring
  • 2. References Spring Framework - http://www.springsource.org/documentation Spring Community Forums - http://forum.springsource.org/ Introduction to the Spring Framework 2.5 - http://www.theserverside.com/tt/articles/article.ts s?l=IntrotoSpring25 Spring in Action, 2nd Edition, Manning Publishing, August 2007 Pro Spring 2.5, Apress Publishing, August 2008 Struts 2 Framework - http://struts.apache.org 2
  • 3. References Using Struts 2 and Spring Frameworks Together, Bruce Phillips Blog - http://www.brucephillips.name/blog/index.cfm/2008/10/17/Usi ng-Struts-2-and-Spring-Frameworks-Together Introduction to the Java Spring Framework, http://www.brucephillips.name/blog/index.cfm/2009/1/29/Intr oduction-to-the-Java-Spring-Framework Struts 2 In Practice, Manning Publishing, http://www.manning.com/wannemacher/ Apache Struts 2 Documentation, Spring Plugin - http://struts.apache.org/2.x/docs/spring-plugin.html Struts User Forum - http://www.nabble.com/Struts---User- f206.html Maven - http://maven.apache.org/ Maven - http://books.sonatype.com/maven-book/index.html 3
  • 4. Spring and Struts 2 Frameworks Introduction to the Java Spring Framework ◦ http://www.brucephillips.name/blog/index.cfm/ 2009/1/29/Introduction-to-the-Java-Spring- Framework Introduction to The Struts 2 Java Web Application Framework ◦ http://www.brucephillips.name/blog/index.cfm/ 2008/10/7/Introduction-toThe-Struts-2-Java- Web-Application-Framework 4
  • 5. Advantages of Using Spring and Struts 2 Together Leverage the strengths of both frameworks Spring ◦ Dependency management ◦ Aspect-Oriented Programming (AOP) ◦ Spring JDBC Struts 2 ◦ Simplifies implementing the model, view, controller (MVC) pattern in a web application 5
  • 6. Example Applications Struts2_Spring_Example ◦ Simple Struts 2 application that uses Spring to manage dependencies ContactsWebApp ◦ More complicated Struts 2 application that uses Spring to manage dependencies, implement cross-cutting (AOP) concerns, and interact with a database repository Code and installation instructions at ◦ http://www.brucephillips.name/spring 6
  • 7. Classes Depend On Other Classes Developers must “manage” these class dependencies (coupling) Struts ActionSupport Classes CreatePhone CreateContact CreateEmail Service Classes PhoneService ContactService EmailService ContactsWebApp – sampling of class dependencies Persistence Classes PhoneDataAccess ContactDataAccess EmailDataAccess 7
  • 8. Struts Without Spring Struts web applications tend to have quite a few “controller” (ActionSupport) classes These “controller” classes call upon other classes to do the work Without Spring must use concrete object instantiation ◦ ContactService contactService = new ContactServiceImpl(); ◦ The same code will be repeated in all the other Struts ActionSupport classes that use a ContactService object Each class is responsible for managing its dependencies ◦ More difficult to configure, maintain, and change 8
  • 9. Struts With Spring Use Spring to manage dependencies ◦ Dependencies are specified and managed in one place ◦ Much easier to change dependencies ◦ Most dependencies can be “auto-wired” Use the other benefits Spring provides ◦ Aspect Oriented Programming (AOP) ◦ Spring JDBC ◦ Transaction Management 9
  • 10. Jars Required See Struts2_Spring_Example application ◦ jars are under Referenced Libraries ◦ spring.jar is needed to use Spring capabilities ◦ struts2-spring-plugin-2.1.6.jar is needed so that Struts 2 can use Spring 10
  • 11. How To Integrate Spring Into Struts Changes to web.xml ◦ Add ContextLoaderListener and RequestContextListener to web.xml Add applicationContext.xml ◦ Under WEB-INF ◦ Spring configuration and bean definitions 11
  • 12. Use Spring to Manage Dependencies There are two different ways to have Spring manage the dependencies in a Struts application ◦ Configure your actions as Spring beans applicationContext.xml ◦ Configure your actions in struts.xml applicationContext_alternate.xml ◦ In both cases use Spring to manage dependencies between your ActionSupport classes and other classes 12
  • 13. Struts2_Spring_Example Register class is a Struts ActionSupport class ◦ Register class depends upon a PersonService class Option 1 use Spring to create and manage the Register objects See applicationContext.xml Note the id value for the Register bean Register class requires a PersonService object and Spring will manage this dependency In struts.xml create the action node but for the class value use the id value specified in applicationContext.xml 13
  • 14. Struts2_Spring_Example Option 2 ◦ See struts_alternate.xml Create action node as usual by specifying the complete class for the class attribute ◦ See applicatonContext_alternate.xml Just create those beans for classes that are NOT Struts ActionSupport classes ◦ Spring will manage any dependencies for the ActionSupport classes Register class depends on PersonService class Before a Register object is provided to the application, Spring will pass a PersonService object to class Register’s setPersonService method 14
  • 15. Struts 2 and Spring Configuration Options How both option 1 and option 2 manage dependencies can be configured to bypass the defaults ◦ See chapter 3 Struts 2 In Practice ◦ See Struts 2 Spring plugin documentation at: http://struts.apache.org/2.x/docs/spring-plugin.html 15
  • 16. ContactsWebApp Very simple contacts manager Web application that uses Struts 2 and Spring ◦ Database is embedded Derby Uses Struts to manage ActionSupport classes (option 2) and Spring to: ◦ Manage dependencies ◦ Implement cross-cutting concerns such as logging, performance timing ◦ Interact with database repository (Spring JDBC) 16
  • 17. ContactsWebApp – FindContact and its dependencies ActionSupport FindContact Class Service ContactSearchService Layer ContactDataAccess Persistence Layer PhoneDataAccess EmailDataAccess PersonDataAccess DataSource 17
  • 18. ContactsWebApp – struts.xml and applicationContext.xml struts.xml ◦ Action nodes specify complete class value ◦ For example FindContact Note class FindContact needs a ContactSearchService object and has a public setContactSearchService method applicationContext.xml ◦ Spring configuration ◦ Create Spring beans for all non- ActionSupport classes that are used by the ActionSupport class 18
  • 19. Struts 2 – Spring Interaction applicationContext.xml Spring will provide any objects needed by the ActionSupport classes automatically ◦ Autowire “by name” ◦ For example FindContacts property contactSearchService will get a value because Spring will call the setContactSearchService method and pass it a contactSearchService object Spring is also managing dependencies for the other classes ◦ For example see contactSearchService, contactDataAccess and personDataAccess beans ◦ Be sure to specify scope=“request” 19
  • 20. Spring AOP Can use Spring AOP just as we did in the non-Struts 2 Contact application Same configuration in the Struts 2 project’s applicationContext.xml as we had in the Contact (non-web) project’s applicationContext_DB_Repository.xml See package edu.ku.si.contact.advice 20
  • 21. AOP Example - Exception Logging Need to specify where to apply the advice ◦ See ExceptionLogging class PointCut definition ◦ Don’t need to apply advice to the ActionSupport classes because they won’t be the originator of any Exceptions Rename c:/derby/contactsDB to c:/derby/tcontactsDB Run ContactsWebApp 21
  • 22. Spring JDBC Can use Spring JDBC as we did in the Contact (non-Struts 2) application See package edu.ku.si.contact.data The data access classes extend Spring JDBC’s SimpleJdbcDaoSupport ◦ See PersonDataAccess ◦ Much simpler to query database and process results ◦ Note Spring JDBC will manage opening and closing connections, handling exceptions, etc. 22
  • 23. Data Source Management The data access classes need a Data Source object ◦ See applicationContext.xml ◦ Note no scope is specified for the dataSource bean By extending SimpleJdbcDaoSupport the data access classes inherit the setDataSource method which Spring uses to inject the data source object To use connection pooling see notes in applicationContext.xml 23
  • 24. Why Use Spring With Struts 2? Significantly reduces coupling between classes Central management of dependencies Applications are easier to maintain and change Leverage Spring features that Struts 2 doesn’t provide ◦ Aspect-oriented programming ◦ Spring JDBC 24