`

Action——Action的配置和作用

阅读更多

 

Action——Action的配置和作用

 

大家在接触Struts2时或许听说过Action这个词,这里您将了解什么是ActionAction都有哪些作用,和一点关于Action的配置。

 

什么是Action

       Struts2中我们通常说的Action通常有这么3个含义。ActionAction类,比如咱们上个章节说到的HelloWorldAction就算是一个Action类。ActionStruts2配置中的一个Action配置条目,比如说咱们上章节在struts.xml<package>配字节下的<action ></action>条目,对应着浏览器中的某种请求。ActionAction方法,就是Action类中的方法了,比如execute方法。

       Action有着以上3方面的意思,所以当以后听到Action的时候要试着去理解此时Action的意思。

 

Action

       什么是Action类呢?或者是说什么样的类才算是个Action类呢?我们举过上章节提及到的HelloWorldAction这个例子,大家可以参考一下这个类,观察一下这个类的特征。

或许您发现这个类继承自一个叫做ActionSupport的类,有个属性,有个方法,和平常写的类几乎没什么两样。确实和普通类几乎是没什么两样,就是它继承了ActionSupport,这能说明什么呢?继承ActionSupport就能说明这个类是个Action类吗?在Struts2Action类完全可以是个普通Java(POJO plain old java object),也可以是扩展自Struts2预定义的类(ActionSupport)。那我要是随便定义个类就算是Action类吗?那可不行,那不就乱了。结合Action类的职能我们可以看出给Action类就是指:能相应客户端请求处理一定业务逻辑的Java类。那么继承的意义有在何处呢?关于这个问题我们在后面章节就会找到答案。

 

Action方法

       什么样的方法才称得上Action方法呢?大家或许又想起来我们上章的execute方法,没错execute方法算得上Action方法。结合execute方法的特征我们可以看出,execute方法没有接受任何参数,返回值类型为String,访问修饰符为public。并且Action方法处理了业务逻辑,处理了客户端请求。那之前HelloWorld类中的getter setter算不算呢?很显然就不算了。

那我要是自己定义一个方法满足execute方法的形式,并且处理业务逻辑,能不能算一个Action方法呢?那看你喜好了,想让它是它就是。为什么这么说?接着向下看就知道了。

OK,我们就要回想一下之前的hello World程序了。当一个请求过来时,Strut2过滤了这一请求,通过struts.xml将请求和处理请求的Action类联系起来,然后处理请求权交给了execute方法,execute方法返回了SUCCESS字符串,又通过struts.xml文件将返回的字符串和要呈现的页面关联了起来。这里面有个可疑之处,当请求交给到Action类处理时,就把这种处理权交给了execute方法。Struts2怎么就能吧处理权交给了execute方法了?假设我又添加了一个方法doSomething,发现Struts2并不能把处理权交给doSomething

显然这里的execute方法是默认Action方法,看来自定义Action方法还是可能的。

 

Action类的作用

       我们可以看出Action类有以下几个作用:

完成请求所需的业务逻辑,当然我们现在知道业务逻辑的具体完成是在Action方法中。确定要显示的页面,页面的确定是由Action方法返回的字符串和struts.xml配合完成的。

提供数据传输的中介,这点体现在我们在Action中定义了某个属性,并且为该属性实现了gettersetter方法,在页面部分就能很神奇的得到数据。既然是中介肯定不能是单向的,当然也应该能得到页面提交过来的数据。大家或许对数据的传递的方式不是很了解,在后面的章节我会说到的,包括简单的例子和怎样从Servlet API中获得或传出数据。

 

配置Action

       说到Action就不得不提到Action的配置,Action的配置是在struts.xml中完成的,注意我们现在说的Action的意思就是指<action></action>条目,OK

       或许现在您对struts.xml中的配置不是很了解,在这里我会说到<action>的相关配置,至于struts.xml的详细配置我决定还是单独拿出一个章节来说清楚好,在关系到Struts2中的某个技术时我会单独说关于该技术的配置并不涉及到其他,这样希望了解配置文件的朋友可以单独看配置章节,就不用费尽心思找了,当然您可以去参考官方文档,至于看官方文档这个途径我还是极力推荐的,迟早你要这样做的。

       首先<action>的配置说明文档是在action-configuration.html 里的,文档中更详细的咯咯。

       <action></action>用来定义一个Action类及导向的视图。

       Action元素有一些属性:

name    action名字。

class     处理Action请求的Action类,注意这里Action类要写全名。也可以不写,不写是由谁来处理请求呢?

method 处理Action请求的Action方法,默认方法是execute。这里就看出来对自定义Action方法的支持了,注意此方法是由些要求的哦。

 

       action 元素的子元素:

           result    定义要导向的视图

 

       result元素的属性

name 一个字符串组成的标识,用来匹配Action方法返回的字符串,从而来确定要导向的视图。name可以不写,默认是success

type 确定结果类型,如redirect redirecAction dispatcher freemarker等,默认为dispatcher,其详细作用后面会详细介绍。

 

       result 元素的子元素

              param 用来定义参数,不同的结果类型有不同的参数。可以有多个。

 

好了action的配置本章节就介绍这些了,action下还有其他元素,比如说使用拦截器的配置,关于拦截器这方面的配置在我之前贴出的文章 Struts2的核心——拦截器 中可以找到。

 

好了,本章内容就这么多了,关于Action的话题我们后面还会再聊,下次再见。

 

我的联系方式:

       MSN: wang4717@live.cn

       Mail: wanglehappy9112@gmail.com

 

1
0
分享到:
评论

相关推荐

    Struts2 ——2、各种Action写法和配置

    这篇博客“Struts2 ——2、各种Action写法和配置”着重讲解了在Struts2框架中如何创建和配置不同的Action,以便更好地理解和运用这个框架。 在Struts2中,Action是处理用户请求的核心组件,它负责业务逻辑的处理,...

    OSWorkflow之三——workflow的推动者Action

    在这个主题“OSWorkflow之三——workflow的推动者Action”中,我们将深入理解如何使用Action来驱动workflow的执行,以及它在工作流中的核心作用。 Action在OSWorkflow中扮演着至关重要的角色,它是流程状态转换的...

    Structs教程——————————————————————

    - **配置文件**:`struts-config.xml` 是 Struts 应用的关键配置文件,它定义了 Action 映射、Form Bean、数据源等信息,控制着请求的流向。 2. **请求处理流程**: - 用户通过浏览器发送一个请求到服务器。 - ...

    ssh配置详解——绝对详细

    然后,需要编写 Structs 的配置文件 struts.xml,并在 web.xml 中配置 Spring 的 IOC 容器以及 Structs 的 Action。 ### 编写 Action 类 最后,需要编写 Action 类继承 ActionSupport 类或实现 Action 接口,完成...

    IOS应用源码——分享action sheet.zip

    标题中的“IOS应用源码——分享action sheet.zip”表明这是一个关于iOS应用的源代码,具体是实现分享功能的Action Sheet。Action Sheet在iOS开发中是一个常见的UI组件,它用于向用户展示一系列可供选择的选项,通常...

    Android源码——Activity设置相同的action进行判断源码_new_02.7z

    当多个Activity可以响应同一个Action时,Android系统会根据Intent的其他属性(如Data、Category)以及AndroidManifest.xml中的配置来决定启动哪个Activity。 首先,我们需要了解在AndroidManifest.xml中声明...

    FPGA开发全攻略——配置电路 (2).docx

    《FPGA开发全攻略——配置电路详解》 FPGA(Field-Programmable Gate Array)是一种高度可配置的集成电路,其灵活性在于可以根据设计需求通过编程实现不同的逻辑功能。配置电路是FPGA工作的重要环节,它决定了FPGA...

    Action的配置[借鉴].pdf

    本文将详细解析Action配置中的关键元素——`&lt;package&gt;`及其属性。 `&lt;package&gt;`元素在Struts 2配置中扮演着组织和封装的角色,它允许开发者将一组相关的Action、Result和Interceptor等元素组合成一个独立的模块。这...

    Struts2.1零配置——convention-plugin

    2. **结果路径**:Action的结果路径通常是基于Action类名的,例如`HelloWorld`Action的默认结果可能是`hello-world.jsp`或`hello-world.ftl`,这些文件通常位于`WEB-INF/content`目录下,但可以通过配置`struts....

    Struts2--3.Action及相关-1

    在这个主题“Struts2--3.Action及相关-1”中,我们将深入探讨Struts2的核心组件——Action类及其相关概念。Action类在Struts2中扮演着业务逻辑处理者的角色,它负责接收用户的请求,执行相应的业务操作,并返回结果...

    IOS应用源码——自定义action sheet效果库.zip

    这个"自定义Action Sheet效果库"是一个专为iOS应用设计的源码库,允许开发者自定义Action Sheet的外观和行为,以实现更加独特且符合品牌形象的交互体验。 Action Sheet在iOS中的默认实现通常是半透明的矩形面板,从...

    Hello Struts2 ——Struts2 的配置和第一个Struts2小程序

    NULL 博文链接:https://wang4717.iteye.com/blog/804885

    struts——java文件

    综上所述,"struts——java文件"可能包含了Action类、ActionForm(如果使用旧版本)以及其他相关辅助类的源码,通过阅读和理解这些代码,可以深入学习和掌握Struts框架的工作原理以及如何在实际项目中应用。...

    STRUTS——SQL添加删除

    在这里,你需要为添加和删除操作设置对应的Action和Form Bean配置。 - **database.properties**:数据库连接配置文件,包括数据库URL、用户名、密码等,这些信息被DAO用来建立数据库连接。 6. **异常处理**: 在...

    Spring in Action 使用Maven 构建Spring 工程

    《Spring in Action》一书是Spring框架的实践指南,它深入介绍了如何使用Maven构建Spring工程。Maven是一个流行的项目管理和综合工具,它通过提供一套标准化的构建过程,简化了Java项目的构建、依赖管理和部署。在...

    Action_VIP_board硬件原理图(修正版)_fpga_action_

    《Action_VIP_board硬件原理图详解——基于FPGA的应用与设计》 在电子工程领域,FPGA(Field-Programmable Gate Array)是一种高度可配置的集成电路,它允许设计者根据需求自由定制数字逻辑功能。"Action_VIP_board...

    Struts2+技术内幕——深入解析Struts2架构设计与实现原理

    XML配置文件可以定义Action、结果类型、拦截器栈等,而基于注解的配置则提供了更简洁的方式。书中会详细阐述这两种配置方式的使用和优缺点。 此外,Struts2还与Spring等其他框架有良好的集成,可以通过Spring插件...

    chrome扩展开发——自动填表实例[收集].pdf

    Chrome 扩展开发 —— 自动填表实例 本文将详细介绍 Chrome 扩展开发中的自动填表实例,通过分析 manifest.json 配置文件,了解扩展应用的权限、内容脚本、浏览器行为和弹出页面的实现机制。 一、权限...

    struts2利用通配符调用同一个Action里面不同的方法

    首先,我们需要了解在`struts.xml`配置文件中的核心元素——`&lt;action&gt;`。每个`&lt;action&gt;`元素代表一个特定的业务操作,通过URL映射到该Action。当我们想要调用同一个Action中的多个方法时,通常需要为每个方法创建...

Global site tag (gtag.js) - Google Analytics