Struts2中的零配置
二、零配置
首先要澄清一点,这里说的零配置并不是一点配置都没有,只是说配置很少而已。
Struts2(我只用过Struts 2.0.6和2.0.9,不清楚其它版本是否支持零配置)引入了零配置的新特性,元数据可以通过规则和注解来表达:A "Zero Configuration" Struts application or plugin uses no additional XML or properties files. Metadata is expressed through convention and annotation.
目前,这个新特性还在测试阶段,但经过一段时间的使用,我觉得这个特性已经可用。下面我讲一下如何使用它。
1. Actions的定位
以前需要在xml配置文件中配置Action的name和class,如果使用零配置,所带来的一个问题就是如何定位这些Action。我们需要在 web.xml中找到struts2的filter的配置,增加一个名为actionPackages的init-param,它的值是一个以逗号分隔的 Java包名列表,比如:demo.actions1,demo.actions2。struts2将会扫描这些包(包括这些包下边的子包),在这些包下,所有实现了Action接口的或者是类名以“Action”结尾的类都会被检查到,并被当做Action。
以前,我们写Action必须要实现Action接口或者继承ActionSupport。但是,上面提到的类名以"Action"结尾的类并不需要这样做,它可以是一个POJO,Struts2支持POJO Action!
下面是actionPackages的配置示例:
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>demo.actions1,demo.actions2</param-value>
</init-param>
</filter>
2. 示例
现在我们建立demo.actions1.app.person和demo.actions2.app.group两个包,在 demo.actions1.app.person包下建立ListPeopleAction.java,在 demo.actions2.app.group下建立ListGroupAction.java。作为示例,这两个类只是包含一个execute方法,返回"success"或"error",其它什么都不做:
java 代码
public String execute() {
return "success";
}
在Filter的配置中,我指定actionPackages为demo.actions1,demo.actions2,当系统启动时,Struts2 就会在这两个包下扫描到demo.actions1.app.person.ListPeopleAction和 demo.actions2.app.group.ListGroupAction。
3. Action and Package name
Struts2扫描到Action后,从actionPackages指定的包开始,子包名会成为这个Action的namespace,而Action 的name则由这个Action的类名决定。将类名首字母小写,如果类名以Action结尾,则去掉"Action"后缀,形成的名字就是这个 Action的名字。在如上所述的示例中,actionPackages指定为demo.actions1,demo.actions2,那么你可以这样访问demo.actions1.app.person.ListPeopleAction:
http://localhost:8080/app/person/listPeople
4. Results
Struts2是通过"Result"和"Results"两个类级别的annotations来指定Results的。
作为示例,我们在webapp目录下建两个html文件:success.html和error.html,随便写点什么内容都可以。现在假设我们访问 /app/person/listPeople时,或Action返回success就转到success.html页面,若是error就转到 error.html页面,这只需要在ListPeopleAction类上加上一段注解就可以了:
java 代码
@Results({
@Result(name="success", type=NullResult.class, value = "/success.html", params = {}),
@Result(name="error", type=NullResult.class, value = "/error.html", params = {})
})
public class ListPeopleAction {
public String execute() {
return "success";
}
}
同上,我们给ListGroupAction也加上注解。
现在,我们已经完成了一个零配置的示例。我们并没有在xml文件里配置ListPeopleAction和ListGroupAction,但它们已经可以工作了!
用Eclipse运行RunJetty,然后用浏览器访问http://localhost:8080/app/person/listPeople和 http://localhost:8080/app/group/listGroup看看,是不是正是success.html(或 error.html)的内容?
5. Namespaces
如上所述,namespace由包名所形成,但我们可以使用"Namespace"注解来自己指定namespace。
6. Parent Package
这个配置用得较少。Struts2提供一个"ParentPackage"注解来标识Action应该是属于哪个package。
分享到:
相关推荐
STRUTS2 Convention 零配置是Struts2框架中的一种高级特性,旨在简化应用程序的配置,让开发者能够更快地构建MVC应用。从Struts2.1版本开始,推荐使用Convention插件替代Codebehind插件,因为它更加自动化,几乎无需...
在传统的Struts2应用中,开发者需要在多个XML文件中配置Action、结果页面、拦截器等,而“零配置”则是对这种繁琐配置的优化。 **一、Struts2框架基础** Struts2是一个基于MVC(Model-View-Controller)设计模式的...
"Struts2 零配置"是Struts2的一种特性,允许开发者在不编写大量XML配置文件的情况下,快速搭建和运行应用程序。这主要得益于Struts2的插件机制和注解支持。 首先,Struts2的零配置主要依赖于以下两个核心概念: 1....
本文将详细介绍Struts2中的两个插件——Zero Config(零配置)与CodeBehind,以及它们如何共同工作以减少配置文件的复杂度。 #### 二、Zero Config插件介绍 Zero Config插件的主要目的是减少甚至消除`struts.xml`...
"Struts2零配置"是Struts2框架中的一个重要特性,旨在提高开发效率,减少繁琐的XML配置工作。这个特性允许开发者在不编写大量XML配置文件的情况下,依然能实现应用的正常运行。 在传统的Struts2应用中,开发者需要...
在Struts2中,FreeMarker模板作为视图层,用于渲染控制器处理后传递的数据。FreeMarker模板语言简洁且强大,可以动态地将数据模型与HTML模板结合,生成最终的网页。开发者可以通过 `${}` 符号来引用数据模型中的变量...
### Struts2零配置个人整理文档 #### 一、Convention插件详解 ##### 1. 设置结果页面路径 - **背景介绍**:Struts2框架提供了便捷的方式来处理Web请求,并返回响应视图。为了简化配置过程,Struts2提供了一个名为...
### STRUTS2 Convention零配置概述 Struts2框架自2.1版本开始引入了一种新的零配置方式——Convention插件。与之前的Codebehind插件不同,Convention插件更加彻底地摆脱了对配置文件的需求,包括struts.xml以及...
在Struts2中,零配置的概念意味着尽量减少或避免手动编写XML配置文件,以提高开发效率和减少出错的可能性。`Convetion`插件是Struts2实现零配置的核心工具,它基于“约定优于配置”的原则工作。 ### 1. Convention ...
在Struts2中,注解的引入使得开发者可以摆脱繁琐的`struts.xml`配置文件,实现“零配置”运行。 首先,让我们了解什么是注解(Annotation)。注解是Java提供的一种元数据机制,允许在源代码中嵌入信息,这些信息...
在Struts2中,你可以创建一个简单的Action类,比如`HelloWorldAction`,并使用注解`@.struts2 annotations`来指定执行方法和结果页面。例如: ```java import com.opensymphony.xwork2.ActionSupport; public ...
然而,随着版本的更新,Struts2引入了一个名为Convention Plugin的新特性,旨在简化配置过程,实现所谓的“零配置”开发。 **什么是Struts2 Convention Plugin?** Convention Plugin是Struts2的一个插件,它基于...
从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用struts.xml文件进行...
该项目主要是struts2.3的零配置,里面包含两个action,下载后导入myeclipse后,部署后。可以直接访问http://localhost:8080/struts2/abc.action、login.action\login1.action。这里的返回值是以json方式返回。
在这个"struts2.1.6零配置DEMO"中,我们将深入探讨如何在不使用XML配置文件的情况下搭建一个简单的Struts2应用。 首先,Struts2的核心是Action类,它是处理用户请求的中心。在传统的Struts2应用中,我们通常会在...
在Struts2的版本2.3.1中,引入了一种称为“零配置”的特性,它极大地简化了应用程序的配置过程,使得开发者可以更快地进行开发而无需编写大量的XML配置文件。 "Struts2231零配置"意味着开发者可以不再需要像以前...
本文将深入探讨Struts2中的常量配置,包括基本的XML配置以及零配置的Convention模式下的常量设定。 首先,让我们了解Struts2框架中的常量配置。这些常量定义在`struts-default.xml`和`struts-plugin.xml`等配置文件...
总结来说,"零配置spring 整合cxf、struts2"是一个旨在减少XML配置,通过注解驱动实现Spring、CXF和Struts2无缝集成的实践。通过这种方式,开发者可以专注于业务逻辑,提高开发效率,同时降低维护成本。在实际开发中...