Tell a friend
Link to us
Bookmark Us
Total Members
      Members: 87081
Sitemap Forum Chat
 
JSP Home
JSP Members (19554)
JSP Member Articles ( 11 )
JSP Discussion (77)
JSP Q & A ( 97 )
- JSP Ask Question
- JSP Questions
- JSP Unanswered Questions
JSP Resources
JSP Source Code (172)
JSP Articles (34)
JSP Blogs (338)
JSP Jobs (40)
JSP Components (10)
JSP Books (10)
JSP Websites (13)
JSP News (12)

 
Resource Directory
Beans (0)
Books & Media (0)
Community (0)
Graphics & Charts (1)
JSP Videos (0)
JSP Web Hosting (0)
Other JSP Sites (0)
References (0)
Software & Server (0)
Tag Libraries (0)
Tutorials & Code Snips (0)
Web Applications (1)

 
GROUP INFO
Members: 19554
Access Type: Anyone can join

 

 
LEARNING CENTER
TUTORIALS
.NET
.NET Tutorial
ASP Tutorial
ASP.NET Database Tutorial
ASP.NET Development Tips
ASP.Net Security,Internationalisation And Deployment
ASP.NET Server Controls Tips
ASP.NET Tutorial
C Sharp Tutorial
LINQ Tutorial
Web Development
Flex Tutorial
HTML Tutorial
Javascript Tutorial
Learn AJAX Tutorial
PHP Tutorial
Software Development
Database Tutorial
SQL Tutorial
UML Tutorial
Java
Ant Tutorial
EJB 3 Tutorial
Grails Tutorial
Hibernate Tutorial
Java 1.6 Tutorial
Java Tutorial
Java Web Component Tutorial
Java XML Tutorial
JDBC Tutorial
JDK1.5 Tutorial
JSF Tutorial
JSP And J2EE Design Tutorial
JSP Tutorial
Service-Oriented Architecture (SOA) Tutorial For Managers
Spring Tutorial
Struts Tutorial
Tomcat Tutorial

RESOURCES
Q & A (531 )
Source Code (3276 )
Articles (365 )
Books (373 )
Components (1647 )
News (898 )
Websites (1208 )

SUBMISSIONS
Submit Article
Submit Website
Submit News
Submit Source Code
Submit Component

COMMUNITY
Authors
Members Directory
Discussion Forum
Chat

SITE
About Us
Sitemap
Search
Contact Us
Feedback
Tell a Friend
Advertise

 

Home > JSP > Member Articles > Fundamentals >
 

Struts Tutorial


  Author : VisualBuilder.com
  Date Published : 03/24/2007
  Accessed : 36727
   visualbuilder
<< Back  Next >> 

Introduction :- A popular technique for organizing the execution of complex processing flows is the "Chain of Responsibility" pattern. In this pattern the different “commands” are combined into a single chain with a series of processing elements and the context parameter is passed along with all the parameter. All the commands contain a single execute method. A Boolean variable determines whether the command executes successfully or not. This pattern promotes the idea of loose coupling, a common programming practice.


From the version 1.3, the struts replaces the RequestProcessor with ComposableRequestProcessor class which follows the Chain of Responsibility pattern (CoR) design pattern. It is configured via the following context initialization parameters:



  • org.apache.struts.chain.CATALOG_NAME - Name of the Catalog in which we will look up the Command to be executed for each request. If not specified, the default value is struts.

  • org.apache.struts.chain.COMMAND_NAME - Name of the Command which we will execute for each request, to be looked up in the specified Catalog. If not specified, the default value is servlet-standard.


Each step of the processing is represented as a separate Command in the Chain. User can easily customize by changing, removing and replacing the chain commands. The Command classes are following packages:-


 


1. org.apache.struts.chain.commands.


2. org.apache.struts.chain.commands.servlet packages.


 


The following table will listed out all the command objects of CoR.





















































































Command Description

SelectLocale



Select a locale for this request, if one hasn't already been selected, and place it in the request.



SetOriginalURI



Store the URI of the original request in the request.



RequestNoCache



If appropriate, set the following response headers: "Pragma", "Cache-Control", and "Expires".



RemoveCachedMessages



