Monday, August 16, 2010

How many types of action clases are there in stuts |

How many types of action clases are there in stuts |

Apart from Action Class these are the following Action clases which you'ld find in Struts Framework ::::::::::::::

1)Dispatch Action :----- It dispatches to a public method that is named by the request parameter whose name is specified by the parameter property of the corresponding ActionMapping. This Action is useful for developers who prefer to combine many similar actions into a single Action class in order to simplify their application design.

2)Forward Action :----------It forwards to the context-relative URI specified by the parameter property of our associated ActionMapping.

3)IncludeAction :-----------It includes the context-relative URI specified by the parameter property of our associated ActionMapping.

and there are more actions but these are the main actions which you developers mainly use in your daiyl codings...........


Action -- As all know basic action class in which we will implement our bussiness logic

Include Action-- Similar to Include in our jsp

Forward Action-- Instead of directly forwarding from one JSP to Another We user Forward Action (If we do that directly it violates Struts MVC Architechture).

Dispatch Action-- Handling multiple operations in multiple methods. one method per operation instead of merging the entire logic in single execute method of action class.

Look up Dispatch Action-- Purpose is Similar to Dispatch action.Implementation is different Recommended not to use this.

Switch Action-- to switch between different modules in struts application



The important Dispatchers that struts provides includes : DispatchAction ActionDispatcher LookupDispatchAction and MappingDispatchAction.

DispatchAction: In this type of aggregation the action class must extend DispatchAction class as shown.

public final class CRUDDispatchAction extends DispatchAction {

public ActionForward create(ActionMapping mapping
ActionForm form
HttpServletRequest request
HttpServletResponse response) throws Exception {
return (mapping.findForward( success ));
}
...

and the action mapping will be as





in your jsp you can call this action as

Create
...

Observe that the above class extends DispatchAction and so you cannot use this method if your class already extends your (some) super class (eg. the class where the session is validated/invalidated). Here the user has to send a query string variable (methodToCall) to set the action name to call.

ActionDispatcher: This flavor of aggregation is same as DispatchAction except that we need not extend ActionDispatcher so we can use this method even if our class extends a super class. The following code snippet shows this scenario.


public final class CRUDActionDispatcher extends Action {

protected ActionDispatcher dispatcher new ActionDispatcher(this ActionDispatcher.DEFAULT_FLAVOR);

public ActionForward execute(ActionMapping mapping
ActionForm form
HttpServletRequest request
HttpServletResponse response) throws Exception {
return dispatcher.execute(mapping form request response);

The DEFAULT_FLAVOR field suggests that the default parameter is method if none is specified as parameter in struts-config.xml (eg . methodToCall).
ActionDispatcher flavor also needs methodToCall parameter to be set (using hidden variable or a query string) as in case of DispatchAction.

LookupDispatchAction: This type of aggregation is useful in situations where in you have multiple submit buttons in a single form. The class must extend LookupDispatchAction. However the great thing about this type is that its java script free. That means you need not set any hidden variables or pass query string however you must use submit buttons as shown.



...
The example Action class will be as follows

public class CRUDLookUpDispatchAction extends LookupDispatchAction {

protected Map getKeyMethodMap() {
Map map new HashMap();
map.put( button.create create );

return map;
}
public ActionForward create(ActionMapping mapping
ActionForm form
HttpServletRequest request
HttpServletResponse response) throws Exception {
return (mapping.findForward( success ));
}
Observe the getKeyMethodMap() method. The submit button names are specified in a Map and their keys comes from MessageResources file. Struts picks up the name from this file and redirects it to the value specified in the Map. The calling code in jsp however has multiple submit buttons only differing in their names.

MappingDispatchAction: This aggregation extends MappingDispatchAction class. This is the most useful type among the four types available. But as seen in other cases you can use this type only when your action does not extend any other action. The good thing about this type is that the action mappings can differ and so need not be the same as in all other cases. To illustrate this consider the below mappings.








Notice that in the first action mapping there is no form bean while in the second the bean name is specified. This means that the user has the flexibility to change the mapping according to his needs and hence not been contained to use a constant mapping for all the CRUD actions. Note that in all the other types of aggregations we must use the same mapping for all the CRUD actions.

No comments:

Post a Comment