Transcript Struts 2

Introduction to Struts 2.0
Jenny Ni
Joey Feng
Winddays Wang
Hewmmi Zhu
Heather Lv
1
Software School ,Fudan University
Contents
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
What is Struts?
Why to use framework?
Struts 2.0 Overview
Struts 2.0 MVC components
Request Lifecycle in Struts 2
Struts 2.0 Architecture
Sample Application
Why we should use Struts 2.0?
Struts 1.x vs Struts 2.0
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.
2.
3.
4.
5.
6.
7.
User Sends Request
Filter Dispatcher determines the appropriate action
Interceptors are applied
Execution of action
Output Rendering
Return of Request
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?
Simplified Design
2. Simplified Action
3. Simplified Testability
4. Better tag features
5. Annotation introduced
6. Easy plug-in
7. AJAX Support
1.
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
Action
ActionForm
ActionForward
struts-config.xml
ActionServlet
RequestProcessor
Struts 2






Action
Action or POJO’s
Result
struts.xml
FilterDispatcher
Interceptors
What you need to start using
Struts 2.0?
1.
2.
Java 5.0
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