Struts DispatchAction Sample

wty814022051 2010-04-24 12:18:19
DispatchAction Class

DispatchAction provides a mechanism for grouping a set of related functions into a single action, thus eliminating the need to create seperate actions for each functions. In this example we will see how to group a set of user related actions like add user, update user and delete user into a single action called UserAction.

The class UserAction extends org.apache.struts.actions.DispatchAction. This class does not provide an implementation of the execute() method as the normal Action class does. The DispatchAction uses the execute method to manage delegating the request to the individual methods based on the incoming request parameter. For example if the incoming parameter is "method=add", then the add method will be invoked. These methods should have similar signature as the execute method.

01.public class UserAction extends DispatchAction {
02.
03. private final static String SUCCESS = "success";
04.
05. public ActionForward add(ActionMapping mapping, ActionForm form,
06. HttpServletRequest request, HttpServletResponse response)
07. throws Exception {
08. UserForm userForm = (UserForm) form;
09. userForm.setMessage("Inside add user method.");
10. return mapping.findForward(SUCCESS);
11. }
12.
13. public ActionForward update(ActionMapping mapping, ActionForm form,
14. HttpServletRequest request, HttpServletResponse response)
15. throws Exception {
16. UserForm userForm = (UserForm) form;
17. userForm.setMessage("Inside update user method.");
18. return mapping.findForward(SUCCESS);
19. }
20.
21. public ActionForward delete(ActionMapping mapping, ActionForm form,
22. HttpServletRequest request, HttpServletResponse response)
23. throws Exception {
24. UserForm userForm = (UserForm) form;
25. userForm.setMessage("Inside delete user method.");
26. return mapping.findForward(SUCCESS);
27. }
28.}
If you notice the signature of the add, update and delete methods are similar to the execute method except the name. The next step is to create an action mapping for this action handler. The request parameter name is specified using the parameter attribute. Here the request parameter name is method.

1.<action-mappings>
2. <action input="/index.jsp" parameter="method" name="UserForm" path="/UserAction" scope="session" type="com.vaannila.UserAction">
3. <forward name="success" path="/index.jsp" />
4. </action>
5.</action-mappings>
Now lets see how to invoke a DispatchAction from jsp. We have a simple form with three buttons to add, update and delete a user. When each button is clicked a different method in UserAction class is invoked.

01.<html>
02.<head>
03.<script type="text/javascript">
04.function submitForm()
05.{
06.document.forms[0].action = "UserAction.do?method=add"
07.document.forms[0].submit();
08.}
09.</script>
10.</head>
11.<body>
12.<html:form action="https://youtubeproxy.org/default.aspx" >
13.<table>
14.<tr>
15. <td>
16. <bean:write name="UserForm" property="message" />
17. </td>
18.</tr>
19.<tr>
20. <td>
21. <html:submit value="Add" onclick="submitForm()" />
22. </td>
23.</tr>
24.<tr>
25. <td>
26. <html:submit property="method" value="update" />
27. </td>
28.</tr>
29.<tr>
30. <td>
31. <html:submit property="method" >delete</html:submit>
32. </td>
33.</tr>
34.</table>
35.</html:form>
36.</body>
37.</html>
Now consider the update and the delete button. The request parameter name specified in the action handler is "method". So this should be specified as the property name for the submit button. The name of the method to be invoked and the value of the button should be the same. So when the button is clicked the corresponding method in the UserAction will be called. The delete button shows an alternate way to specify the value of the button.

Here the main constraint is the method name and the button name should be same. So we can't have an update button like this "Update". Inorder to avoid this you can call a javascript function on click of the button. Specify the action and submit the form from javascript. In this way we can have a different button name and method name. On click of the Add button the action value is set to "UserAction.do?method=add" and the form is submitted from javascript.
...全文
58 3 打赏 收藏 转发到动态 举报
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
WinDirStat - Directory Statistics
Copyright (c) 2003-2005 Bernhard Seifert. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Shows where all your disk space has gone, and helps you clean it up.

You know the problem: The hard disk is almost full, and you don't know, where the big files actually are lying, which occupy all the space. They may well be hidden in sub-sub-directories. To find out this by means of the Windows Explorer, is tiring: you would have to expand and collapse directories over and over or view the "Properties" of the directories, which always count just the size of a single subtree. It's hard to form a mental image of the hard disk usage in this way. This is where WinDirStat helps.

On start up WinDirStat opens the Select Drives Dialog. Press the OK button.

Then WinDirStat reads in the whole directory tree once (this can last some minutes depending on the hard disk size) and then presents it in three useful views:

WinDirStat
Directory List Extension List
Treemap

The views are coupled with each other.

You can clean up the hard disks with several Cleanups.

The views and the User Defined Cleanups can be configured according to your personal needs.

Sorting

Legend

Frequently Asked Questions

Limits

Deinstallation

GNU Free Documentation License
真哥哥 2010-04-24
  • 打赏
  • 举报
回复

。。。。。。。
。。。。。
wty814022051 2010-04-24
  • 打赏
  • 举报
回复
刚刚开始学struts,这些例子对你或许有些用

5,645

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告