Removes any ActionMessages object stored in the session under Globals.MESSAGE_KEY and Globals.ERROR_KEY if the messages' isAccessed method returns true. This allows messages to be stored in the session, displayed one time, and be released.



SetContentType



Set the default content type (with optional character encoding) for all responses if requested.



SelectAction



Determine the ActionMapping associated with this path.



AuthorizeAction



If the mapping has a role associated with it, ensure the requesting client has the specified role. If the client does not, raise an error and stop processing of the request.



CreateActionForm



Instantiate (if necessary) the ActionForm associated with this mapping (if any) and place it into the appropriate scope.



PopulateActionForm



Populate the ActionForm associated with this request, if any.



ValidateActionForm



Perform validation (if requested) on the ActionForm associated with this request (if any).



SelectInput



If validation failed, select the appropriate ForwardConfig for return to the input page.



ExecuteCommand



Lookup and execute a chain command if the current ActionConfig is so-configured.



SelectForward



If this mapping represents a forward, forward to the path specified by the mapping.



SelectInclude



Select the include uri (if any) for the current action mapping.



PerformInclude



If selected, include the result of invoking the path in this request.



CreateAction



Instantiate an instance of the class specified by the current ActionMapping (if necessary).



ExecuteAction



This is the point at which your Action's execute method will be called.



ExecuteForwardCommand



Lookup and execute a chain command if the current ForwardConfig is so-configured.



PerformForward



Finally, the process method of the RequestProcessor takes the ActionForward returned by your Action class, and uses it to select the next resource (if any). Most often the ActionForward leads to the presentation page that renders the response.



 


The default Chain-config file supplied by the apache is as follows:-


 


<?xml version="1.0" ?>

<!--

$Id: chain-config.xml 481833 2006-12-03 17:32:52Z niallp $


Licensed to the Apache Software Foundation (ASF) under one or more

contributor license agreements. See the NOTICE file distributed with

this work for additional information regarding copyright ownership.

The ASF licenses this file to You under the Apache License, Version 2.0

(the "License"); you may not use this file except in compliance with

the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

-->

<!--

This file contains definitions of the standard Chain Of Responsibility chains that emulate Struts 1.2 processing functionality. These chains are defined in a catalog named "struts" so that the application can use the default catalog for its own purposes, without any potential for name clashes.


$Id: chain-config.xml 481833 2006-12-03 17:32:52Z niallp $

-->


<catalog name="struts">


    <define name="lookup" className="org.apache.commons.chain.generic.LookupCommand"/>

<!-- ========== Servlet Complete Request Chain ========================= -->


<chain name="servlet-standard">


<!-- Establish exception handling filter -->

    <command className="org.apache.struts.chain.commands.ExceptionCatcher" catalogName="struts" exceptionCommand="servlet-exception"/>


    <lookup catalogName="struts" name="process-action" optional="false"/>


    <lookup catalogName="struts" name="process-view" optional="false"/>


</chain>


<!-- ========== Action Processing chain ======================== -->

<chain name="process-action">


<!--

This chain attempts to emulate (most of) the standard request processing in the standard org.apache.struts.action.RequestProcessor class, by performing the corresponding tasks in individual Commands

that are composable. The following list defines a cross reference between the processXxx methods and the Commands that perform the corresponding functionality:


processMultipart Integrated into servlet and legacy classes


processPath SelectAction (which also does processMapping)


processException ExceptionCatcher / ExceptionHandler


processLocale SelectLocale


processContent SetContentType


processNoCache RequestNoCache


processPreprocess LookupCommand with optional="true". Multiple occurrences of this can easily be added, to support additional processing hooks at any point in the chain without modifying the standard definition.


processCachedMessages RemoveCachedMessages


processMapping SelectAction (which also does processPath)


processRoles AuthorizeAction


processActionForm CreateActionForm


processPopulate PopulateActionForm


processValidate ValidateActionForm / SelectInput


processForward SelectForward


processInclude SelectInclude / PerformInclude


processActionCreate CreateAction


processActionPerform ExecuteAction

