`
walksing
  • 浏览: 217157 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2学习:配置篇之“0配置”和Annotation

阅读更多


Struts2官方文档在讲述配置的时候,一开始就来了个“0配置”(Zero Configuration),大意就是说在struts应用中不使用任何xml文件或者properties文件,元数据(Metadate)都用通过约定(convention)和注解(annotation)来表达的,而且这是struts2的一个新特性,目前仍在测试中,相关文档也很粗略。接下来的一部分讲述的就是Annotation,我粗略的看了一下,估计它就是“0配置”的核心所在,我拿文档中最简单的一个例子来看一下:

@Result(name="success", value="/home.page", type=TilesResult.class)public class HomeAction extends ActionSupport {    // ...}红底的部分就是我们所说的Annotation,它说明这个当这个action返回值为”success”时页面就跳转值/home.pag,就相当于我们在struts.xml中配置的result元素,采用了这个Annotiation之后我们就不用写配置文件了,实现了所谓的“0配置”。一般我们在配置actio的时候都会出现多个result,这时Annotation就可以这么写:

@Results({    @Result(name="success", value="/home.page", type=TilesResult.class),    @Result(name="homeError", value="/homeError.page", type=tilesResult.class)})还有一个问题,如果没有配置文件我们如何知道去哪儿调用哪个action呢?为了完成这个功能我们需要这样配置web.xml文件:

<filter>  <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  <init-param>    <param-name>actionPackages</param-name>    <param-value>com.foo.bar,com.baz.quux</param-value>  </init-param></filter>其实也没什么特殊的,就是给我们的Controller加了一个参数actionPackages,从字面上理解,Controller将会从com.foo.bar和com.baz.quux这两个包中去寻找action,具体的流程是这样的:

1.系统首先通过web.xml文件装载FilterDispatcher类,它要有actionPackages参数

2.FilterDispatcher会初始化一个Dispatcher,并传递actionPackages的值

3.Dispatcher会初始化一个ClasspathConfigurationProvider对象,用它来存放一个或多个Configuration Providers

4.Dispatcher给ConfigurationManager对象增加一个ClasspathConfigurationProvider来处理actionPackages参数

5.Someone会调用ClasspathConfigurationProvider的loadpackages方法

6.Loadpackages会首先利用ResolverUtil从所列package(就是actionPackages参数的值)中找到所有实现了Action接口和名字带有Action后缀的类,然后这些类会集中放入一个Set集合中,然后这个Set中的每个类都会被传递给processActionClass方法

7.processActionClass首先确定命名空间,然后捕捉任何ParentPackage和Results类型的Annotation,接着创建一个ActionConfig,设置action name,package name以及results。

步骤7获取action名字的规则是这样的:将action name从任何“Action”后缀前面截取掉,如果action name含有“/”的话,那么将最后一个“/”后面的第一个字母变为小写。还是举例来进行说明吧:

如果我们的actionPackages参数是com.myapp.actions,我们的Action类是com.myapp.actions.member.EditAction,那么我们可以通过下面的url来访问这个类:http://server/myapp/member/edit.action .也就是子包(subpackage)将成为namespace,而action类名将成为action name。如果类名有一个“Action”后缀,那么它将被去掉。

至此我们就实现我们的“0配置”了,^_^,Annotation在其中还是扮演着非常重要的作用的,除了我们前面已提到的Result Annotation这个Action Annotations外,还有Interceptor Annotations、Validation Annotations和Type Conversion Annotations,因为项目中基本上没有用到这个新特性,我也就没有深入的看这些Annotations的详细使用方法了。

from:http://blog.csdn.net/cmtobby/archive/2007/09/02/1769390.aspx
分享到:
评论

相关推荐

    struts2 使用Annotation 配置的小例子

    在实际开发中,使用Annotation配置Struts2可以使代码更加简洁,更易于理解和维护。然而,也需要注意,完全依赖Annotation可能导致配置过于分散,对于大型项目来说,可能更倾向于混合使用XML和Annotation以达到最佳的...

    Struts2之Annotation注解配置使用案例struts013

    在Struts2中,Annotation注解的引入为开发者提供了更加灵活和便捷的配置方式,使得无需在XML配置文件中进行繁琐的设置,可以直接在类或方法上通过注解来进行配置。本文将深入探讨Struts2中的Annotation配置,以及...

    在嵌入式jetty环境下运行struts2Annotation项目

    3. **Struts2 Annotation**:这是Struts2的一个特性,允许使用注解(如`@Action`、`@Result`等)来配置Action类和结果映射,替代传统的XML配置文件。 接下来,我们将探讨如何在Jetty中运行使用Struts2 Annotation的...

    struts2annotation json

    在Struts2中,注解的引入使得开发者可以实现零配置的编程,提高了开发效率和代码的可读性。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,广泛用于前后端数据传输。在Struts2中,通过集成JSON...

    struts2 hibernate3 spring2.5 annotation 整合

    文件Spring_3300_Registration_11可能是一个示例项目,包含了上述整合的实例,包括Action、Service、DAO、配置文件等,开发者可以通过学习和运行这个项目来理解和实践Struts2、Hibernate3、Spring2.5的整合以及注解...

    struts2-Annotation

    在给定的“struts2-Annotation”主题中,重点是Struts2框架如何利用注解(Annotation)来增强其功能和简化配置。注解是一种元数据,可以在代码中嵌入,提供有关类、方法或字段的额外信息,而无需编写XML配置文件。 ...

    struts零配置HelloWorld-Annotation

    在“struts零配置HelloWorld-Annotation”这个项目中,我们将重点探讨如何利用注解来实现Struts2框架的配置,这对于初学者来说是一个很好的起点。 在传统的Struts2配置中,我们需要在`struts.xml`文件中手动定义每...

    Struts2零配置

    Struts2零配置是Struts2框架的一种简化配置方式,旨在减少XML配置文件的使用,提高开发效率。在传统的Struts2应用中,开发者需要在多个XML文件中配置Action、结果页面、拦截器等,而“零配置”则是对这种繁琐配置的...

    struts annotation Hello World

    通过这个"struts annotation Hello World"的学习,你可以掌握如何在Struts 2中使用注解来简化开发流程,同时也能对MVC架构有一个基本的理解。进一步研究Struts 2的其他注解和特性,将有助于构建更高效、更易于维护的...

    struts2 interceptor annotation plugin

    而"struts2 interceptor annotation plugin"则是Struts2框架提供的一种使用注解来配置拦截器的方式,这种方式更加简洁、直观,减少了XML配置文件的复杂性。 注解(Annotation)是Java编程语言的一个重要特性,它...

    struts2 使用注解现在零配置不需要在使用struts.xml配置文件,可以直接跑

    在Struts2中,注解的引入使得开发者可以摆脱繁琐的`struts.xml`配置文件,实现“零配置”运行。 首先,让我们了解什么是注解(Annotation)。注解是Java提供的一种元数据机制,允许在源代码中嵌入信息,这些信息...

    Struts2使用Annotation返回Json

    在Struts2中,使用注解(Annotation)可以简化配置,提高开发效率。本篇文章将深入探讨如何在Struts2中通过注解实现返回JSON数据的功能。 首先,让我们理解JSON(JavaScript Object Notation)是一种轻量级的数据...

    struts2利用注解annotation实现文件下载

    ### Struts2 使用注解(Annotation)实现文件下载 在Web开发中,文件上传与下载是常见的需求之一。Struts2框架提供了强大的功能来支持这一需求。本文将详细介绍如何使用Struts2框架结合注解(Annotation)的方式...

    struts配置大全(1、2全)

    本资料“struts配置大全(1、2全)”涵盖了Struts 1和Struts 2两个版本的核心配置,以及与Spring MVC的整合配置,旨在帮助开发者深入理解并熟练掌握Struts框架的配置方法。 **Struts 1配置** Struts 1的配置主要集中...

    struts2 annotation 批量下载

    在Struts2框架中,使用注解(Annotation)可以极大地简化控制器类的配置,提高代码的可读性和维护性。本文将深入探讨如何利用Struts2的注解功能实现批量下载功能,并通过创建临时文件来处理下载请求,同时确保在下载...

    struts annotation.ppt

    Struts2注解是Java开发框架Struts2中的一种特性,它引入了JDK1.5及更高版本的注解(Annotation)概念,使得开发者能够更简洁地配置Struts2框架,减少XML配置文件的使用,提高开发效率。注解提供了一种方式,将元数据...

    struts2 Annotation 版本学习心得与例子

    Struts2的“零配置”特性是Struts2的新功能,可能会出现一些小Bug,所以企业开发者请慎重使用该特性, Struts2的“零配置”特性由struts2-codebehind-plugin-2.1.2.jar插件支持,使用时记得将其拷入WEB-INF/lib下; ...

    struts2大部分知识点学习(annotation版)

    在这个“struts2大部分知识点学习(annotation版)”中,我们将聚焦于使用注解(Annotation)来配置Struts2的应用,而不是传统的XML配置方式。注解在现代Java开发中扮演着重要角色,它们提供了更简洁、更直观的代码...

Global site tag (gtag.js) - Google Analytics