首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts配置文件中action标签的parameter属性功用

2012-09-14 
Struts配置文件中action标签的parameter属性作用一.原理。没有struts之前,使用servlet,最常用的是 doGet,do

Struts配置文件中action标签的parameter属性作用

      一.原理。
       没有struts之前,使用servlet,最常用的是 doGet,doPost,service方法,如果有些经验的程序员会合理的使用这三个方法:如在用户发出get的请求时,将用户请求在doGet方法中处理,用户发出post请求时,将用户的请求用doPost请求处理,必要时加上service方法去处理那些在一个servlet中必须执行的请求,用户的请求大体也就这三类,但是如果细分,一个“编辑”,“删除”,“查看”等操作都是doGet的范围,当然也可以都写到serice方法中或 doPost中处理,这样为了区分这些请求,我们通常都要在程序中加入一个判断的参数,如:operate,然后在程序中判断 if operate.equals("update")....,if operate.equals("del")....,if operate.equals("view")....等,实际上这只是个简单的逻辑,如果业务更加复杂,你可能写更多的类时operate的参数,这样就造成程序中有若干if..else if...else if ..,即便你有非常好的编码规范,整齐的缩进,这个程序也相当难维护;而用到struts时,你又可能把这些参数都写到execute方法中;那么最好的方法还是将这些逻辑分开处理,如果执行“编辑”操作的时候调用“编辑”对应的方法,执行“删除”的时候调用“删除”对应的方法...将是比较理想的结果,为了实现这个应用要求,struts引入许多类型的工具类,如:MappingDispathAction,LookDispachAction,DispatchAction,以满足不同要求的需要,这样你在struts-config.xml文件的action元素中增加 parameter属性即可实现这个功能。
       二.实现。

UserAction.java package org.appfuse.webapp.action;import ...public final class UserAction extends BaseAction {           public ActionForward add(ActionMapping mapping, ActionForm form,                                HttpServletRequest request,                                HttpServletResponse response)       throws Exception {           ...       }       public ActionForward cancel(ActionMapping mapping, ActionForm form,                                   HttpServletRequest request,                                   HttpServletResponse response)       throws Exception {           ...       }       public ActionForward delete(ActionMapping mapping, ActionForm form,                                   HttpServletRequest request,                                   HttpServletResponse response)       throws Exception {           ...       }       public ActionForward edit(ActionMapping mapping, ActionForm form,                                 HttpServletRequest request,                                 HttpServletResponse response)       throws Exception {           ...       }       public ActionForward save(ActionMapping mapping, ActionForm form,                                 HttpServletRequest request,                                 HttpServletResponse response)       throws Exception {           ...       }       public ActionForward search(ActionMapping mapping, ActionForm form,                                   HttpServletRequest request,                                   HttpServletResponse response)       throws Exception {           ...       }           public ActionForward unspecified(ActionMapping mapping, ActionForm form,                                        HttpServletRequest request,                                        HttpServletResponse response)       throws Exception {                  ...       }       private void sendNewUserEmail(HttpServletRequest request, UserForm userForm)       throws Exception {           ...       }}
  
         当你没有传入method参数,或者没有符合参数的方法时,程序将执行unspecified方法;当然method只是一个逻辑名字而已,你也可以使用其他名字,如:method1,method2,go2,asdad等......

热点排行