- 浏览: 308852 次
最新评论
-
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
hunanjun000:
《研磨struts2》第四章 Action 之 4.5 Action的其它重要知识
21.3 通过注解来实现零配置
21.3.1 概述
在实际开发中,光是简单的通过默认的方式来进行配置,是满足不了实际项目的需要的,这就需要使用注解,来进一步控制程序各个部分的对应关系。
就其实质,就是把原本在struts.xml中的配置信息,通过使用注解来把这些信息搬移到Action类上进行配置。所以零配置并不是不配置,只是不在struts.xml里面配置而已。
21.3.2 HelloWorld
接下来,通过一个示例来看看如何通过注解来实现零配置。
修改刚才的HelloWorldAction类,不再实现execute方法,而是实现一个method1的方法,在这个方法上添加上一个最简单的Action注解,示例代码如下:
上面示例中的注解“@Action("/t1")”,表示访问Action的这个方法的映射就是t1,也就是说,通过URL:http://localhost:9080/helloworld/t1,就可以访问到HelloWorldAction中的method1方法,执行后返回success。然后到WEB-INF/content文件夹下,优先匹配t1-success.jsp,如果没有,匹配t1.jsp也可以。
这就可以看得出来,注解的方式明显比完全依靠约定的方式要更灵活,让程序人员有更大的控制力,从而可以实现更复杂的功能。
所有可以引用的注解都在org.apache.struts2.convention.annotation这个包中。接下来,就来一一介绍最常用的几个。
21.3.3 @Action和@Actions
@Action注解可谓是集大成者,可以使用它为Action类指定引用名,也就是在URL中的映射名称,它同时还可以包含其他的注解。
@Action注解有以下属性:
- value:指定URL中的映射名称。
- params:指定需要注入到Action的参数。
- results:指定结果。
- interceptorRefs:指定拦截器引用。
- excepitonMappings:声明错误处理。
java代码:
|
这样的注解就相当于在struts.xml中注册:
- <action name="annoAction" class="……">
- <param name="str">param1</param>
- <param name="str2">param2</param>
- <interceptor-ref name="timer"/>
- <interceptor-ref name="defaultStack"/>
- <exception-mapping result="nullError"
- exception="java.lang.NullPointerException"/>
- <exception-mapping result="error" exception="java.lang.Exception"/>
- <result name="success">/anno/success.jsp</result>
- <result name="another">/anno/another.jsp</result>
- </action>
特别要注意params的定义:params={"str","param1","str2","param2"},它里面全部用的都是逗号,也就是第一个为参数的key,第二个就为相应的值,而第三个又为参数的key,第四个为相应的值,以此类推。另外参数的key一定要对应Action中的属性,因为这些参数在传递给Action的时候,需要有接收的地方。
而@Actions是可以包含多个@Action的注解,示例如下:
这样的注解,表明使用如下的URL:“http://localhost:9080/helloworld/t1”或者“http://localhost:9080/helloworld/annoAction”,都能够访问到method1这个方法。
另外要注意:@Action和@Actions都是既可以用在类级,又可以用在方法级上,上面的示例就是在方法级上。
21.3.4 @Result和@Results
@Result注解用于声明一个结果,有以下属性:
- name:指定结果的名字,默认为success。
- type:指定结果的类型,默认为在<result-types>中定义的默认类型。
- location:指定结果的页面位置。
- params:指定结果的可选参数。
这样的注解就相当于在struts.xml中注册:
@Results注解用来声明多个结果,它只有一个value属性,而这个value属性又需要一个@Result数组。
Java注解规定在同一个语法单元上,同一种注解只能使用一个,因此,如果一个Action可能有多个后继页面的时候,决不能在同一个Action类上使用多个@Result,而是应该使用@Results包含了多个@Result。如:
注意:上面的注解出现了一对花括号{},这是表示@Results注解中有两个@Result注解组成的数组,一定要注意。
这样的注解就相当于在struts.xml中注册:
另外要注意:@Result和@Results是用在类级上,不能直接用在方法上,相当于整个Action的全局的Result。当然可以把他们配置在方法级使用的@Action里面,当做局部的result配置。
21.3.5 @Namespace
@Namespace注解用来这个Action类的包命名空间,只有value属性,用来指明包命名空间。
这样的注解就相当于在struts.xml中注册:
21.3.6 @InterceptorRef和@InterceptorRefs
@Interceptor注解用来为这个Action引用拦截器,只有一个value属性,用来指定拦截器或者是拦截器栈的名字。
这样的注解就相当于在struts.xml中注册:
@InterceptorRefs注解用来声明多个拦截器引用,它只有一个value属性,而这个value属性又需要一个@InterceptorRef数组。
注意:@InterceptorRefs和@InterceptorRef的关系与@Results和@Result的关系类似。一个类上也不能同时出现两个@IntercptorRef注解,因此,请读者对比@Results,请写出如何在一个Action上引用两个拦截器。
21.3.7 @ExceptionMapping和@ExceptionMappings
@ExceptionMapping注解用来为这个Action声明错误处理,有以下属性:
- exception:指定处理的例外。
- result:指定捕获了指定例外之后跳转到哪个结果。
- params:指定额外的参数。
这样的注解就相当于在struts.xml中注册:
@ExceptionMappings注解用来声明多个错误处理,它只有一个value属性,而这个value属性又需要一个@ExceptionMapping数组。
注意:@ExceptionMappings和@ExceptionMapping的关系与@Results和@Result的关系类似。一个类上也不能同时出现两个@ExceptionMapping注解。
21.3.8 @ParentPackage
@ParentPackage注解用来为Action指定父包,它只有一个value属性,用来指定父包的名字。
这听起来有些不可思议,父包都是在包上指定的啊,只有<package>元素才有parent属性来指定父包啊,Action上怎么也能指定呢?零配置的时候,所有的Action都是单独放置的,暂时还没有包这个概念,所以需要在每个Action上指定自己的父包,如果不指定的话默认为struts-default。
21.3.9 用注解来替代struts.xml
到这里,已经把使用注解实现零配置的细节都学完了,您是不是已经欢呼雀跃的说,“我已经会了,不就是用注解来替代struts.xml嘛!”。
但是请注意一点,到现在为止,注解还不能完全替代struts.xml。事实上用注解替代的不是struts.xml文件,而是替代struts.xml中的一些配置信息,主要的是struts.xml中<action>元素部分的配置。
除了<action>元素,struts.xml中还有很多东西,比如:指定全局结果<global-result>;声明一个拦截器<interceptor>等等,到现在为止,注解还做不到。
因此,请大家注意:注解实现零配置不能完整的替代struts.xml,而是替代了其中Action部分的配置信息。那么,其他部分该怎么办呢?
很简单,让struts.xml和注解实现的零配置共存来解决这个问题。也就能用注解代替的部分写到Action类里面,其他的还是写到struts.xml里面就可以了。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4185.html】
欢迎访问http://sishuok.com获取更多内容
评论
多谢关注 会的
发表评论
-
研磨struts2 目录贴
2012-08-24 12:12 163321.1 《研磨struts2》 第一章 Struts2 ... -
跟着cc学设计 之 研磨设计模式 视频教程 出炉了
2012-08-15 07:16 2研磨设计模式——跟着CC学设计系列精品课程,上线了! ... -
研磨struts2 目录
2012-07-30 21:15 2471.1 《研磨struts2》 第一章 Strut ... -
研磨struts2 目录
2012-07-30 16:54 361.1 《研磨struts2》 第一章 Stru ... -
《研磨struts2》A.2 struts.properties的配置 之 A.2.1 概述
2012-07-09 12:10 3055A.2.1 概述 如果我们希望覆盖在 ... -
《研磨struts2》附录A Struts2的配置 之 A.1 struts.xml的配置
2012-07-09 12:10 2710A.1 struts.xml的配置 A.1.1 ... -
《研磨struts2》第二十一章 零配置 之 21.2 约定大于配置
2012-07-05 10:44 245821.2 约定大于配置 21.2.1 约定 ... -
《研磨struts2》第二十一章 零配置 之 21.1 概述
2012-07-05 10:44 231321.1 概述 21.1.1 零配置概述 在 ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.3 整合Struts2与SiteMesh
2012-07-04 08:15 2072在Struts2中使用SiteMesh ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.2 单独使用SiteMesh
2012-07-03 08:00 209120.2 单独使用SiteMesh 20. ... -
《研磨struts2》第二十章 整合SiteMesh 之 20.1 调整应用的风格
2012-07-03 07:59 185420.1 调整应用的风 ... -
《研磨struts2》19.2 使用execAndWait拦截器模拟进度条 之 19.2.1 模拟长时间运行的Action
2012-07-02 12:24 213719.2.1模拟长时间运行的Action ... -
《研磨struts2》第十九章 进度条 之 19.1 使用“进度条”告知用户进度
2012-07-02 12:23 214119.1 使用“进度条”告知用户进度 ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.3 Struts2结合JFreeChart
2012-06-28 12:12 199918.3 Struts2结合JFreeChart ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.2 Struts2插件概述
2012-06-28 12:11 2020Struts2并没有求大求全,企图把所有 ... -
《研磨struts2》第十八章 结合JFreeChart 之 18.1 JFreeChart使用
2012-06-20 15:48 227818.1 JFreeChart使用 18.1.1概 ... -
研磨struts2(1-10章)电子书下载
2012-06-19 07:30 6058研磨struts2的博客文章 私塾在线学习网 《研 ... -
《研磨struts2》第十七章 防止重复提交 之 17.3 更强大的tokenSession拦截器
2012-06-18 13:46 206717.3 更强大的tokenSession拦截器 ... -
《研磨struts2》第十七章 防止重复提交 之 17.2 使用标签
2012-06-18 13:45 233217.2 使用<s:token/>标签 ... -
《研磨struts2》第十七章 防止重复提交 之 17.1 什么是重复提交
2012-06-18 13:45 214417.1 什么是重复提交 所谓重复提交,就是用户在 ...
相关推荐
9. **表单验证**:Struts2提供了强大的表单验证功能,可以通过注解或XML配置实现。源代码中可能包含验证规则的定义和处理验证失败的示例。 10. **国际化(Internationalization, i18n)**:Struts2支持多语言环境,...
零配置意味着在某些情况下可以不编写struts.xml配置文件,而是通过注解或者其他方式来配置Action。 #### 15.2 零配置的实现 - **注解配置**:通过在Action类上添加注解来代替配置文件。 - **自动扫描**:Struts2...
由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。
根据提供的文件信息,我们可以推断出这是一份关于《研磨Struts 2》书籍PDF版本的下载资源。为了更好地理解和概括这份资料所涉及的知识点,我们先来了解一下Struts 2框架及其重要性,然后深入探讨《研磨Struts 2》这...
《研磨Struts2》这本书是专门针对Struts2框架的学习指南,通过深入浅出的方式讲解了Struts2的核心概念和技术。其配套的PPT和视频旨在帮助读者更直观地理解书中的理论知识,并将其付诸实践。 在研读《研磨Struts2》...
书中详细介绍了如何创建一个简单的Struts2应用,从Servlet+JSP+JavaBean实现MVC模式,然后逐步过渡到使用Struts2框架来简化这一过程。 5. **Struts2架构**:Struts2的系统架构包含ActionServlet、FilterDispatcher...
研磨Struts2 高清完整版,请和第一部分一起下载啊
研磨Struts2_12859679_高清完整版
研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人
第21章 解释器模式(Interpreter) 第22章 装饰模式(Decorator) 第23章 职责链模式(Chain of Responsibility) 第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录...
第21章 解释器模式(Interpreter) 第22章 装饰模式(Decorator) 第23章 职责链模式(Chain of Responsibility) 第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录...
第21章 解释器模式(Interpreter) 第22章 装饰模式(Decorator) 第23章 职责链模式(Chain of Responsibility) 第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录...
第21章 解释器模式(Interpreter) 第22章 装饰模式(Decorator) 第23章 职责链模式(Chain of Responsibility) 第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 ...
研磨设计模式.part2 一定要下载5部分