Work hard

[原创]Struts2与Guice整合

上一篇 / 下一篇  2008-05-18 20:07:42 / 个人分类:Web Framework

查看( 28 ) / 评论( 4 )
Guice是一个IoC的框架,传说中它的速度比Spring100倍,很欣赏它无需配置只需注解就可以使用。
2S~"R'v3o!y;{0Struts2Guice整合需要Guice的插件guice-struts2-plugin-1.0.1.jar以及guice相关的jar包。下面是整个项目所需要的jar海岸线网络聚合$\+KKv1B/Su
海岸线网络聚合,f Xon(R.i8o)L/b

'f2C0n1s)K011.jpg

&ZQ+N5t)d(X0
8[?aN4R2s0海岸线网络聚合5vaMs?Y,Bu&M}:f
第一步,配置在web.xmlStruts2以及Guicefilter
/Ht D B#bY2C!mq~0


I"w8rh`-?"y"A0
<filter>

f&Y&D {~F0 海岸线网络聚合;|BA[g:H~

^^%B QVY0


7@5wvED L)vg0
<filter-name>guice</filter-name>

6p m*}"f*P0

9[V2NUj[zv0海岸线网络聚合zU]9O`4s:Fx};d

海岸线网络聚合7T ?!GM1sv*u)V#S5B
<filter-class>

OC;`VU|w0 海岸线网络聚合 a8i9a3Ud

*|(G/DPe SA0

海岸线网络聚合)U$DLLbu+IU
com.google.inject.servlet.GuiceFilter
海岸线网络聚合7F$GR,`)g1y

海岸线网络聚合gup.G Ba7l X t&~

海岸线网络聚合!afJ^l'B tm8p`+x

海岸线网络聚合@0z i&P;L T:RO
</filter-class>

Rq }"{ctEu Ua0 海岸线网络聚合3GU5~-U]$@b

~fc8Cy8s??0

海岸线网络聚合N:c3TA!H4Z^f&l
</filter>

*U3Su%C8@%d`*^0 海岸线网络聚合s3ch ~R2F

海岸线网络聚合 VA#Zv/B5j FD

海岸线网络聚合4z)E.v5fU*T

海岸线网络聚合k;AQO:\U QK

;vo'f8y)f `~\0


;tK w-VQ|l0
<filter>

'Th D3?b&M}8Q9pa0

]:zL|&m9D(?#G"i0海岸线网络聚合,F:dGy,B F

海岸线网络聚合-C E^,qxW F
<filter-name>struts</filter-name>

nHN9e(A2@J-n2h0

f1C qh?2t3`-?0海岸线网络聚合'X _#mq'bR


y"a{ ZkC^0
<filter-class>海岸线网络聚合vx#?9tCD'qCLh4U

海岸线网络聚合)QX1W+q.sQ

海岸线网络聚合2a:k/U B^![

海岸线网络聚合&O6r"g,^{Tu'R:z
org.apache.struts2.dispatcher.FilterDispatcher
海岸线网络聚合/zTI(\3Nt4uqGa

Q+T"wI6Y3f3u0O0t0海岸线网络聚合a D-k?vH!o{


%| @ A/R ?"Qh0
</filter-class>

9O*C;NJa{g%|0 海岸线网络聚合;]p ?0b | t UD

D!@'i*st {0


} Q(N,V#Om\0
</filter>海岸线网络聚合7S,j` | M@(N~o

海岸线网络聚合0B-E.AtG*vF U@

海岸线网络聚合c%JVD$dIv

q]i Sl pb[0 海岸线网络聚合Nkj f;d

海岸线网络聚合2?4qS?[M|J-@

海岸线网络聚合;^:L?hr+g
<filter-mapping>

7?{ _-\ W#e1dn~0 海岸线网络聚合&C|6q|I&L9^K#knH

b*Ey d7JN*U7M\"lS,\0


f?7J-u!W6x'x8G0
<filter-name>guice</filter-name>

!GKKbz`L m0

/o{PH;L0海岸线网络聚合/Dh] z py] i3l


Q S+kf6g6w8V0
<url-pattern>/*</url-pattern>海岸线网络聚合J3Sn"V-TAu-Cg7m;cj

海岸线网络聚合 |PE}(@w@,E@

~1T#F u~T0


6af:U;M&j[ t6m a0
</filter-mapping>

n/kz%TFz5@S0

t;e;`TFY!I0

KK0|']6wuej0

#g QC\6^d0

6U(o$MvL av-K0海岸线网络聚合 g5SV6Q3Ka Kw+v

海岸线网络聚合GK#db#B'z-ikK M
<filter-mapping>海岸线网络聚合3mS*yY!\2`QjA

5g!\3R/n!@k0海岸线网络聚合vDE!gF(MY


$r-?:?'p1I0
<filter-name>struts</filter-name>

3Vpc zkM0

W"r8pP4DhaN0

\E&c"lG4S0


w~Xfv A,o#LHY0
<url-pattern>/*</url-pattern>

K]0}1g:a&E(Z`0

.`s!L5K?'O0海岸线网络聚合Au%G x/x


h*yH;UM*n(B-ro0
</filter-mapping>海岸线网络聚合s1AZv4BN*~

m J,Wp;z!Om"Q;h0海岸线网络聚合-@;q R V$Au8U `
海岸线网络聚合v&nc?7Q\$D

&bW k0K(W4])`0第二步,建立一个Service的接口:MyService海岸线网络聚合s,JF8S q\ ]0x

import com.google.inject.ImplementedBy;

#nCeH-h0

[ |1b1?6jO2z0

u2rC6FC I0

import com.hopeteam.service.impl.MyServiceImpl;

5{,zWZ myu6D'H~![0A0

v@+o9Zb eV q0

j z:~6EUf1G0

海岸线网络聚合J4yc m~'p {

MmfZ~ FZ m0海岸线网络聚合1Y*\+e ?Sh1\'l

/*海岸线网络聚合r'C)MM!z5mE

1N.kN y#Y?D0

_e\D j}}%k-v[0

海岸线网络聚合8[|OVt5t'`S.Wb
*
采用annotation进行接口与实现类之间的绑定海岸线网络聚合xC ?"EM`

d` _3_9H*T0

?\i;{u)e Z G0

海岸线网络聚合 hdo@0l8szA
*
接口与实现类之间绑定是必须的海岸线网络聚合.fR \E0]:[

&Q |P5o7LF0

i mqNB X Y1K `0


[,aI~KC#[o0*
海岸线网络聚合 IDN] ]1h,H%Y

海岸线网络聚合 T&n TsXR?_7H

3|M-NyOkh.C0


&F8j^;M#No0*/
海岸线网络聚合(xW#zJj-C%t

A-_(Y8q&}?0

T6}t} C6e0

海岸线网络聚合D4a V,y)ph

海岸线网络聚合"upLDJ

海岸线网络聚合:[no O7}iLe

@ImplementedBy(MyServiceImpl.class)

LV;l9knB0 海岸线网络聚合k_{:d%TZ7nN Eh

5}d pR t%v$Y[-dE0

public
Fxs(en&u0interface MyService {

v Yb(wVqDc4YxRi0 海岸线网络聚合(s B9O*j_#Km1L v"v

海岸线网络聚合q;eO5c E_


D&s X2qbU0
boolean valid(String username,String password);海岸线网络聚合ML0_2d;{'K9c#~

{yJ,z j-\ oU1S;J)H?0

8ad3nC/oK0

}

~c6V*k(K2J7H6C"b0 海岸线网络聚合rG5Pd kWKM7?

r){#\!T)p1|0
+a0V'ux:mUSj`+A0第三步,创建Service的实现类:MyServiceImpl
ci pH4zs$C0

import com.google.inject.Singleton;

9{ Fo sq,V?0 海岸线网络聚合g*`~m0`'@&H

海岸线网络聚合3e7Kh9z-a}

import com.hopeteam.service.MyService;海岸线网络聚合x5b2^ ^` Pf e/X

海岸线网络聚合ZNU_1a Q@

7g1OEzd Y f0

海岸线网络聚合7W_2S(`d@E-D

8A{H"y H&Y(X'jK"n0海岸线网络聚合a q1s$?A!YJ+e6j

/*海岸线网络聚合~2R5Qx!hY1\T

wT5Rx5Sv0海岸线网络聚合g'~d6k5J5S8Kg2F

* 我们用@Singleton来标注它

-eJ)PV Oo4G0

Oy&FZ Dgg0

/v,U&@,ME8V0


2kB2C;r){ h|0]j fxJ0*

Gn3Z }OM0 海岸线网络聚合 `1_]ez9B#sip

海岸线网络聚合]f5V]!e

*/

};xO~_m-}8O0 海岸线网络聚合eDe.uG o

海岸线网络聚合/Bm0AS b%kh

N%M/K^ ]0 海岸线网络聚合u;GBM*C#YQ

海岸线网络聚合%jq@.YY%oNt

@Singleton

[k;{S2_w cB7G0

t!t;B$n[)e~x4u?be0

7pzA2a&?gR;\q A0

public海岸线网络聚合X#Yb(\bO-R dgn?lv
class MyServiceImpl implements MyService{海岸线网络聚合#m;x0gG1K9i4Sj%m

4b^3BA Ee6W0海岸线网络聚合]vN3n3jo{

海岸线网络聚合;Zd*p F y!P|}W*b,dd
public
.}*]VR{B-K7L0boolean valid(String username,String password)

HC1iFe0lq0 海岸线网络聚合yC)jw,ep(v{~J

}~6deXR0

海岸线网络聚合 J?Y8z.v;M3| [\
{
海岸线网络聚合3_;Z+gIK }L

海岸线网络聚合Q5Ha2{dGSI

t*B+Up#\W ?1R0

海岸线网络聚合tz3~,ooW
if(username.equals("fengzhizi")

J$S'_"{6G1bf0

-^4K8{B"DJ0

m.HPW`.b!{"c0

海岸线网络聚合\ dn+O`6e,AkY\
&& password.equals(
"123456"))

t G2YSp9d H]0

|\ ct W^'\x8I@0海岸线网络聚合 h&bNF!{-W&x


i(q6})q Vf0
return海岸线网络聚合$?!BzO['usU |
true;

n`U_0] ]*n0

|6R#cWd*ZP"` t0海岸线网络聚合j A{"X(h

海岸线网络聚合hMD:W4Fl'v8y
else海岸线网络聚合p$A+|:X5V#RH

海岸线网络聚合V|8Jb@0J

G4K)v0Y U`;c-Q0

海岸线网络聚合sK3E5n,p\
return海岸线网络聚合!K.id-qX0d
false;

,YM%{)_{Abtt0 海岸线网络聚合 P'y4K:Vm

&pH_C`!sm UZ0

海岸线网络聚合8uCS&S!z"Pn c
}

z?'\Q V[`L0 海岸线网络聚合4yZBQm[R e3_ {

[VOJ]$V r}n{0

}

Is+P*]8b0 海岸线网络聚合l&? ~({y

6Nkh5xH3h0海岸线网络聚合J-KT.o,ie3dO
Guice通过Module来配置而不同于Spring框架通过xml进行配置。Guice通过绑定器Binder来传递我们的模块。一个绑定通常包含一个从接口到具体实现的映射
]'m+@!T%?7~ t0海岸线网络聚合d]P{Y!s~S
第四步,创建Module:MyModule海岸线网络聚合+qviKf.Z-Y/[T/E

import com.google.inject.Binder;海岸线网络聚合5m0L0|)z?9t

Tn O"v'|)i@;U+W0海岸线网络聚合 m5B"m['iGmL

import com.google.inject.Module;

a_D Yd0@w m9?n0

QU,D}^3a0海岸线网络聚合hVZV B2LY1A X Q

import com.google.inject.Scopes;

_MO,p&SXOJ0

I+p/g5}?y-F ]:]0

xZ'?!s(N%sZ0

import com.hopeteam.service.MyService;海岸线网络聚合S$a N%us2h_ u*b^.Y

海岸线网络聚合)whD.K5A_ d

海岸线网络聚合b:}{)L~6G CKT,Q6y{;e

import com.hopeteam.service.impl.MyServiceImpl;

Bg5i*@9eC$H5w0

"dMFC8_1@ CZ0

uT-P:S+}-v'P#`J%\0

海岸线网络聚合L bs:Ro^+DX3y'i

*js&J5cT})P0

)y,{e*?"F/S oK5^1X0

public
&l(yCIU9?%O+Y0class MyModule implements Module {

v)ore4c:qx v(Xl S0

6VeB f TB/d6L0

~ ` cd*X{ Gx-P1mb[0

{ \i F%c0 海岸线网络聚合Xt)?X#XMN

{4qJE8k+| MK%W0

海岸线网络聚合"s D~5ZI|+_$xC'I
public
CeH W4U$pBi/C)Os0void configure(Binder binder) {

"T/Mn7]m"J0 海岸线网络聚合,_CAW:P5w.^+\ R3|5V

&\P)khH,eL0

l6C*n%PT0

n1f3Z5ng5s Oa?0

p+E.CYHJ0

海岸线网络聚合2C(p(\.@a,I+L,C
/*

rX+L"W"c)oT{0 海岸线网络聚合4Mds0ZD(Q

海岸线网络聚合U;Z/hM)I


!x:~\.LNv-T)A0
sf1X4jE(?0*
将接口MyService 与其实现MyServiceImpl 绑定在一起海岸线网络聚合 Jn|5O U ua4R^
并且作用域为Scopes.SINGLETON

(j9o6Z4{ fllY:m)P0 海岸线网络聚合$qW2|$o.@3g?LzC#Z

0d$EO{,_$R@pm-}0


4@2v*SOo f0海岸线网络聚合0e3x S2eJ-B?
*
其中如果不配置作用域,默认就是类似于SpringScope="prototype"海岸线网络聚合"?%Q naVbq"mB

海岸线网络聚合&Q5e6| @x L:F

海岸线网络聚合)}$vV Y Z

海岸线网络聚合aC.?*^]Z|
海岸线网络聚合 K)P`.m9Hq%Ce6`
*/
海岸线网络聚合k:SG3\Vo

EF&qG:F$^ d*v+S-a0海岸线网络聚合l~-a|/u.C,o g6_(`tw/|

海岸线网络聚合8@xOn+Y{#Vy9G
binder.bind(MyService.
class).to(MyServiceImpl.class).in(海岸线网络聚合V&oy(]:Tk

海岸线网络聚合V ~$[`a-j"ddB

z4?.M&vq0


9NO5Dw:B YU%y#|0Scopes.
SINGLETON);

rQ'm2a!e/OJe9tQ0

x(P8kdX0

CS1Y }9_ {zA0

海岸线网络聚合~u"g_+R-KS
}

0E$[Y;Ey v0 海岸线网络聚合"r$X+Fwro fR2p

海岸线网络聚合#n sFr\rR9?

海岸线网络聚合+`+^9k\$I#ji]F:EO

z)] }&e\7~6Cny/O0海岸线网络聚合6~.m8Z%h1E hLz

}
rBlT Ri/|(|e+G%E l Z0海岸线网络聚合@-\0A;A2X-P-a*p
第五步,创建Action:LoginAction
?TrO}*I B{0

import com.google.inject.Inject;海岸线网络聚合.if!`4s7b jM

f6O_B"h0海岸线网络聚合%[n J9SZ}f:S

import com.hopeteam.service.MyService;海岸线网络聚合p F]Ejk9r

u(Y Js*r)[8g"j[ `T0海岸线网络聚合 SBR2]esR/H\

import com.opensymphony.xwork2.Action;海岸线网络聚合7He,AQq;t-K-[*}kw

海岸线网络聚合 cPG o#Y

9f{\4_JM ya0

9G Xl-X/N-z0

t%PDd E0

b i d9Ho8Zv0

public海岸线网络聚合 T,fwe)R3N9Uu
class LoginAction implements Action{

y h D*u/YO_0 海岸线网络聚合C#`fq)gz2m

u'EVn|^w+X"x)i[0


4M? |W7m,l z;[a0
private String username;

.djO-p2rl'g0

Jz?N&e"RB0海岸线网络聚合X9^k0ig8Q

海岸线网络聚合_.V`~5w6bp/i$\5s
private String password;海岸线网络聚合7Q;M/E6s oT1a~

A2U8Y7JN)SylEg/S Y0

7L ~6s D2x8A7a]0


r0P SAf8_0

hPx{Ke B0

Ro%w&`Spj0海岸线网络聚合 h"T)k4~2@Y

海岸线网络聚合+Vm"W,HGW'R^
private String tip;

RR(|8j7f?f6L0

i!WH8P W x0

t(g-Ij8E0f"];W0


NM.Z"}!B!y*R*S0

Z-@GE,h%hl0

&OoQ%CzLs0

2cY.O_'?RX0


R!UfV%m m,O!W0
/*

+^6sX@mP|0

7UMo/?2oX:TqUv f0

U+C ]+e-X0x:R0


;pB!F){.M"W,G0
MfH UK0*
通过field字段进行注入海岸线网络聚合"h-] \|l&r

海岸线网络聚合N5IB d$JJ

海岸线网络聚合o?9c*A/@;Da


~K|1pb'?'j/O2J0海岸线网络聚合9^;^VU6r;Y4@^
*/
海岸线网络聚合*a8WHB*Q0P4d"f%AU

I5U+H$T1p)V'E-I0海岸线网络聚合dC$MSu)Qv


D{Nu8?'M,k)v0
@Inject海岸线网络聚合qj$d@8w@}F

海岸线网络聚合3|)a5^6k/P1]0E:V

{ t2Wfn3|~L/l2Z0


NK@@J Y;B r0
private MyService ms;海岸线网络聚合 k2g*K!ZmIb

3`2q]9Z7\9zL/Ka#G0海岸线网络聚合1OM&bni5^ B K

J*cF?UH%U(ZT0 海岸线网络聚合n+w0F:i#Yr

m-C7`%[5^:[0


Y_2KJ3` s`?k:Q5_0
public String getUsername() {海岸线网络聚合2lwc:rO'~6A

ZY&H,C4r4rU0海岸线网络聚合Q5w/NYS/z


$w(| NnF-]M-p0
return海岸线网络聚合U#\Z~,GT%H0k
username;海岸线网络聚合7eF%P-a0v%k E0y'S g~[

海岸线网络聚合9H1c8AIKi"f

*TQL ZY i0

海岸线网络聚合 {%PYgu \*l P
}
海岸线网络聚合}y8_z0r3O}#mYw!p

B)[+?e#@#d-K0海岸线网络聚合+G)f^il&u+~9O q*c G

海岸线网络聚合'm-N,G3\'l7u1cI&p)S

海岸线网络聚合+}`1Uc9_&?H)Z

3JzdL'Q\ JMK4{0

海岸线网络聚合1l#Eo(X L3D+N"r
public海岸线网络聚合&\ p Y cpy@4Za
void setUsername(String username) {海岸线网络聚合p!mh*a_sl IuT

海岸线网络聚合(j:k2V_ u+kU.@

海岸线网络聚合Vv!ji"h0G-_L6@j:s


7Q,XW[#};U-K V7k0
this.username = username;

:f4]+t_.zz];_*C0

6?st!~ S@,L)}0

9WS$U1A_[ } t0


@6K ivLH!HlJ0}
海岸线网络聚合\\t2Akr+td

海岸线网络聚合6CW'n!J-zH9`

:l2J,b*C%z0Ypp.s0

海岸线网络聚合.sq8H"o.e)Q3pE

海岸线网络聚合W^`3c{6F Wx

G+t Zk-}Y`0


AK&^V1Q'~l#m0\)k0
public String getPassword() {

M EG3Q#[0J^4N0 海岸线网络聚合9i$t'x_x^L mw.F

*A_:g$K De7zAu0


&tom,ODF0
return
2z"t+ld m LO A `0password;海岸线网络聚合Dwy.B7x3r3vN

海岸线网络聚合qM[0?@{/s.cK

-r8IT|6g+JC+F0


"? x S*k$I4y'~%Lg,{1l0}

^ Z/y9`k6E0

'E\#C2[:Gl m_0

!A;_OL,U2N8Y|K"\x0

海岸线网络聚合 e4]sc(p,p

海岸线网络聚合#@#y8T1F}GJ

海岸线网络聚合e nA{"|!OZ&J


t3rS)pWS'l+G0
public海岸线网络聚合 Wm.DN7o;Y
void setPassword(String password) {海岸线网络聚合 ld!o:GxLW

海岸线网络聚合Z*KE5rD#X6S%a/^O-jh6N

海岸线网络聚合(dfA[t9y

海岸线网络聚合6V3[d+o3E?H#e'b
this.password = password;

nhsB~jr&Q,j0 海岸线网络聚合A'HJXXs4b+Waz5O

海岸线网络聚合3b~E~9\g5J


cR4U Km Eu0}

5x;Z~)t ]LtKS0

.ri.z/XXFM(m0

B:k9dE*h6w0

海岸线网络聚合4uH8q9Xx7[1RJ+p I

海岸线网络聚合/^^2MYs$u$p(K`

d!z(w,Ez0


*@H.Zki;oa0
public String getTip() {海岸线网络聚合H!oz ?lQ

海岸线网络聚合L}:FPr{m

.gRh!lkX.}&i0


;Xc"p)l^0
return海岸线网络聚合^5V~ ?p:_'{c
tip;海岸线网络聚合m;nWV4Ac'v

\|:]Y3y [K0海岸线网络聚合1ek Mq W8pB


H:^xA4L fL8J5T,V0}
海岸线网络聚合^J4FL.R0dd+I&g

海岸线网络聚合Q L5`Bx D$fU

$wgQ T T1T0

}$n@k%G+YgwP0 海岸线网络聚合'e7d f6?'A

o/W3pNW9z9rXX V0

海岸线网络聚合4sS1oc L(qEZ
public海岸线网络聚合c^m._[W^
void setTip(String tip) {海岸线网络聚合t0K$q'PG8]

海岸线网络聚合Ku:@1puc*C

K0GGRJ0

海岸线网络聚合sZnIaOx
this.tip = tip;

o9HgQ2a%mF0 海岸线网络聚合YYr rk#L

海岸线网络聚合3aGGF*]2{ M


5R BgwT:nP0}

-O#Zp gb$GR e0 海岸线网络聚合r7Fx@Q6n;\

海岸线网络聚合6ta%latu+s:{

海岸线网络聚合L&K:_)E @1t,h4\,w

]Pu2J!R+A0

R m:w2S"Z'rK5s:Z0海岸线网络聚合d b[ s&Fv7U


#{%D*c9i!b8t3aj,^0
public String execute() throws Exception海岸线网络聚合 h c'[/w0pBK

海岸线网络聚合;JZaO:G5M `

海岸线网络聚合xg"mm%[z@8EZ;o$g


z E6j0g:{/w0{
海岸线网络聚合*x"]KJ;s6k!b

/J h'iIQu5MW0海岸线网络聚合@ sj!a#?


rG1V^S0
if(ms.valid(getUsername(),getPassword()))海岸线网络聚合{6f/H7s6f"Bf5tp

海岸线网络聚合&shfo \vx,}

ov0n2A$gN Db0


8P|8n$w9@ F3`*O0{

p%f/IQf7B0 海岸线网络聚合N Q"k-P8_$L-N

海岸线网络聚合.Z#L?Z UO`


}lB%wuW_-}0setTip(
"GuiceStruts2整合成功!");海岸线网络聚合?HM N)UZ

海岸线网络聚合mZ a"b {0j'k:a5~

(li%J N2}4urD0

海岸线网络聚合5^ p @ E Nd
return海岸线网络聚合 be%i0@.r-P
SUCCESS;

J!n0k*i2q2j@t:{ i0

(s f6_(E0J%\0海岸线网络聚合?8pw4rb&SwM

海岸线网络聚合^ L mT0r
}
海岸线网络聚合_:z9@7G S|X(n,M

海岸线网络聚合_H)aip

海岸线网络聚合SAQ-`!ZF


@\/LTU i!l'u0
else海岸线网络聚合4DOBN4y.S.[)~-e

1rz]g1?(X;s:S0海岸线网络聚合2DSb!u4_ W^&J/b

海岸线网络聚合P@)^:q _Jx
return海岸线网络聚合([bmj#ic%w\
ERROR;海岸线网络聚合 I-Pf+fU)S@9u

7YMbj5xj0海岸线网络聚合%p9I:sE B L_q

海岸线网络聚合ab8O"GB1`
}

/h5a9`ia0

} f7S/WE)Uw0海岸线网络聚合!f:Iz,_,a9W-WT

}
@1\*v0B}V0g_ P0
'UC3XX9M0P c$F0配置struts的配置文件:struts.xml
6u#A5w$tal7q!f([0

<struts>海岸线网络聚合`+}4a)kA6{I

3aa ai8CYx0海岸线网络聚合M;x+e'uS@~nY


x$jX E_0
<constant name="struts.objectFactory" value="guice" />海岸线网络聚合ie8t"y&K

^5}*a,F&E0海岸线网络聚合yh S~ C'} O%t3`

海岸线网络聚合{U.i8n5nO(~

s5D2Osd9jVH9S5bE/l0 海岸线网络聚合VJ[Yv)Cx&Kk^

Kc E)z{ f:~ V0

海岸线网络聚合 g3y/_ XhS
<package name="fengzhizi" extends="struts-default">

EamiaVg8C~0

9v|$C$X"h `R:f0海岸线网络聚合M~{zcki$R Q]

海岸线网络聚合R] ~yk9m:Rd+cI)K
<action name="login" class="com.hopeteam.action.LoginAction">海岸线网络聚合 T6\J4s s t

;K!z,x:[d&d0海岸线网络聚合M%I#T*w|^+] @1h

海岸线网络聚合2lL{I1W*E+o%_}
<result name="error">/error.jsp</result>海岸线网络聚合d*o1p(V3^4P3n6}x"eY

海岸线网络聚合 a L1T ik vjX(@:Fd

海岸线网络聚合j1k5i;[.EI lS


)X0~s'|w,I:].f0
<result name="success">/welcome.jsp</result>海岸线网络聚合6HHj%g!~V2^

海岸线网络聚合|\u9A"g)BGrI X

海岸线网络聚合!yc8fV my Y.V


y9tG~eO b0
</action>海岸线网络聚合*Z4tkN"~x|_@ _

海岸线网络聚合4E6P?ss6uq5~V?i+r

kL@+` @@0


7ai/X2^j9n"}W _0
</package>海岸线网络聚合.Z2Z0zHW5C_

v7LeE9|'q0

up ?*i,Z EAG2_0</struts>
"f S&XF(a\3M0其中,<constant name="struts.objectFactory" value="guice" />是将Struts2的对象进行注入,包括动作和拦截器。
(m8U!q1`!?y0
)^9VM_ M3oj$L_4r7h0好了大功告成,我们看一下登陆页面吧海岸线网络聚合N:Y6M8p|+wT8C)w
海岸线网络聚合%Bd(U;Z5Z-w4w
海岸线网络聚合5e6sG"r T}ay
22.jpg
海岸线网络聚合&XdrH.y.C3p

(A4](l9H:n |(]i}0登陆后的页面:
L3wj%q RZx;O0
5e-G`$O5re0海岸线网络聚合)Y:Qi3_#~ P/z.~m2D
3.jpg
海岸线网络聚合-}z+P%yI c\*QkP

TAG: Guice guice 原创

wwwwwrqq发布于2008-05-18 22:39:32
不错 传说中它的速度比Spring快100倍
starlight的个人空间 starlight 发布于2008-05-19 09:04:46
LS的,现在数字这些都是噱头,关键是要和项目整合得当。
风灵风之子的个人空间 风灵风之子 发布于2008-05-19 22:22:12
Guice目前可能只是一个玩具只提供了IoC,没有提供事务处理等等,但是它的思想不错,说不定可以成为下一代IoC容器。
BO1H3C$T f\4A


ZX
RH6_K        @^xspace.sea3c.com
目前已经有了一个基于guice的框架:warp
-K-hd0b-fF)\space.sea3c.com它的warp-persist提供了事务处理,并封装了Hibernate
,F-@#Q.N
H b@网络安全 信息安全 个人电脑安全  海岸线论坛
我们可以看到流行的Struts+Spring+Hibernate完全可以由Struts+warp+Hibernate替代
u;xZ'z&oO!S\关心您的IT产品和网络安全
"Y$P_7lM"Z-A&BFIR由此 看好Guice 看好warp
starlight的个人空间 starlight 发布于2008-05-19 22:45:13
拭目以待吧
我来说两句

(可选)

日历

« 2009-07-04  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 1285
  • 日志数: 23
  • 建立时间: 2007-05-21
  • 更新时间: 2008-05-18

RSS订阅

Open Toolbar