struts - university of colorado boulder
TRANSCRIPT
![Page 1: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/1.jpg)
STRUTS
CREATED BY
SAHANA S MALLYA
![Page 2: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/2.jpg)
CONTENTS
� Introduction to Struts
� MVC Pattern
� Model Component
� View Component
� Controller Component
� struts_config.xml
� Struts tags
![Page 3: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/3.jpg)
Contents
� Struts HTML tags
� Struts Scripting
� Testing Struts Applications
� Struts Testcases
� FAQs
� Download and Install Struts
� Sources
![Page 4: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/4.jpg)
INTRODUCTIONTO STRUTS
� Based on the MVC Pattern
� Launched in May 2000 by Craig R. McClanahan
� Widely used for web based forms
� Preferred for complicated applications
![Page 5: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/5.jpg)
MVC Pattern
� Full Form is Model View Controller Pattern
� Model contains the business logic (Core Java class)
� View is the User Interface (JSP/XSLT)
� Controller (Servlet)
� Provided by Struts
� Receives client request and passes it to the appropriate View
![Page 6: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/6.jpg)
MVC Pattern
Source: Roger W Barnes of Project Refinery, Inc.
![Page 7: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/7.jpg)
Model Component
� Contains the business logic
� Contains Java Beans classes
� Contains all functional requirements
� Contains mainly classes written in Core Java, JDBC connections,
Database queries etc.
![Page 8: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/8.jpg)
Model Component
JavaBeans and Scope
� page - Beans that are visible within a single JSP page, for the lifetime of the
current request. (Local variables of the service method)
� request - Beans that are visible within a single JSP page, as well as to any
page or servlet that is included in this page, or forwarded to by this page.
(Request attributes)
Source:http://struts.apache.org/1.x/userGuide/building_model.html
![Page 9: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/9.jpg)
Model Component
� session - Beans that are visible to all JSP pages and servlets that participate
in a particular user session, across one or more requests. (Session
attributes)
� application - Beans that are visible to all JSP pages and servlets that are part
of a web application. (Servlet context attributes)
Source:http://struts.apache.org/1.x/userGuide/building_model.html
![Page 10: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/10.jpg)
Model Component
� ActionForm Beans
– Extends ActionForm class
– The ActionForm class itself requires no specific methods to be implemented. It is
used to identify the role these particular beans play in the overall architecture.
Typically, an ActionForm bean will have only property getter and property setter
methods, with no business logic
Source: Roger W Barnes of Project Refinery, Inc.
![Page 11: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/11.jpg)
Model Component
� The ActionForm object also offers a standard validation mechanism. If you
override a "stub" method, and provide error messages in the standard
application resource, Struts will automatically validate the input from the form
Source:Roger W Barnes of Project Refinery, Inc.
![Page 12: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/12.jpg)
View Component
� Contains the presentation logic
� Cocoon, JSP, Velocity Templates, and XSLT. are some of the presentation
technologies used
� XML + XSLT = HTML
� XML contains the data and XSLT contains the presentation logic
![Page 13: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/13.jpg)
View Component
� Internationalized Messages
– Locale - fundamental Java class that supports internationalization
– ResourceBundle - supports messages in multiple languages
– PropertyResourceBundle - standard implementation of ResourceBundle
that allows you to define resources using the same "name=value" syntax
used to initialize properties files
![Page 14: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/14.jpg)
View Component
– MessageFormat - allows you to replace portions of a message string with
arguments specified at run time
– MessageResources - lets you treat a set of resource bundles like a database, and
allows you to request a particular message string for a particular Locale
![Page 15: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/15.jpg)
View Component
Automatic Form Validation
� validate(ActionMapping mapping,
HttpServletRequest request);
![Page 16: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/16.jpg)
View Component
The Struts Validator
� The ActionForm bean must extend ValidatorForm.
� The form's JSP must include the <html:javascript> tag for
client side validation.
http://struts.apache.org/1.x/userGuide/building_view.html
![Page 17: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/17.jpg)
View Component
� Define the validation rules in an xml file like this:
<form-validation>
<formset>
<form name="logonForm">
<field property="username" depends="required">
<msg name="required" key="error.username"/>
</field>
</form>
</formset>
</form-validation>
![Page 18: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/18.jpg)
View Component
� Lastly, enable the ValidatorPlugin in the struts-config.xml file like this:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-
property property="pathnames"
value="/org/apache/struts/validator/validator-rules.xml, /WEB-
INF/validation.xml"/>
</plug-in>
![Page 19: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/19.jpg)
View Component
<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<html:html>
<head> <title> <bean:message key="logon.title"/> </title>
<body bgcolor="white">
<html:errors/>
<html:form action=“/logonpath.do">
<table border="0" width="100%">
<tr> <th align="right"> <html:message key="prompt.username"/> </th>
<td align="left"> <html:text property="username" size="16"/> </td> </tr>
<tr> <td align="right"> <html:submit> <bean:message key="button.submit"/> </html:submit> </td>
![Page 20: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/20.jpg)
CONTROLLER COMPONENT
� Transfers control when an URL is accessed
� Parses the configuration file
� ActionServlet is the default primary Servlet of the
Controller Section given by Struts
![Page 21: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/21.jpg)
CONTROLLER COMPONENT
� Action Classes method to be overridden
� public ActionForward perform(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException;
![Page 22: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/22.jpg)
CONTROLLER COMPONENT
Action Class
� This class forwards the request to the
appropriate html file (View component)
� The appropriate html file is obtained by parsing
the struts_config.xml file
![Page 23: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/23.jpg)
struts_config.xml
� XML file that is placed in the WEB-INF directory
� XML header must be <struts-config>
� Contains <form-beans> and <action-mappings>
� Mapping as to which file the control must be transferred
![Page 24: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/24.jpg)
struts_config.xml
� <form-beans>
� name
– The name of the request or session level attribute that this form
bean will be stored as
� type
– The fully-qualified Java classname of your form bean
Source: Roger W Barnes of Project Refinery, Inc.
![Page 25: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/25.jpg)
struts_config.xml
� <action-mappings>
� path
– path to the Action
� type
– Full name of the Java class (Action class)
� name
– Name of the Form Bean
![Page 26: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/26.jpg)
struts_config.xml
Example of an action mapping entry in the xml file
<action path="/StrutsDemoAction"
type="com.da.tcb.StrutsDemoAction "
name=" StrutsDemoFormBean"
scope="request"
input="/demo.jsp">
<forward name="Save"
path="/saveDemo.jsp"/>
<forward name="Cancel" path="/pgindex.jsp"/>
![Page 27: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/27.jpg)
struts_config.xml
<forward>� name
– Name of the View Component (html file) to be transferred to
� path
– Path of the html component
![Page 28: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/28.jpg)
Struts Tags
the scope to search for the bean named in the name
attribute
scope
the property of the bean named in the name attribute for
use with the tag
property
the name of a pre-existing bean for use with the tagname
the name of a bean for temporary use by the tag id
Used for Attribute
Source:http://j2ee.masslight.com/Chapter4.html#intro
![Page 29: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/29.jpg)
Struts html tags
� <html:base>Generates a <base> tag. This tag should be used inside
of a <head> tag.
� <html:button>
Generates an <input type="button"> tag. This tag should
be used inside a <form> element.
![Page 30: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/30.jpg)
Struts html tags
� <html:cancel>
Generates an <input type="submit"> tag and causes the
Action servlet not to invoke its validate() method. This tag
should be used inside a <form> element.
![Page 31: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/31.jpg)
Struts html tags
� <html:errors> Generates html to display any errors that
may have occurred during invocation of the validate()
method.
� <html:form> Generates <form>.
![Page 32: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/32.jpg)
Struts html tags
� <html:hidden> There is a hidden element here which is invisible.
Generates <input type="hidden">.
� <html:html>Generates <html>.
� <html:password>
� Generates <input type="password"> for use in collecting information that
should not be shown on-screen.
![Page 33: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/33.jpg)
Struts html tags
� <html:hidden> There is a hidden element here which is invisible.
Generates <input type="hidden">.
� <html:html>Generates <html>.
� <html:password>
� Generates <input type="password"> for use in collecting information that
should not be shown on-screen.
![Page 34: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/34.jpg)
Struts html tags
For some more html tags see,
http://j2ee.masslight.com/Chapter4.html#simplestru
ts
![Page 35: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/35.jpg)
Struts Scripting
This component allows Struts Actions to be written in the scripting
language of one's choice rather than as Java classes. It uses the
Bean Scripting Framework to allow scripts to be written in any
language BSF supports like Perl, Python, Ruby, JavaScript, Groovy,
and even VBScript.
http://struts.apache.org/1.x/struts-scripting/index.html
![Page 36: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/36.jpg)
Testing Struts Applications
Unit Testing
� Testing each module after developing it.
� Performed by the developer
� Documented in test cases which record the expected output as well
as the actual output
![Page 37: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/37.jpg)
Testing Struts Applications
� http://jakarta.apache.org/cactus refer to three types of unit testing:
� Code logic testing – Unit is tested in isolation
� Integration unit testing- Unit is tested in communication with other units
� Functional unit testing- Black box integration testing
![Page 38: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/38.jpg)
StrutsTestCase
� Open source JUnit extension
� Provides framework of Java classes for testing Struts
actions
� Support for unit-testing
![Page 39: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/39.jpg)
FAQs
� http://struts.apache.org/kickstart.html#struts
![Page 40: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/40.jpg)
Download and Install STRUTS
http://struts.apache.org/download.cgi
![Page 41: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/41.jpg)
Sources
� The Apache Source Foundation
– http://struts.apache.org
– http://struts.apache.org/1.x/userGuide/building_controller.html
– http://struts.apache.org/1.x/userGuide/building_model.html
– http://struts.apache.org/1.x/userGuide/building_view.html
– http://struts.apache.org/1.x/struts-scripting/index.html
• http://j2ee.masslight.com/Chapter4.html#intro
� Introduction to Struts
– Developed by: Roger W Barnes of Project Refinery, Inc.
� The Complete Reference Struts Second Edition (Mc.Graw Hill Publications)
– James Holmes
![Page 42: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/42.jpg)
QUESTIONS?
![Page 43: STRUTS - University of Colorado Boulder](https://reader035.vdocuments.net/reader035/viewer/2022071601/613d4920736caf36b75b861f/html5/thumbnails/43.jpg)
Thank You!!!☺