SlideShare une entreprise Scribd logo
1  sur  57
Introduction to Struts 2.0
                                                Jenny Ni
                                              Joey Feng
                                         Winddays Wang
                                            Hewmmi Zhu
                                             Heather Lv




                                                           1
            Software School ,Fudan University
Contents
1.    What is Struts?
2.    Why to use framework?
3.    Struts 2.0 Overview
4.    Struts 2.0 MVC components
5.    Request Lifecycle in Struts 2
6.    Struts 2.0 Architecture
7.    Sample Application
8.    Why we should use Struts 2.0?
9.    Struts 1.x vs Struts 2.0
10.   What you need to start using Struts2.0

                            Software School ,Fudan University   2
What is Struts?
 Open Source java framework for
  creating web applications.
 Action Based Framework
 Create web application using MVC 2
  architecture
 Apache Struts offer two major version
      Struts 1.x
      Struts 2.0
   Struts 2 = WebWork + Struts

                         Software School ,Fudan University   3
Why use framework?
   Do we need framework?
   No and Yes.
   No.
   In small applications where you don’t want
    the overhead of learning new things.
   But
   Yes
   We have to use framework in real world
    application because:-
     Automation of common tasks
     Concentrate on higher level concerns.

                            Software School ,Fudan University   4
Struts 2.0
   Complete new framework based on webwork framework.
   Struts 2.0 implements MVC 2 design pattern.




                                      Software School ,Fudan University   5
Struts 2.0 MVC Components
   Controller:-
   Filter Dispatcher:-
     First component that start processing that is why this type
      of MVC is called front controller MVC
     Looks at the request and apply the appropriate action.
     Struts framework handles all of the controller work.
     Its configured in web.xml

   Interceptors:-
     Can execute code before and after an Action is
      executed.
     They can be configured per action basis.
     Can be used for data validation, file upload, double
      submit guards.


                                   Software School ,Fudan University   6
Struts 2.0 MVC Components contd.
   Model:-
     Implemented by action class
     For model you can use any data access
      technologies like JDBC,EJB,Hibernate

   View
     Its your result part. It can be JSP,JSTL,JSF etc.
     Presentation part of the MVC




                                Software School ,Fudan University   7
Request Lifecycle in Struts 2.0
1.   User Sends Request
2.   Filter Dispatcher determines the appropriate action
3.   Interceptors are applied
4.   Execution of action
5.   Output Rendering
6.   Return of Request
7.   Display of result to user.




                                  Software School ,Fudan University   8
Struts 2.0 Architecture
Struts 2.0 Architecture




               Software School ,Fudan University   10
Why we should use Struts
     2.0?
1.   Simplified Design
2.   Simplified Action
3.   Simplified Testability
4.   Better tag features
5.   Annotation introduced
6.   Easy plug-in
7.   AJAX Support


                        Software School ,Fudan University   11
Struts 1.x vs Struts 2.0
   How Struts 1.x and Struts 2.0 differ from each
    other?
    › Configuration
    › Action Class
    › Dependency injection.
    › Servlet Dependency
    › Validation
    › Threading model
    › Testability
    › Expression Language

                              Software School ,Fudan University   12
Struts 1                Struts 2
Action              ⇒   Action
ActionForm          ⇒   Action or POJO’s
ActionForward       ⇒   Result
struts-config.xml   ⇒   struts.xml
ActionServlet       ⇒   FilterDispatcher
RequestProcessor    ⇒   Interceptors
What you need to start using
     Struts 2.0?
1. Java 5.0
2. Tomcat 5.x(Servlet api 2.4 and jsp api
   2.0)




                       Software School ,Fudan University   14
Let’s see something real…




             Software School ,Fudan University   15
Web, Mail 2000
Web, Mail 2009
Struts Plugins
Simple Example
Struts 1
 <html:errors/>
 <html:form action="/SaveMeeting">
 <table border="0" width="100%">
 <tr>
   <th align="right">
      Name:
   </th>
   <td align="left">
      <html:text property="name" size=”50” />
   </td>
 </tr>
 <tr>
   <th align="right">
      Date:
</th>
  <td align="left">
    <html:text property="date" size="50"/>
  </td>
</tr>
<tr>
  <th align="right">
    Invitees:
  </th>
  <td align="left">
    <html:select property="invitees"
                 multiple="true">
      <html:options collection="employees"
                     property="value"
                     labelProperty="label"/>
    </html:select>
</tr>
<tr>
  <th align="right">
    Description:
  </th>
  <td align="left">
    <html:textarea property="description"
                   rows="4" cols="50" />
  </td>
</tr>
<tr>
  <td align="right">
    &nbsp;
  </td>
<td align="left">
    <html:submit property="DO_SUBMIT">
      Save
    </html:submit>
  </td>
</tr>
</table>
</html:form>


    ...



    Only four pages!
Struts 2
<s:form action="Meeting" validate="true">
  <s:token />
  <s:textfield label=”Name”    name=“name” />
  <s:textfield label=”Date"      name="date"/>
  <s:select    label=”Invitees” name="invitees" 
list="employees"/>
  <s:textarea label=”Description” 
name="description" 
                     rows="4" cols="50" />
  <s:submit value=”Save" method="save"/>
