返回顶部
首页 > 资讯 > 精选 >各种Action的实用场合
  • 575
分享到

各种Action的实用场合

2023-06-03 02:06:58 575人浏览 八月长安
摘要

不同的Action类处理不同的用户请求,并不意味着一个Action类只能执行一个操作。在Action类中可以聚合多个操作。基本原则是一个Action与一个业务操作相关联。例如商品的增、删、改、查可以放到一个Action类中实现,而购物车功能

不同的Action类处理不同的用户请求,并不意味着一个Action类只能执行一个操作。在Action类中可以聚合多个操作。基本原则是一个Action与一个业务操作相关联。例如商品的增、删、改、查可以放到一个Action类中实现,而购物车功能不能和用户注册功能放到同一个Action类中。[@more@]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类:类似于动作或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”>
….
action”>


….
action”>


….
action”>



这里提交按钮的名字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多模块开发

--结束END--

本文标题: 各种Action的实用场合

本文链接: https://lsjlt.com/news/232033.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 各种Action的实用场合
    不同的Action类处理不同的用户请求,并不意味着一个Action类只能执行一个操作。在Action类中可以聚合多个操作。基本原则是一个Action与一个业务操作相关联。例如商品的增、删、改、查可以放到一个Action类中实现,而购物车功能...
    99+
    2023-06-03
  • Spring事务失效的各种场景(13种)
    目录一、访问权限二、方法用final修饰三、方法内部调用四、没有被spring管理五、多线程调用六、设计的表不支持事务七、没有开启事务八、错误的事务传播九、自己捕获了异常十、手动抛出...
    99+
    2024-04-02
  • 详解Java中$符的各种使用场景
    目录前言1. $符号七大应用场景1.1 内部类与匿名内部类1.2 Lambda表达式与方法引用1.3. 自动生成的字段与方法1.4. 自定义类名与变量名1.5. 生成的代码和工具1....
    99+
    2023-05-17
    Java $符使用场景 Java $符使用 Java $符
  • Android中FileProvider的各种场景应用详解
    目录前言一、常规使用与定义二、能不能自定义接收文件?三、能不能主动查询对方的沙盒?总结前言 有部分同学只要是上传或者下载,只要用到了文件,不管三七二十一写个 FileProvider...
    99+
    2024-04-02
  • 实现CSS :target伪类选择器的各种应用场景
    实现CSS :target伪类选择器的各种应用场景,需要具体代码示例CSS : target 伪类选择器是一种常用的CSS选择器,它可以根据URL中的锚点(#)来选择特定的元素。在本文中,我们将介绍一些使用该伪类选择器的实际应用场景,并提供...
    99+
    2023-11-20
    CSS 应用场景 伪类 :target
  • java整合onlyoffice的各种坑
    项目场景: 引入在线预览文件的服务(onlyoffice),集成在自己项目之中,实现多种文件格式的在线预览。 问题描述 前提: 根据官方建议,实现onlyoffice服务的安装。 由于其服务依赖很多组件,官方建议docker安装,安装好后...
    99+
    2023-09-02
    java docker https
  • 实现CSS ::after伪元素选择器的各种应用场景
    实现CSS ::after伪元素选择器的各种应用场景,需要具体代码示例CSS的::after伪元素选择器是一种非常有用的技术,它可以在选定元素的内容之后插入新的内容。这个伪元素选择器可以用于很多场景,包括但不限于以下几个方面:添加内容和样式...
    99+
    2023-11-20
    CSS 伪元素 ::after
  • 怎么解析EXPDP/IMPDP各种应用场景
    本篇文章为大家展示了怎么解析EXPDP/IMPDP各种应用场景,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。数据泵各种场景规范文档 一、创建物理路径 语法:cr...
    99+
    2024-04-02
  • Struts2 实现Action的几种方式
    Struts2 实现 Action 的几种方式有以下几种:1. 实现 Action 接口:可以实现 Struts2 提供的 Action 接口,该接口定义了执行 Action 的方法 execute(),通过该方法可以处理请求并返回结果...
    99+
    2023-08-11
    Struts2
  • Struts2实现Action的几种方式
    Struts2实现Action的几种方式有以下几种:1. 实现Action接口:创建一个类并实现com.opensymphony.x...
    99+
    2023-08-17
    Struts2
  • 实现CSS :nth-last-child伪类选择器的各种应用场景
    实现CSS :nth-last-child伪类选择器的各种应用场景,需要具体代码示例在CSS中,有很多伪类选择器可以帮助我们更精确地选择和样式化HTML元素。其中,:nth-last-child伪类选择器就是一个非常强大和实用的选择器,它可...
    99+
    2023-11-20
    应用场景 CSS选择器 :nth-last-child
  • reds各种数据类型所对应的应用场景
    1.String类型的应用场景String是最常用的一种数据类型,普通的key/value存储.2.list类型的应用场景比较适用于列表式存储且顺序相对比较固定 如:省份、城市列表 品牌...
    99+
    2024-04-02
  • Struts 2 实现Action的几种方式
    Action用于处理用户的请求,因此也被称为业务控制器。每个Action类就是一个工作单元,Struts 2框架负责将用户的请求与相应的Action匹配,如果匹配成功,则调用该Action类对用户请求进行处理,而匹配规则需要在Struts ...
    99+
    2023-05-31
    struts action ct
  • 实现CSS :nth-last-of-type伪类选择器的各种应用场景
    实现CSS :nth-last-of-type伪类选择器的各种应用场景,需要具体代码示例在CSS中,选择器是我们用来选择HTML元素并对其应用样式的一种方式。除了常见的基本选择器,如元素选择器、类选择器和ID选择器,CSS还提供了一些伪类选...
    99+
    2023-11-20
    CSS 选择器 伪类
  • Action、Service 与Dao 三者的作用各有哪些
    今天就跟大家聊聊有关Action、Service 与Dao 三者的作用各有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. Action/Service/DAO简介:Actio...
    99+
    2023-05-31
    action service dao
  • Vue 条件渲染的魔力,解析各种场景!
    Vue.js 中的条件渲染是一种强大的技术,它允许开发者根据条件动态显示或隐藏元素。这对于构建交互式和响应式用户界面至关重要。本文将深入探讨条件渲染的各种场景,从基本用例到高级技术。 场景 1:使用 v-if 和 v-else v-if...
    99+
    2024-04-02
  • MVVMLight项目的绑定及各种使用场景示例分析
    目录一、绑定:1、元素绑定:2、非元素类型绑定: 2.1 Source属性:2.2 RelativeSource 属性:2.3 DataContext 属性:二、绑定的各种...
    99+
    2024-04-02
  • 原生JS实现各种运动之复合运动
    本文给大家分享一个用原生JS实现的复合运动,所谓复合运动就是在同一个进间段内不同的属性都会发生变化,效果如下: 实现代码如下,欢迎大家复制粘贴及吐槽。 <!DOCTYPE...
    99+
    2024-04-02
  • C#中各种泛型集合的使用方法总结
    本篇体验除Queue<T>和Stack<T>之外的其它泛型集合。 SortedList<TKey, TValue> SortedList<T...
    99+
    2022-11-13
    C# 泛型集合
  • JavaScriptRxjsmergeMap的使用场合
    注意: flatMap 是 mergeMap 的别名。如果一次只能激活一个内部订阅,请使用 switchMap.如果内部 observables 的发射和订阅顺序很重要,请使用 co...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作