`

各种Action的实用场合

阅读更多
不同的Action类处理不同的用户请求,并不意味着一个Action类只能执行一个操作。在Action类中可以聚合多个操作。基本原则是一个Action与一个业务操作相关联。例如商品的增、删、改、查可以放到一个Action类中实现,而购物车功能不能和用户注册功能放到同一个Action类中。
Struts中预定义的Action类:
1. ForwardAction类:类似于<jsp:forward>功能,在Struts中尽量避免直接调用jsp(会失去了MVC风格),当仅仅需要从一个JSP页面到另一个JSP页面的请求转发操作时,并不需要一个真正的Action,ForwardAction类专门用于请求转发,不进行任何其他业务操作(MVC中控制器的作用),这样做的好处是控制器可以预处理请求。
具体使用ForwardAction类只需在配置文件中声明,无需编写代码:
<action
input=”/index.jsp”
name=”loginForm”
scope=”request”
validate=”false”
path=”/homepage”
type=”org.apache.struts.actions.ForwardAction”
parameter=”/shop/homepage.jsp” />
parameter属性用于指定往哪里转发。Path、type、parameter三个属性为必须,其他可忽略。
2. IncludeAction类:类似于<jsp:include>动作或Servlet中的RequestDispatcher的include()方法功能。
<action
input=”/index.jsp”
mane=”loginForm”
scope=”request”
validate=”false”
path=”/homepage”
type=”org.apache.struts.actions.IncludeAction”
parameter=”/shope/includepage.jsp” />
3. DispatchAction类:常用于在一个Action类中完成一组紧密相关的业务操作,例如增、删、改、查,可以减少重复编程。不同于一般的Action类,创建一个扩展DispatchAction类的子类时,不必覆盖execute()方法,而是创建一些实现具体业务操作的方法,这些方法和execute()方法有一样的参数和返回值,以及声明可能抛出的异常,例如:
Public final class UserAction extends DispatchAction{
Public ActionForward add(ActionMapping mapping,ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
Throws Exception{
If(log.isDebugEnabled())
Log.debug(“Entering ‘add’ method”);
User user = new User();
User.addRole(new Role(“admin”));
UserForm userForm = (UserForm)convert(user);
updateFormBean(mapping,request,userForm);
return mapping.findForward(“edit”);
}
public ActionForward delete(ActionMapping mapping,ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
Throws Exception{
…………….删除用户的代码写在这里。
Return mapping.findForward(“viewUsers”);
}
在配置DispatchAction类时,需要指定parameter属性为method,例如:
<action
path=”/users”
type=”包名. UserAction”
name=”userForm”
scope=”request”
input=”/userlist.jsp”
parameter=”method”
validate=”false”
>
<forward name=”edit” path=”/WEB-INF/shop/userEdit.jsp” redirect=”false”>
<forward name=”viewUsers” path=”/WEB-INF/shop/userlist.jsp” redirect=”false”>
</action>
4. LookupDispatchAction类:是DispatchAction的子类,不同之处在于DispatchAction类使用请求参数的值确定调用哪种方法,而LookupDispatchAction类利用请求参数值,反向查询资源绑定,并将它与类中的一种方法匹配。通常用于在有多个同名提交按钮的表单的场合。例如:
页面代码如下(具有相同的按钮名称“action”,但是每个按钮的值都不同):
<html:form action=”/shop/cart”>
….
<html:submit property=”action”>
<bean:message key=”cart.remove”/>
</html:submit>
….
<html:submit property=”action”>
<bean:message key=”cart.update”/>
</html:submit>
….
<html:submit property=”action”>
<bean:message key=”cart.checkout”/>
</html:submit>
</html:form>
这里提交按钮的名字action与配置文件中的parameter属性值一致。假定在资源文件中已经定义了键为cart.update和cart.checkou和cart.remove的消息资源。
配置文件如下:
<action
path=”/carts”
type=”包名.CartAction”
name=”userForm”
scope=”request”
input=”viewcart.jsp”
parameter=”action”
validate=”false”>
<forward name=”success” path=”/shop/viewcart.jsp” redirect=”false”/>
</action>
CartAction.java代码如下:(导入java.util.Map,实现方法:getKeyMethodMap())
Protected Map getKeyMethodMap(){
Map map = new Map();
Map.put(“cart.update”,”updateCart”);
Map.put(“cart.checkout”,”checkout”);
Map.put(“cart.remove”,”removeCart”);
Return map;
}
然后分别实现updateCart、checkout、removeCart方法,每种方法的方法签名与execute方法一致。
当CartAction被触发时,它根据传入按钮的值到消息资源文件中找到相应的键,再由getKeyMethodMap方法返回的Map对象映射到相应的方法。
5.AwitchAction类:主要用于在不同的模块之间切换操作,详见Struts多模块开发。
分享到:
评论

相关推荐

    action_vip_ds18b20_fpga_Action!_

    DS18B20的独特之处在于它只需要一根线就能完成数据传输、电源供应和地址识别,这使得它在各种嵌入式系统中非常受欢迎,尤其是在空间有限或者需要简化布线的场合。 接下来,我们转向FPGA。FPGA是一种集成电路,它的...

    棕色实用公司介绍产品宣传PPT模板

    【棕色实用公司介绍产品宣传PPT模板】是一个适用于IT行业专业人士进行公司展示和产品推广的高效工具。在制作此类PPT时,以下是一些关键知识点和要素: 1. **公司概述**:这部分是向观众介绍公司的基本信息,包括...

    灰黄配色时尚简约工作汇报总结实用商务PPT模板.pptx

    【灰黄配色时尚简约工作汇报总结实用商务PPT模板】是一种设计精良的演示文稿模板,适用于商业环境中的工作汇报、项目总结等场合。该模板采用了灰黄配色方案,这种色彩搭配既体现了现代简约风格,又具有专业与时尚的...

    Android应用源码ListView 中的item随意拖动.zip

    这种功能在很多场合都非常实用,比如在待办事项列表、日程安排或者文件管理器等应用中,用户可以通过拖动来重新排列项目顺序。 首先,实现这个功能的关键是监听用户的触摸事件,并根据这些事件来更新ListView的布局...

    NFC通过无线射频技术,实现标签扫描,可用于类似公交卡、门禁卡等场合的应用app开发

    NDEF是NFC标准的一部分,用于封装各种类型的数据,如文本、URL、智能海报等。开发者可以使用`NdefFormatable`接口来格式化标签,并使用`Ndef`类来读取和写入数据。 2. **卡片模拟模式**:在这一模式下,Android设备...

    Text111长按10秒种,触发操作提示功能,OnTouchListener倒计时功能,封装了方法类.zip

    在Android开发中,"Text111长按10秒种,触发操作提示功能,OnTouchListener倒计时功能,封装了方法类.zip"这个压缩包...这种技术在很多场合都很实用,比如在列表项中提供隐藏的长按操作,或者在游戏中的特殊交互等。

    《麦肯锡工作方法_教你用最短的时间做好汇报》笔记.docx

    《麦肯锡工作方法:教你用最短的时间做好汇报》笔记提供了一系列的实用技巧和方法,旨在帮助职场人士提高汇报效率,确保在任何需要沟通的场合都能够清晰、有条理地传达信息。本文将深入探讨这些方法,并阐述它们在...

    雅思口语素材整理汇总.doc

    这些素材对于准备雅思口语考试的考生来说非常实用,可以帮助他们构建完整的对话,并在描述个人兴趣和观点时提供丰富的词汇和表达方式。通过练习使用这些素材,考生可以提高自己在实际口语交流中的流利度和自信心。...

    阿狸关机助手1.0

    如果我们是处于一个公共场合,比如公司办公室,电脑中的数据与隐私就可能面临风险。这时,阿狸关机助手的锁屏功能就能发挥其应有的作用了。用户可以设置在特定时间内,当电脑处于无人使用状态时自动锁定屏幕,从而...

    英语电子邮件模板PPT课件.pptx

    学习者通过这个部分能够了解到一个完整的英语电子邮件由哪些部分构成,例如Salutation(称呼)、Opening(开头)、Facts(事实陈述)、Action(行动请求)和Remarks(结束语)。称呼部分演示了如何根据不同的关系和...

    商务礼仪培训教材(PPT34页)2.pptx

    在业务介绍时,了解“AIDMA”规则(Attention-Interest-Desire-Memory-Action,即吸引注意力、引发兴趣、激发欲望、留下印象、促使行动)和“三T”规则(Tell them what you're going to tell them, Tell them, Tell...

    AddImage_java_valuableufo_

    Android中的View类提供了onTouchEvent()方法来处理这类事件,开发者需要在此方法中解析ACTION_DOWN、ACTION_MOVE和ACTION_UP等事件,根据用户的触摸轨迹绘制线条。 3. **保存和恢复绘图状态**:为了在签名完成后...

    大图排版扁平化简约商务ppt模板.pptx

    5. **内容结构**:内容按照逻辑顺序组织,例如“Attention”、“Interest”、“Memory”和“Action”,这是经典的AIDA模型(Attention-Interest-Desire-Action),用于引导观众逐步关注、理解、产生兴趣并采取行动。...

    就业指导2017考试答案.doc

    8. 礼仪原则:基本的礼仪原则包括守时、尊重和适度,这些原则适用于各种社交场合。 9. 简历填写:简历中的兴趣爱好和个人评价应与应聘公司和岗位相关,若无必要,可以不写。 10. 网上求职注意事项:需关注求职平台...

    飞跃商务海报模板下载

    首先,商务海报通常用于公司宣传、产品展示、活动推广等多种场合。一个高质量的商务海报设计应该具备清晰的主题,引人入目的视觉元素,以及与品牌调性相一致的色彩和风格。模板在这里的作用是提供一个基础框架,让...

    real6410最新更新

    在real6410开发板上引入VGA接口,意味着开发者可以直接连接标准的显示器或投影仪,进行高清图像和视频的显示,这对于多媒体应用、工业控制界面或者教学演示等场合具有显著优势。同时,这也为那些需要高清晰度输出的...

    Android实现手机音量最大值限制

    这样的功能在很多场景下都非常实用,比如避免小孩子过度调整音量导致听力损伤,或者在公共场合防止突然的高音量打扰他人。在本案例中,"Android实现手机音量最大值限制"是一个应用程序,它允许用户设置一个特定的...

    32位并口虚拟成IO的JTAG GIVEIO及其SJF2440软件

    在IT领域,尤其是在嵌入式系统开发中,JTAG(Joint Test Action Group)是一种重要的调试接口标准,用于芯片级的测试和调试。JTAG技术通过一个四线接口(TMS、TCK、TDI和TDO)连接到目标设备,可以实现对内部电路的...

    TTT教材企业内部培训师技巧.doc

    培训与教育的主要区别在于,培训更注重实用性和即时效果,而教育则倾向于理论学习和长期发展。 2. **理解企业内部培训**: 公司内部培训的特点通常体现在针对性强、成本较低、易于调整和更新内容。运用方面,它...

Global site tag (gtag.js) - Google Analytics