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

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值