</s:form>
Example Revisited
<s:textfield label="Name"
   name="name" tooltip="Meeting name" />
<s:datepicker label="Date" name="date"/>
<s:optiontransferselect ... />
<jsp:include
      page="/ajax/commonInclude.jsp"/>
...
<s:textarea theme="ajax" label="Description"
    name="description" rows="4" cols="50" />
But there's more . . .
Brian Kernighan Law of
Debugging Difficulty

   Debugging is twice as hard as writing the
    code in the first place. Therefore, if you
   write the code as cleverly as possible, you
     are, by definition, not smart enough to
                      debug it.
Prevention and Cure
struts.devMode = true
Built-in Testing Support

public class MyActionTest
    extends StrutsTestCase {

    public void testExecute()
      throws Exception {

        assertTrue(true);
    }
}
any.action?debug=console
any.action?profiling=yes
Time to Upgrade?
Tutorials, Guides, and
         FAQs
Struts 2 Training Course
Run Struts 1 Actions as
           Is
<action name="editGangster"
   class="org.apache.struts2.s1.Struts1Action">
  <param name="className">
     com.mycompany.gangstas.EditGangsterAction
  </param>
  <result>
     gangsterForm.jsp
  </result>
</action>
How do I get
  started?
Where We are Going

Contenu connexe

Similaire à Struts 2 Introduction

important struts interview questions
important struts interview questionsimportant struts interview questions
important struts interview questionssurendray
 
Struts 2 Overview
Struts 2 OverviewStruts 2 Overview
Struts 2 Overviewskill-guru
 
What is the difference between struts 1 vs struts 2
What is the difference between struts 1 vs struts 2What is the difference between struts 1 vs struts 2
What is the difference between struts 1 vs struts 2Santosh Singh Paliwal
 
Struts2 course chapter 1: Evolution of Web Applications
Struts2 course chapter 1: Evolution of Web ApplicationsStruts2 course chapter 1: Evolution of Web Applications
Struts2 course chapter 1: Evolution of Web ApplicationsJavaEE Trainers
 
Struts 2 – Interceptors
Struts 2 – InterceptorsStruts 2 – Interceptors
Struts 2 – InterceptorsDucat India
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2Long Nguyen
 
Strut2-Spring-Hibernate
Strut2-Spring-HibernateStrut2-Spring-Hibernate
Strut2-Spring-HibernateJay Shah
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2divzi1913
 
Server side programming bt0083
Server side programming bt0083Server side programming bt0083
Server side programming bt0083Divyam Pateriya
 
Struts Interview Questions
Struts Interview QuestionsStruts Interview Questions
Struts Interview Questionsjbashask
 
Struts 2 – Architecture
Struts 2 – ArchitectureStruts 2 – Architecture
Struts 2 – ArchitectureDucat India
 
Migrating from Struts 1 to Struts 2
Migrating from Struts 1 to Struts 2Migrating from Struts 1 to Struts 2
Migrating from Struts 1 to Struts 2Matt Raible
 
D22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source FrameworksD22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source FrameworksSunil Patil
 

Similaire à Struts 2 Introduction (20)

Struts2
Struts2Struts2
Struts2
 
important struts interview questions
important struts interview questionsimportant struts interview questions
important struts interview questions
 
Struts 2 Overview
Struts 2 OverviewStruts 2 Overview
Struts 2 Overview
 
Struts 1
Struts 1Struts 1
Struts 1
 
Struts2 in a nutshell
Struts2 in a nutshellStruts2 in a nutshell
Struts2 in a nutshell
 
What is the difference between struts 1 vs struts 2
What is the difference between struts 1 vs struts 2What is the difference between struts 1 vs struts 2
What is the difference between struts 1 vs struts 2
 
Struts2 course chapter 1: Evolution of Web Applications
Struts2 course chapter 1: Evolution of Web ApplicationsStruts2 course chapter 1: Evolution of Web Applications
Struts2 course chapter 1: Evolution of Web Applications
 
Skillwise Struts.x
Skillwise Struts.xSkillwise Struts.x
Skillwise Struts.x
 
Struts Interceptors
Struts InterceptorsStruts Interceptors
Struts Interceptors
 
Struts 2 – Interceptors
Struts 2 – InterceptorsStruts 2 – Interceptors
Struts 2 – Interceptors
 
Struts
StrutsStruts
Struts
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2
 
Strut2-Spring-Hibernate
Strut2-Spring-HibernateStrut2-Spring-Hibernate
Strut2-Spring-Hibernate
 
Struts2.x
Struts2.xStruts2.x
Struts2.x
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2
 
Server side programming bt0083
Server side programming bt0083Server side programming bt0083
Server side programming bt0083
 
Struts Interview Questions
Struts Interview QuestionsStruts Interview Questions
Struts Interview Questions
 
Struts 2 – Architecture
Struts 2 – ArchitectureStruts 2 – Architecture
Struts 2 – Architecture
 
Migrating from Struts 1 to Struts 2
Migrating from Struts 1 to Struts 2Migrating from Struts 1 to Struts 2
Migrating from Struts 1 to Struts 2
 
D22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source FrameworksD22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source Frameworks
 

Struts 2 Introduction