若浮云,若秋水,渺渺兮,何所归
BlogJava
首页
新随笔
联系
聚合
管理
随笔-4 评论-14 文章-0 trackbacks-0
EasyJWeb注解的使用——简化Action层的开发
EasyJWeb中提供了一些注解,可以给开发带来很多方便。这些注解包括有数据验证用的@FormPO、@Validator等;IOC注入用的@Inject、@InjectDisable等;action配置用的@Action等。
今天我们来说说action配置时要用的注解@Action,使用这些注解可以大量减少配置文件的编写。
首先,我们来看看不使用这些注解的时候是怎么做的,以一个hello world程序为例。
首先是action:
public
class
HelloAction
extends
AbstractCmdAction
{
private
IHelloService servie;
public
IHelloService setService(IHelloService service)
{
this
.service
=
service;
}
public
Page doHello(WebForm form, Module module)
{
System.out.println(service.sayHello());
return
null
;
}
}
service:
public
interface
IHelloService
{
String sayHello();
}
service实现:
public
class
HelloServiceImpl
implements
IHelloService
{
public
String sayHello()
{
return
"
hello
"
;
}
}
如果要使这个程序正常运行,我们还需要配置service和action,easyjweb中默认集成spring,service是在spring的配置文件中配置:
<
bean
id
="helloService"
class
="com.hello.service.impl.HelloServiceImpl"
>
</
bean
>
现在来配置action,在easyjweb的配置文件中这样配置:
<
module
name
="hello"
path
="/hello"
form
=""
scope
="request"
action
="com.hello.mvc.HelloAction"
defaultPage
="list"
inject
="byType"
>
</
module
>
这里说说这个inject="byType",这样配置之后在HelloAction中的属性会自动根据类型来注入。inject还有byName等属性,意思就是根据名字来注入。如果这里不加这个inject,那么配置文件就应该是这样写:
<
module
name
="hello"
path
="/hello"
form
=""
scope
="request"
action
="com.hello.mvc.HelloAction"
defaultPage
="list"
inject
="byType"
>
<
property
name
="service"
ref
="helloService"
/>
</
module
>
property的name属性对应HelloAction中的service,名字要保持一致。ref对应上面在spring中配置的helloService的id。
到这里,这个程序就可以运行了。
一个简单的hello程序就用了这么多配置文件,这让人难以忍受。现在我们就来说说怎么使用EasyJWeb的注解来简化配置。
我们修改一下HelloAction的代码,给这个类加上一个@Action注解:
@Action(path
=
"
hello
"
)
public
class
HelloAction
extends
AbstractCmdAction
{
private
IHelloService servie;
public
IHelloService setService(IHelloService service)
{
this
.service
=
service;
}
public
Page doHello(WebForm form, Module module)
{
System.out.println(service.sayHello());
return
null
;
}
}
这样一来,我们就不需要easyjweb中配置的module了,当使用hello.ejf访问的时候框架会自动把请求交给HelloAction处理。
现在来简单介绍一下@Action这个注解。
@Action的各个属性说明如下:
name用来指Action的名称,也是在容器中的Bean名称,我们一般不使用这个属性。
path用来指定模块的path值,也即所映射的url,如果不设值该值将会按照缺省的方式处理。
alias用来指定这个模块的path别名,也就是可以使用其它的一个或多个名称来访问这个模块。
inject用来指定Action中所有业务组件注入方式,默认值为按类型注入。如果为byName则表示按名称注入,auto表示自动按名称或类别注入,none则表示不注入。
disInject用来标识不自动注入的属性。
autoInject用来标识允许自动注入的属性。
autoToken表示该模块是否需要开取自动防重复提交功能;
validate表示该模块是否开取自动验证功能,默认情况不开启自动验证;
view表示该模板的视图存放子目录。
scope用来指定这个Action在容器中的创建方式及生命周期,默认值为request,表示每次请求创建一次该对象,若为session则表示个用户会话创建一个对象,若为singleton表示整个容器中只创建一次该实例。
messageResource表示多国语言属性文件的存放子目录。
通常我们只用到path、view、inject这几个属性,由于inject的默认值为"AutoJnjectByType",是最常用的,因此通常也不需要显式指定这个属性值。而disInject是用来标识不允许注入的属性的,当我们的action出现了一些不需要注入的属性时,如logger,我们就需要使用这个属性来指定哪些是不需要注入的。autoToken则是标识是否开启防重复提交功能的。
posted on 2007-12-28 13:36
天 一
阅读(1185)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
<
2007年12月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔档案
2008年4月 (1)
2008年1月 (2)
2007年12月 (1)
搜索
最新评论
1. re: 基于Struts2+Spring+JPA的添删改查示例[未登录]
可能是会有问题,我没有做很多测试,毕竟只是一个简单的示例,呵呵!
--天一
2. re: 基于Struts2+Spring+JPA的添删改查示例
我部署了一下,连续删除会出现错误,
增加留言时第一次是增加,后面几次就成了编辑,
不知道是什么原因
--dna
3. re: 基于Struts2+Spring+JPA的添删改查示例
http://www.bt285.cn
BT285.cn 我这个BT网站也是用这个技术的说.
--王能
4. re: 基于Struts2+Spring+JPA的添删改查示例
一般就是这样用的
--super2
5. re: 基于Struts2+Spring+JPA的添删改查示例
简单的应用,就省了。
--天 一
阅读排行榜
1. 基于Struts2+Spring+JPA的添删改查示例(3129)
2. EasyJWeb结合Ext的一个全新的Ajax示例(1411)
3. 一个基于ajax的聊天室示例应用(1307)
4. EasyJWeb注解的使用——简化Action层的开发(1185)
评论排行榜
1. EasyJWeb结合Ext的一个全新的Ajax示例(7)
2. 基于Struts2+Spring+JPA的添删改查示例(6)
3. 一个基于ajax的聊天室示例应用(1)
4. EasyJWeb注解的使用——简化Action层的开发(0)