-->

    <!-- Look up optional preprocess command -->


    <lookup catalogName="struts" name="servlet-standard-preprocess" optional="true"/>


    <!-- Identify the Locale for this request -->

    <command className="org.apache.struts.chain.commands.servlet.SelectLocale"/>


    <!-- Set (if needed) the URI of the original request -->

    <command className="org.apache.struts.chain.commands.servlet.SetOriginalURI"/>


    <!-- Set (if needed) no cache HTTP response headers -->

    <command className="org.apache.struts.chain.commands.servlet.RequestNoCache"/>


    <!-- Set (if needed) the HTTP response content type -->

    <command className="org.apache.struts.chain.commands.servlet.SetContentType"/>


    <!-- Remove messages cached in the Session -->

    <command className="org.apache.struts.chain.commands.RemoveCachedMessages"/>


    <!-- Identify the ActionConfig for this request -->

    <command className="org.apache.struts.chain.commands.servlet.SelectAction"/>


    <!-- Authorize the selected ActionConfig for this request -->

    <command className="org.apache.struts.chain.commands.servlet.AuthorizeAction"/>


    <!-- Create (if needed) the ActionForm for this request -->

    <command className="org.apache.struts.chain.commands.CreateActionForm"/>


    <!-- Populate the ActionForm for this request -->

    <command className="org.apache.struts.chain.commands.servlet.PopulateActionForm"/>


    <!-- Validate the ActionForm for this request -->

    <command className="org.apache.struts.chain.commands.servlet.ValidateActionForm"/>


    <!-- Select the appropriate ForwardConfig for return to input page -->

    <command className="org.apache.struts.chain.commands.servlet.SelectInput"/>


    <!-- Lookup and execute a chain command if the current ActionConfig is so-configured. -->

    <command className="org.apache.struts.chain.commands.ExecuteCommand"/>


    <!-- Select the appropriate ForwardConfig for action mappings that only have an ActionForward -->

    <command className="org.apache.struts.chain.commands.servlet.SelectForward"/>


    <!-- Select the include uri (if any) for the current action mapping -->

    <command className="org.apache.struts.chain.commands.SelectInclude"/>


    <!-- Perform the include (if needed) -->

    <command className="org.apache.struts.chain.commands.servlet.PerformInclude"/>


    <!-- Create (if needed) the Action for this request -->

    <command className="org.apache.struts.chain.commands.servlet.CreateAction"/>


    <!-- Execute the Action for this request -->

    <command className="org.apache.struts.chain.commands.servlet.ExecuteAction"/>


 


</chain>


<!-- ========== View Processing chain ======================== -->

<chain name="process-view">


    <!-- Lookup and execute a chain command if the current ForwardConfig is so-configured. -->

    <command className="org.apache.struts.chain.commands.ExecuteForwardCommand"/>


    <!-- Follow the returned ForwardConfig (if any) -->

    <command className="org.apache.struts.chain.commands.servlet.PerformForward"
/>


</chain>


<!-- ========== Servlet Exception Handler Chain ======================== -->


<chain name="servlet-exception">


<!--

This chain is designed to be invoked (by o.a.s.c.ExceptionCatcher) if an unhandled exception is thrown by any subsequent command in a processing chain (including the one that invokes a Struts action). The standard definition of this chain supports the exception mapping of Struts 1.1, but can be replaced in order to handle exceptions differently.

-->


    <!-- Execute the configured exception handler (if any) -->

    <command className="org.apache.struts.chain.commands.servlet.ExceptionHandler"/>


    <!-- Follow the returned ForwardConfig (if any) -->

    <command className="org.apache.struts.chain.commands.servlet.PerformForward"/>


</chain>

</catalog>


Pages   << Back  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  Next >>  Next: Part 57: Adding New Command Objects in Struts CoR Pattern >>

 
   Printer Friendly
   Email to a friend
   Add to my Favourites  Report Bad Submissions  Submit Feedback
  Download PDF version
 
                 Click each image to add
this page to each site.
 
Related Articles of JSP
Previous Article    -     Random Articles    -     Next Article
 
 
 
 
 
 
 
 
Welcome Guest Signup
Member's Panel
EMAIL
PASSWORD
Forgot your password?
New User? Click Here!
 
Resend Activation Email!

SEARCH
 



 
 
 
 
 


Home | Login | About Us | Contact Us | Privacy Policy | Advertising | Feedback Please

Warning: Unknown(): write failed: Disk quota exceeded (122) in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0