若浮云,若秋水,渺渺兮,何所歸
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆-4 評(píng)論-14 文章-0 trackbacks-0
EasyJWeb注解的使用——簡(jiǎn)化Action層的開發(fā)
EasyJWeb中提供了一些注解,可以給開發(fā)帶來很多方便。這些注解包括有數(shù)據(jù)驗(yàn)證用的@FormPO、@Validator等;IOC注入用的@Inject、@InjectDisable等;action配置用的@Action等。
今天我們來說說action配置時(shí)要用的注解@Action,使用這些注解可以大量減少配置文件的編寫。
首先,我們來看看不使用這些注解的時(shí)候是怎么做的,以一個(gè)hello world程序?yàn)槔?br /> 首先是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實(shí)現(xiàn):
public
class
HelloServiceImpl
implements
IHelloService
{
public
String sayHello()
{
return
"
hello
"
;
}
}
如果要使這個(gè)程序正常運(yùn)行,我們還需要配置service和action,easyjweb中默認(rèn)集成spring,service是在spring的配置文件中配置:
<
bean
id
="helloService"
class
="com.hello.service.impl.HelloServiceImpl"
>
</
bean
>
現(xiàn)在來配置action,在easyjweb的配置文件中這樣配置:
<
module
name
="hello"
path
="/hello"
form
=""
scope
="request"
action
="com.hello.mvc.HelloAction"
defaultPage
="list"
inject
="byType"
>
</
module
>
這里說說這個(gè)inject="byType",這樣配置之后在HelloAction中的屬性會(huì)自動(dòng)根據(jù)類型來注入。inject還有byName等屬性,意思就是根據(jù)名字來注入。如果這里不加這個(gè)inject,那么配置文件就應(yīng)該是這樣寫:
<
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屬性對(duì)應(yīng)HelloAction中的service,名字要保持一致。ref對(duì)應(yīng)上面在spring中配置的helloService的id。
到這里,這個(gè)程序就可以運(yùn)行了。
一個(gè)簡(jiǎn)單的hello程序就用了這么多配置文件,這讓人難以忍受。現(xiàn)在我們就來說說怎么使用EasyJWeb的注解來簡(jiǎn)化配置。
我們修改一下HelloAction的代碼,給這個(gè)類加上一個(gè)@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了,當(dāng)使用hello.ejf訪問的時(shí)候框架會(huì)自動(dòng)把請(qǐng)求交給HelloAction處理。
現(xiàn)在來簡(jiǎn)單介紹一下@Action這個(gè)注解。
@Action的各個(gè)屬性說明如下:
name用來指Action的名稱,也是在容器中的Bean名稱,我們一般不使用這個(gè)屬性。
path用來指定模塊的path值,也即所映射的url,如果不設(shè)值該值將會(huì)按照缺省的方式處理。
alias用來指定這個(gè)模塊的path別名,也就是可以使用其它的一個(gè)或多個(gè)名稱來訪問這個(gè)模塊。
inject用來指定Action中所有業(yè)務(wù)組件注入方式,默認(rèn)值為按類型注入。如果為byName則表示按名稱注入,auto表示自動(dòng)按名稱或類別注入,none則表示不注入。
disInject用來標(biāo)識(shí)不自動(dòng)注入的屬性。
autoInject用來標(biāo)識(shí)允許自動(dòng)注入的屬性。
autoToken表示該模塊是否需要開取自動(dòng)防重復(fù)提交功能;
validate表示該模塊是否開取自動(dòng)驗(yàn)證功能,默認(rèn)情況不開啟自動(dòng)驗(yàn)證;
view表示該模板的視圖存放子目錄。
scope用來指定這個(gè)Action在容器中的創(chuàng)建方式及生命周期,默認(rèn)值為request,表示每次請(qǐng)求創(chuàng)建一次該對(duì)象,若為session則表示個(gè)用戶會(huì)話創(chuàng)建一個(gè)對(duì)象,若為singleton表示整個(gè)容器中只創(chuàng)建一次該實(shí)例。
messageResource表示多國語言屬性文件的存放子目錄。
通常我們只用到path、view、inject這幾個(gè)屬性,由于inject的默認(rèn)值為"AutoJnjectByType",是最常用的,因此通常也不需要顯式指定這個(gè)屬性值。而disInject是用來標(biāo)識(shí)不允許注入的屬性的,當(dāng)我們的action出現(xiàn)了一些不需要注入的屬性時(shí),如logger,我們就需要使用這個(gè)屬性來指定哪些是不需要注入的。autoToken則是標(biāo)識(shí)是否開啟防重復(fù)提交功能的。
posted on 2007-12-28 13:36
天 一
閱讀(1206)
評(píng)論(0)
編輯
收藏
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
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
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2008年4月 (1)
2008年1月 (2)
2007年12月 (1)
搜索
最新評(píng)論
1.?re: 基于Struts2+Spring+JPA的添刪改查示例[未登錄]
可能是會(huì)有問題,我沒有做很多測(cè)試,畢竟只是一個(gè)簡(jiǎn)單的示例,呵呵!
--天一
2.?re: 基于Struts2+Spring+JPA的添刪改查示例
我部署了一下,連續(xù)刪除會(huì)出現(xiàn)錯(cuò)誤,
增加留言時(shí)第一次是增加,后面幾次就成了編輯,
不知道是什么原因
--dna
3.?re: 基于Struts2+Spring+JPA的添刪改查示例
http://www.bt285.cn
BT285.cn 我這個(gè)BT網(wǎng)站也是用這個(gè)技術(shù)的說.
--王能
4.?re: 基于Struts2+Spring+JPA的添刪改查示例
一般就是這樣用的
--super2
5.?re: 基于Struts2+Spring+JPA的添刪改查示例
簡(jiǎn)單的應(yīng)用,就省了。
--天 一
閱讀排行榜
1.?基于Struts2+Spring+JPA的添刪改查示例(3147)
2.?EasyJWeb結(jié)合Ext的一個(gè)全新的Ajax示例(1430)
3.?一個(gè)基于ajax的聊天室示例應(yīng)用(1326)
4.?EasyJWeb注解的使用——簡(jiǎn)化Action層的開發(fā)(1206)
評(píng)論排行榜
1.?EasyJWeb結(jié)合Ext的一個(gè)全新的Ajax示例(7)
2.?基于Struts2+Spring+JPA的添刪改查示例(6)
3.?一個(gè)基于ajax的聊天室示例應(yīng)用(1)
4.?EasyJWeb注解的使用——簡(jiǎn)化Action層的開發(fā)(0)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 天 一
主站蜘蛛池模板:
瓮安县
|
曲周县
|
遵义市
|
泾川县
|
桃园市
|
两当县
|
绥阳县
|
修水县
|
洛南县
|
星子县
|
崇礼县
|
泰宁县
|
新和县
|
江阴市
|
射洪县
|
麦盖提县
|
故城县
|
广汉市
|
万山特区
|
安塞县
|
兴安盟
|
沈丘县
|
江永县
|
阳信县
|
资兴市
|
阳东县
|
东山县
|
新乐市
|
江达县
|
青川县
|
奉化市
|
措勤县
|
云和县
|
镶黄旗
|
鹰潭市
|
平果县
|
肃南
|
新乡县
|
蒙自县
|
察隅县
|
卢龙县
|