六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 110|回复: 0

struts 常用的action使用讲解

[复制链接]

升级  73.8%

273

主题

273

主题

273

主题

进士

Rank: 4

积分
869
 楼主| 发表于 2013-2-7 19:23:42 | 显示全部楼层 |阅读模式
structs里Dispatchaction VS LookupDispathAction
   Struts里这两个玩意还是十分有用的,近来学习到,故总结之
首先,DispatchAction的作用简单地说就是把原来我们写在多个acton里的操作放在同一个
action里处理,比如在商品购物系统中,有增加商品,删除商品,修改商品和查看商品,以前的话,要写三个action来操作之,现在可以合在一个action里进行操作了,可以创建一个类,继承自dispatchaction类的子类,不需要覆盖execute()方法。比如
import org.apache.struts.actions.DispatchAction;
public class ItemeAction extends DispatchAction{
 //增加商品
        public ActionForward add(ActionMapping mapping,
                            ActionForm form,
                            HttpServletRequest request,
                            HttpServletResponse response)
          throws Exception {
          }
/**编辑商品**/
            public ActionForward edit(ActionMapping mapping,
                            ActionForm form,
                            HttpServletRequest request,
                            HttpServletResponse response)
          throws Exception {
 }         
    }
 接着,我们配置
<action path="/item"
 input="inputitem.jsp"
 parameter="method"  scope="request"
 type="ItemeAction"  
 validate="false">
</action>
上面的配置,要注意的是,要加上parameter="method".当itemaction这个类执行时,它实际上执行的是基类的dispatchaction的execute方法。DispatchAction根据参数method的值来确定具体调用的是其中的哪一个方法,比如一个用户的调用是
http://localhost/xxx/item?method=add,则调用itemaction类add的方法
再来看下lookupdispatchaction.该类是DispatchAction类的一个子类,它的应用场合在于多个同名提交按钮的表单场合。比如在一个购物的应用中,一个按钮用来“更新”购物车,一个用来移除购物车里的商品,一个用来做“提交结帐”的功能,假如他们的名字都叫action的按钮,则代码为
 <html:form action="/cart">
    <html:submit property="action">
       <bean:message key="cart.update"/>
    </html:submit>
    <html:submit property="action">
      <bean:message key="cart.check"/>
    </html:submit>
 </html:form>
然后配置其action,
<action path="/carts"
       type="cartaction"
        name="cartForm"
        scope="request"
        parameter="action">
  //注意这里parameter名要为action
  </action>,
接下来是创建lookupdispatchaction类的子类,扩展LookupDispatchAction类,需要实现getKeyMethodMap()方法,该方法返回java.util.Map类的对象,如
protected Map getKeyMethodMap() {
      Map map = new HashMap();
     map.put("cart.update", "update");
      map.put("cart.check", "checkcart");
      return map;
 }
public ActionForward update(ActionMapping mapping,
          ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response)
          throws IOException, ServletException {
     // do add
      return mapping.findForward("success");
 }
 public ActionForward checkcart(ActionMapping mapping,
          ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response)
          throws IOException, ServletException {
      // do delete
      return mapping.findForward("success");
 }
STRUTS一些问题的想法- -| 回首页 | 2004年索引 | - -dispatchaction测试记录Struts DispatchAction LookupDispatchActi- -
   
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表