Action——Action的配置和作用
大家在接触Struts2时或许听说过Action这个词,这里您将了解什么是Action,Action都有哪些作用,和一点关于Action的配置。
什么是Action
在Struts2中我们通常说的Action通常有这么3个含义。Action指Action类,比如咱们上个章节说到的HelloWorldAction就算是一个Action类。Action指Struts2配置中的一个Action配置条目,比如说咱们上章节在struts.xml中<package>配字节下的<action ></action>条目,对应着浏览器中的某种请求。Action指Action方法,就是Action类中的方法了,比如execute方法。
Action有着以上3方面的意思,所以当以后听到Action的时候要试着去理解此时Action的意思。
Action类
什么是Action类呢?或者是说什么样的类才算是个Action类呢?我们举过上章节提及到的HelloWorldAction这个例子,大家可以参考一下这个类,观察一下这个类的特征。
或许您发现这个类继承自一个叫做ActionSupport的类,有个属性,有个方法,和平常写的类几乎没什么两样。确实和普通类几乎是没什么两样,就是它继承了ActionSupport,这能说明什么呢?继承ActionSupport就能说明这个类是个Action类吗?在Struts2中Action类完全可以是个普通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中定义了某个属性,并且为该属性实现了getter和setter方法,在页面部分就能很神奇的得到数据。既然是中介肯定不能是单向的,当然也应该能得到页面提交过来的数据。大家或许对数据的传递的方式不是很了解,在后面的章节我会说到的,包括简单的例子和怎样从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
分享到:
相关推荐
这篇博客“Struts2 ——2、各种Action写法和配置”着重讲解了在Struts2框架中如何创建和配置不同的Action,以便更好地理解和运用这个框架。 在Struts2中,Action是处理用户请求的核心组件,它负责业务逻辑的处理,...
在这个主题“OSWorkflow之三——workflow的推动者Action”中,我们将深入理解如何使用Action来驱动workflow的执行,以及它在工作流中的核心作用。 Action在OSWorkflow中扮演着至关重要的角色,它是流程状态转换的...
- **配置文件**:`struts-config.xml` 是 Struts 应用的关键配置文件,它定义了 Action 映射、Form Bean、数据源等信息,控制着请求的流向。 2. **请求处理流程**: - 用户通过浏览器发送一个请求到服务器。 - ...
然后,需要编写 Structs 的配置文件 struts.xml,并在 web.xml 中配置 Spring 的 IOC 容器以及 Structs 的 Action。 ### 编写 Action 类 最后,需要编写 Action 类继承 ActionSupport 类或实现 Action 接口,完成...
标题中的“IOS应用源码——分享action sheet.zip”表明这是一个关于iOS应用的源代码,具体是实现分享功能的Action Sheet。Action Sheet在iOS开发中是一个常见的UI组件,它用于向用户展示一系列可供选择的选项,通常...
当多个Activity可以响应同一个Action时,Android系统会根据Intent的其他属性(如Data、Category)以及AndroidManifest.xml中的配置来决定启动哪个Activity。 首先,我们需要了解在AndroidManifest.xml中声明...
《FPGA开发全攻略——配置电路详解》 FPGA(Field-Programmable Gate Array)是一种高度可配置的集成电路,其灵活性在于可以根据设计需求通过编程实现不同的逻辑功能。配置电路是FPGA工作的重要环节,它决定了FPGA...
2. **结果路径**:Action的结果路径通常是基于Action类名的,例如`HelloWorld`Action的默认结果可能是`hello-world.jsp`或`hello-world.ftl`,这些文件通常位于`WEB-INF/content`目录下,但可以通过配置`struts....
本文将详细解析Action配置中的关键元素——`<package>`及其属性。 `<package>`元素在Struts 2配置中扮演着组织和封装的角色,它允许开发者将一组相关的Action、Result和Interceptor等元素组合成一个独立的模块。这...
在这个主题“Struts2--3.Action及相关-1”中,我们将深入探讨Struts2的核心组件——Action类及其相关概念。Action类在Struts2中扮演着业务逻辑处理者的角色,它负责接收用户的请求,执行相应的业务操作,并返回结果...
这个"自定义Action Sheet效果库"是一个专为iOS应用设计的源码库,允许开发者自定义Action Sheet的外观和行为,以实现更加独特且符合品牌形象的交互体验。 Action Sheet在iOS中的默认实现通常是半透明的矩形面板,从...
综上所述,"struts——java文件"可能包含了Action类、ActionForm(如果使用旧版本)以及其他相关辅助类的源码,通过阅读和理解这些代码,可以深入学习和掌握Struts框架的工作原理以及如何在实际项目中应用。...
Struts教程——丰伟 1. **概述** 在本文中,我们将深入理解Struts Framework,这是一种基于MVC(Model-View-Controller)设计模式的Java Web应用开发框架。Struts为开发者提供了一种结构化的解决方案,使得创建...
本文旨在深入剖析Struts框架的核心组件之一——`ActionServlet`的工作原理及其配置过程,帮助读者更好地理解Struts框架的内部机制。 #### 二、ActionServlet概述 `ActionServlet`是Struts框架中的关键组件,负责...
在这里,你需要为添加和删除操作设置对应的Action和Form Bean配置。 - **database.properties**:数据库连接配置文件,包括数据库URL、用户名、密码等,这些信息被DAO用来建立数据库连接。 6. **异常处理**: 在...
《Spring in Action》一书是Spring框架的实践指南,它深入介绍了如何使用Maven构建Spring工程。Maven是一个流行的项目管理和综合工具,它通过提供一套标准化的构建过程,简化了Java项目的构建、依赖管理和部署。在...
《Action_VIP_board硬件原理图详解——基于FPGA的应用与设计》 在电子工程领域,FPGA(Field-Programmable Gate Array)是一种高度可配置的集成电路,它允许设计者根据需求自由定制数字逻辑功能。"Action_VIP_board...