Struts MappingDispatchAction Example
Struts MappingDispatch Action (org.apache.struts.actions.MappingDispatchAction) is one of the Built-in Actions provided along with the struts framework.
The org.apache.struts.actions.MappingDispatchAction class is a subclass of org.apache.struts.actions.DispatchAction class. This class enables a user to collect related functions into a single action class. It needs to create multiple independent actions for each function. Here in this example you will learn more about Struts MappingDispatchAction that will help you to grasp the concept better.
Let's develop a class MappingDispatch_Action which is a sub class of org.apache.struts.actions.MappingDispatchAction class. This class does not provide an implementation for the execute() method because DispatchAction class itself implements this method. MappingDispatchAction class is much like the DispatchAction class except that it uses a unique action corresponding to a new request , to dispatch the methods . At run time, this class manages to delegate the request to one of the methods of the derived Action class. Selection of a method depends on the value of the parameter passed from the incoming request. MappingDispatchAction uses this request parameter value and selects a corresponding action from the different action-mappings defined. This eliminates the need of creating an instance of ActionForm class.
MappingDispatch_Action class contains multiple methods ie.. add() , edit() , search() , save() . Here all the methods are taking the same input parameters but each method returns a different ActionForward like "add" in case of add() method , "edit" in case of edit() etc. Each ActionForward is defined in the struts-config.xml file (action mapping is shown later in this page).
Developing an Action Class (MappingDispatch_Action.java)
package roseindia.net;
|
No need to Develop an ActionForm Class
Developing the Action Mapping in the struts-config.xml
Here, we need to create multiple independent actions for each method defined in
the action class. Note that the value specified with the parameter attribute
is used to delegate request to the required method of the MappingDispatch_Action Class.
<action path="/MappingDispatchAction" type="roseindia.net.MappingDispatch_Action" parameter="add" input="/pages/MappingDispatchAction.jsp" scope="request" validate="false"> <forward name="add" path="/pages/MappingDispatchActionAdd.jsp" /> </action> <action path="/MappingDispatchAction" type="roseindia.net.MappingDispatch_Action" parameter="edit" input="/pages/MappingDispatchAction.jsp" scope="request" validate="false"> <forward name="edit" path="/pages/MappingDispatchActionEdit.jsp" /> </action> <action path="/MappingDispatchAction" type="roseindia.net.MappingDispatch_Action" parameter="search" input="/pages/MappingDispatchAction.jsp" scope="request" validate="false"> <forward name="search" path="/pages/MappingDispatchActionSearch.jsp"/> </action> <action path="/MappingDispatchAction" type="roseindia.net.MappingDispatch_Action" parameter="save" input="/pages/MappingDispatchAction.jsp" scope="request" validate="false"> <forward name="save" path="/pages/MappingDispatchActionSave.jsp" /> </action> |
Developing jsp page
Code of the jsp (MappingDispatchAction.jsp) to delegate requests to different jsp pages :
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> <html:html locale="true"> <HEAD> <TITLE>Mapping Dispatch Action Example</TITLE> <BODY> <H3>Dispatch Action Example</H3> <p><html:link page="/MappingDispatchAction.do?parameter=add">Call Add Section</html:link></p> <p><html:link page="/MappingDispatchAction.do?parameter=edit">Call Edit Section</html:link></p> <p><html:link page="/MappingDispatchAction.do?parameter=search">Call Search Section</html:link></p> <p><html:link page="/MappingDispatchAction.do?parameter=save">Call Save Section</html:link></p> </html:html> |
Add the following line in the index.jsp to call the form.
<li>
<html:link page="/pages/MappingDispatchAction.jsp">Struts File
Upload</html:link>
<br>
Example demonstrates how MappingDispatchAction class works.
</li>
Building and Testing the Example
To build and deploy the application go to Struts\Strutstutorial directory and type ant on the command prompt. This will deploy the application. Open the browser and navigate to the MappingDispatchAction.jsp page. Your browser displays the following MappingDispatchAction page.
Selecting Call Add Section displays the following MappingDispatchActionAdd.jsp page
Selecting Call Edit Section displays the following MappingDispatchActionEdit.jsp page
Selecting Call Search Section
displays the following MappingDispatchActionSearch.jsp
page
Selecting Call Save Section displays the following MappingDispatchActionSave.jsp page