Work hard

[原创]Struts2与Guice整合

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

查看( 18 ) / 评论( 4 )
Guice是一个IoC的框架,传说中它的速度比Spring100倍,很欣赏它无需配置只需注解就可以使用。
SVCSo4|iV0Struts2Guice整合需要Guice的插件guice-struts2-plugin-1.0.1.jar以及guice相关的jar包。下面是整个项目所需要的jar
o,ctgLW$m U0海岸线网络聚合_'K^YXi\!k-O }
海岸线网络聚合$KI&@]-diD d+g
11.jpg

Nh9Y/U I0海岸线网络聚合a%eJGk(Gxi
海岸线网络聚合n,Jk5{z1T
第一步,配置在web.xmlStruts2以及Guicefilter
F ?w6QJ,V| {yK0


NE(w)QZG?0
<filter>

~KZl!O%A}0

-x,{L.e5SP0

h#J#["nK@1i-^lk0


Y JM4z6_M6@8x0
<filter-name>guice</filter-name>

4A z!t,~H0 海岸线网络聚合MG+jo ?f#s PR"m

[P j ^5s0


.A;N{ V;k;G9y2|6F0
<filter-class>

d\fe*F P]:ly*iF0 海岸线网络聚合yQ%c#ee2ct LY

海岸线网络聚合5oj o.M|q|S


{)D)`?,U0com.google.inject.servlet.GuiceFilter

}0n}{e:Y O:D0 海岸线网络聚合1An;r ER'H2qN*M

9TVgLgH0

海岸线网络聚合G4p&{p#H;}3GY
</filter-class>海岸线网络聚合 H8g;Ry%pqe

I L;ws{9S0

sZ aUj5Zg`4RY0

海岸线网络聚合G h&Z'gD0RX
</filter>

$y5VlT,F0

f8u|tY{5_0海岸线网络聚合J `-P~8g3xr P&L

u)iA&[*An9cU0 海岸线网络聚合c(@"li[ r

~*Gk:US0

海岸线网络聚合 s!MN&h6j
<filter>海岸线网络聚合BS:G0m#q2o*fn&Rt~

海岸线网络聚合;EQ1mI:U:X KH2y

海岸线网络聚合DML x"E~Q#Y


Dvy[,HAe0
<filter-name>struts</filter-name>海岸线网络聚合$I z K9v4nG

-CbaA/}!Q&K0海岸线网络聚合Bv8DL6_P8ds


A~m$P!p kH0
<filter-class>

7I5dN,iS0 海岸线网络聚合:[\g1T5C;V!N

海岸线网络聚合)g;g`I(C;{7MPI1R


W3i6xe,_)Kw;C0org.apache.struts2.dispatcher.FilterDispatcher
海岸线网络聚合q"M kqB'^

海岸线网络聚合 _kU T"d4v{W

海岸线网络聚合7P'ZVqh${


Zy$W Qek.f0
</filter-class>海岸线网络聚合k-~0T8TGz`8B

海岸线网络聚合'G6d%e\ ws

+`3L6jEW,l'|0S LQ0[0

海岸线网络聚合C,TpotJ1[
</filter>海岸线网络聚合2F4_+\qoq\!g

海岸线网络聚合)h%\x6\ _ ?C

Z.[4tW&~Bw2A0

OHbs T*c,E0

o]PP0Q0海岸线网络聚合SCJ3|5k l7m


|RGIl0
<filter-mapping>

$Hc-n3c'T0E0q0 海岸线网络聚合oN)mj'R V)u6n7T q8F

4s;tD$u/o+s8X/I/A'vL0


GOB1A+h ?i4MO0
<filter-name>guice</filter-name>海岸线网络聚合7c]OAMZ

海岸线网络聚合#gd.m)G;[8x6M6SPdD

海岸线网络聚合)h(x1Z/R1i6v(}o9F

海岸线网络聚合peQ O%v2h u&LG
<url-pattern>/*</url-pattern>

a ~$A{ G5k'@ ?0

I7VI&cG` w-o~%Uj0海岸线网络聚合f!kGLc


{sZa-tI0
</filter-mapping>海岸线网络聚合#{@4h@j.E5S{-vms"|

P CFN1b L0海岸线网络聚合]3DP;i6T

海岸线网络聚合$K]Us+VnjU

6CCwSc:jgh*f0海岸线网络聚合hr6Q-v-EL$Kv;V


6`{7Ajh+akof@0
<filter-mapping>海岸线网络聚合?1W A3E cm&m$Y?_v%}B

1r g0vc1Z7?]0海岸线网络聚合R^2K#H3eQ$Jb T

海岸线网络聚合$PAPplWg2iI
<filter-name>struts</filter-name>海岸线网络聚合)S9k2_7G+??KPLA6\$d

海岸线网络聚合R*[L'L5?_'o/P

J F'j+^ u3vXP0


.ed w%[ztxZE F0
<url-pattern>/*</url-pattern>

s.H i9L*ebmF0

5||X-tS#V(H0

i#kIU"c0海岸线网络聚合e"bZ4_:V n
</filter-mapping>海岸线网络聚合kX;AgJm(Y~$A:n

m+^"[Z EHE0海岸线网络聚合8E(W&m._'gY`p

7NY E/o`n8e0
7m$F4SOdd0第二步,建立一个Service的接口:MyService海岸线网络聚合jE4A&Pl

import com.google.inject.ImplementedBy;海岸线网络聚合U1l.\Nvg!Q|4s

海岸线网络聚合y&]\6w~[LPL

Y`*B D7~mn7q0

import com.hopeteam.service.impl.MyServiceImpl;海岸线网络聚合h,eF2^(yJ

f-Alv k)C%`+ie(\0

4aud$Y0K^5e2D0

海岸线网络聚合{,@BpoGla

海岸线网络聚合P/J3Y{;_{

海岸线网络聚合O%PK"|7[o4`Q

/*

^+O\]m$~7M.x"`8k0i0

C#T Bd?&k!{j0

"mCNvOp&a0

海岸线网络聚合C1w.o'Q7m_u
*
采用annotation进行接口与实现类之间的绑定海岸线网络聚合$OZ:_9{ @

海岸线网络聚合ycX|y8o

NO!\'ef0

海岸线网络聚合 CZ&} SG
*
接口与实现类之间绑定是必须的海岸线网络聚合 p [5xW"u

海岸线网络聚合*WK{!U7\ A

T0q,Jv,}1e9M`N0

海岸线网络聚合3C['m#UR9b q R
*
海岸线网络聚合]S y"i2]h!Ytx

p^ a+C6kV"C0海岸线网络聚合0_ za.k|a&pO

海岸线网络聚合8^X!G!N)rP)H
*/

-G'u*bV/\gN#w+P0 海岸线网络聚合w#})m8`0M3i ]Ovu

*W!f^L0| F;T%X0

H(K?pl4`]o0 海岸线网络聚合Y/L&~X](Y3tt

?f6{6[[m:p:G? Z0

@ImplementedBy(MyServiceImpl.class)海岸线网络聚合e#?\P G

$G3C]srt1U O[0海岸线网络聚合`b*jj"n Q6@8r

public海岸线网络聚合qN u%N4A0XM
interface MyService {海岸线网络聚合 Byx9yOZX

+O)D,J;v#c0Y0海岸线网络聚合0L}hKP b2R D


#@7@6yQb0
boolean valid(String username,String password);

%Y!B`(ZV6Se0 海岸线网络聚合??*q:s J;{h R}(Y

海岸线网络聚合0k0M gKWG

}

F Le+~8w[bB.d G0 海岸线网络聚合WIpNo$t|5K0n

海岸线网络聚合-f5By!ej0f1oT


|2V8`p0~0第三步,创建Service的实现类:MyServiceImpl
-C\kd%l M0

import com.google.inject.Singleton;海岸线网络聚合*c#v;BUb

9qBJk IX(q4U(BkC0海岸线网络聚合;NvK(XCg^8K^

import com.hopeteam.service.MyService;

3l#LhEA9t0 海岸线网络聚合;G[ VQH

%U'EF9o7t+@0

海岸线网络聚合HYLM(U*n

海岸线网络聚合jmq-A YJqw

海岸线网络聚合WU$gOmYD,k

/*海岸线网络聚合 aA'\eB` f

3j'YODyi~!~.I&n0海岸线网络聚合+c0\ MTm1X;b

* 我们用@Singleton来标注它

LQ'@rzDj0 海岸线网络聚合g+jaB5Yl^

+b*?9OLvE {!v0


'GFi4f U0*

yVSc*A T(Y$V0 海岸线网络聚合*H_%Qj/n;dLD

sH|\ ~:p0

*/

,PxR-bk'K&s+_C0

6bPhb.J0

qR b \w;Z|U!?O7Y0

海岸线网络聚合@u)TS;})ISr%D9\D/A J

海岸线网络聚合Q-|m?3c-uIlpQ

.C5wX[1pS%Pk0

@Singleton海岸线网络聚合i ]nr\1Dn1B

*jtl kJ9dF)Tx0

'M(j7H([T0

public海岸线网络聚合%u]6n)L+u,i~6WX
class MyServiceImpl implements MyService{海岸线网络聚合ve^9p-g%V&p.X

海岸线网络聚合 uI`&_uJu,z

;avp\kS0

海岸线网络聚合)O$NoV&p
public
!ARh*P1x!Z I%m0boolean valid(String username,String password)海岸线网络聚合 fd-PM$Qn$a]1z

海岸线网络聚合-?$a l%jF|F

XO[7a3v z T0

海岸线网络聚合3V7u?8|r
{

{Od2rj3@ v)t5ky9m0 海岸线网络聚合'}8w2N$a v'{9@

海岸线网络聚合j"_)D-gK3P0x J8z$e4F

海岸线网络聚合S"b [bt2X-DL)Dt?
if(username.equals("fengzhizi")

!qkDs$[J#I0 海岸线网络聚合?5Zz3`K6\;h

海岸线网络聚合 fT:g!K _ku

海岸线网络聚合%Z_'O$h!\{
&& password.equals(
"123456"))海岸线网络聚合5xIq-M&q9l)C

5Q0MFr!UD0

*JQ-^NC(?g*x7a5a Z0

海岸线网络聚合h}2l0o;r0V^
return
O ~j)G:[X#UA:M2~p0true;海岸线网络聚合n:Hc!yA4|z2L

海岸线网络聚合 s G|(F&C7i-h4j

n4n!s J)J1f%n0


G{$HxRO c0
else

6@:O9q0Z7a8A4e!_0 海岸线网络聚合z,c@4wmm

海岸线网络聚合b6|i:Q&s!}B#W6s


uL'wXZ"N0
return海岸线网络聚合:eyZueg
false;海岸线网络聚合;J0s)O*^Z!U8v(M

&i {P4BO0

.~#n&qL%~o&h-?0


5q&y+bX[E0}
海岸线网络聚合!x)f#t8Ek(YX.B_

m z1Kgz4m~f#i0海岸线网络聚合+La DB)w

}海岸线网络聚合GOO#l#i m X

m&g1Gm4GMliJ0海岸线网络聚合xY!G;V.e k5\X;f [


|SI#hz6n0Guice通过Module来配置而不同于Spring框架通过xml进行配置。Guice通过绑定器Binder来传递我们的模块。一个绑定通常包含一个从接口到具体实现的映射
aj;U4Q7g9A]-RR0海岸线网络聚合hWRh Mx
第四步,创建Module:MyModule
1H"_/U;F eV9I$o/z0

import com.google.inject.Binder;

h5I ]"k0|0 海岸线网络聚合 \o J*e?8\y)nI

:^M9BR;m0

import com.google.inject.Module;海岸线网络聚合N`~ y+\k.rq

'XE*r j![k0

`F$b-Ts0

import com.google.inject.Scopes;海岸线网络聚合"Gh*A%Q ^];J

海岸线网络聚合3HJl:Fv.{

海岸线网络聚合)o#jI"]z2}x

import com.hopeteam.service.MyService;

^^p"xL$X ^2_\Z P0

D*H-`Tl+d0海岸线网络聚合0nBVN%_^1\}7d

import com.hopeteam.service.impl.MyServiceImpl;

.t3c-Cx6n,?boIN0 海岸线网络聚合@Q{SP

海岸线网络聚合!NS _6Vi1a*` g7dv

海岸线网络聚合3^2H_&ZIuU

海岸线网络聚合 svO#\O{b

6y^`7\ E sH yIG0

public
q1wzE-j"~9{0class MyModule implements Module {海岸线网络聚合w)^B b(P9MEz

4CBQ E| z4r5Y0

Koju(z9X0

+O~y.f;wK^+y,l0

:f5W*o?.vo0B0

M M| `R_'k*?0

海岸线网络聚合 M;~l'e'B5s
public
5\n!A!s]m3C9U6rz8^b1U0void configure(Binder binder) {

0`7R(nN8j0 海岸线网络聚合s}t7X,h)K P

?'b+DVT;p0

海岸线网络聚合F4z6e.IE0V*_!D?SC

gz`8J4CW!hi?0海岸线网络聚合r-k9a.AD


C6B%eU!|0
/*

*v7\1L%S1h0 海岸线网络聚合 H:w o)\*L5Nh4?

海岸线网络聚合W"| oY*B!DS


5Dh;j1_v0
%XLZ0?j7Id9vo5j![0*
将接口MyService 与其实现MyServiceImpl 绑定在一起海岸线网络聚合!Ev.Hy}my V EL
并且作用域为Scopes.SINGLETON海岸线网络聚合AR2gmJ LZY&a

海岸线网络聚合8K%Kr0|3k y#s_.~+ur

]d#z Bq:t S2f b$|0


Nu6aJv0海岸线网络聚合7v&BW Xi } g a2L6Y
*
其中如果不配置作用域,默认就是类似于SpringScope="prototype"

GFqU&A vap.y0 海岸线网络聚合"Z!O)m*U?p5r'eA)B

海岸线网络聚合2S6YL9xD V6Z}(`:b

海岸线网络聚合2A{PJ`d Lm}
海岸线网络聚合 G8xZ \;@$u-ZDU
*/

^4kh5L&~6Lj`6B0

n)M"FP"i"O0

PZ|tQ8f;f0

海岸线网络聚合j7H RB/}7a#Q#}M
binder.bind(MyService.
class).to(MyServiceImpl.class).in(海岸线网络聚合b%goTJ\

海岸线网络聚合3jf Sln` wl-E1I

海岸线网络聚合!Xv` z"]2A

海岸线网络聚合]zPq O
Scopes.
SINGLETON);

*\-I@N yq0

z7unCZ WG7g(L0海岸线网络聚合#to&~3c+F?


,o$F B$rq,q\H-oc$i0}

aHe| lLU |0

Ab CHGs0海岸线网络聚合Txm,SwNd B&LO

y"eu CWG!oC n7R7|.z0

C6XMAA J0海岸线网络聚合r2E7PwIa v

}海岸线网络聚合*{7p4H)M+W*Ym0u4|

Cb0P#l+f~6|k['yL0第五步,创建Action:LoginAction
3ZcW3Ov0

import com.google.inject.Inject;海岸线网络聚合V2s3}.{"m8n

海岸线网络聚合dM(mj0BEs4S:D-L

f$M3Z%_V$E.D*\6?"s l{0

import com.hopeteam.service.MyService;

)M P_+?)aLbW0

!nBf(w)a U]0

XsR4fI$ZF0

import com.opensymphony.xwork2.Action;

$p%y*Q ~ _U"y0

Ho/QlSPH$@:Bn(~6R5i0

Oh!}'LHN)xf0

海岸线网络聚合KE&@d%h4S)u

.t(Y} e+otH*\+v0海岸线网络聚合&U&W-Zdr(Ubr,|

public海岸线网络聚合%Cv;|8i8?e&BeA
class LoginAction implements Action{

-t&s w:HeJ7f0

.yi8gt'~0海岸线网络聚合i-A{"^(t3i'} G


/~4P0B*W3s7j0
private String username;海岸线网络聚合|x;dxy9@ yq,ah

海岸线网络聚合ucD+_1} S)H

海岸线网络聚合nZ1]5Oqf

海岸线网络聚合nvlm]+t*_V:th
private String password;海岸线网络聚合;S8^1JJ1~N

海岸线网络聚合y5Ja,zp2lUR.I

海岸线网络聚合6v'O p$ix{

海岸线网络聚合 w k;A~mdj/G

/_Wr(DwRS#jo0

Bl']8y0i _9mAPO0海岸线网络聚合 W$NB9d4q

海岸线网络聚合1Ec!rn!h'Z
private String tip;

MnA0XlIB{0 海岸线网络聚合3vC Q EHB

Tl7t5d4I0

海岸线网络聚合U}u7B!T!O)z

{9y@'?R5sow*JV q?}0

I Nf&Rz0海岸线网络聚合\"TT#kG


Y$uwdNF:}B8dx9^0
/*

Ni1HQ_u;H0

"gXA/jH`*Xd0

FbI(]$?:Fc0


.j.A9Gj#WW0
e P7Q#Xt!G0*
通过field字段进行注入

EH1e|Z0 海岸线网络聚合/[Y;h2b6{ a!t6W8Pa

海岸线网络聚合'cUX7K)L!x,k D


itoR0{-xB0海岸线网络聚合0Rt\q;{Q]~+J
*/

9r]3~7WS0

w&ocP.FH%^ z0海岸线网络聚合 k W-A?,K@

海岸线网络聚合'^Y N8cp\9G z u
@Inject海岸线网络聚合t f-ceK)J

海岸线网络聚合0CiI"Y!l6J@q ^6C(V-K

L\^ HD){ ^U4[$Gm0


o-b%qozY+H&H!r#M,|0
private MyService ms;海岸线网络聚合0F'X3af})~YD

*@6Elq6nI1crg,P0

%J+qa5IheL\0

+vPQH6D^K.V0

-g9z*sn}z,p&Ra0

9t"{C7d(m"FS*K+] i9b0

海岸线网络聚合"Y6fN*rTSQ A/w)K
public String getUsername() {

-H{Q7AU1O0 海岸线网络聚合@g WA_b:My-G#]

海岸线网络聚合jPZ p`P

海岸线网络聚合zl4J:Pi{Lw5o:G)h
return
h5N}g%W*@7j U Q0username;海岸线网络聚合0k"_8p}B{,l

海岸线网络聚合J w C8w)[)j;P:o

海岸线网络聚合7TI|[2VR ^

海岸线网络聚合U1RB9KL L!b
}

,H8X3h$Dn3n0 海岸线网络聚合3R'gkYT

;s~ T G`0

&d&GP$E^&?/E"f/Z,s0

aat2u:M6{ {p,@0海岸线网络聚合7zXYfh5^/l

海岸线网络聚合 q'qQBP*m&J9z
public
Dx?"N z9z-l-lF o?0void setUsername(String username) {

#Z K3hK}0

"H+H;^%oV!]v\siQ0

(ju;y;B4B Q/D!CDK0

海岸线网络聚合1^dpTK:Go
this.username = username;

z+Z9`O-@:e(EM8d0 海岸线网络聚合GF a_ _zr-FmG

5O;l1wlV!w,f]$t"P5e0

海岸线网络聚合h9RY3n5b
}

p`5W&a b#kG"{0 海岸线网络聚合+TvF#F?e?s.N?$q

海岸线网络聚合T5s#r1uv0FO*B:oQ

H i:M)A!_0

S#o"S Bo%^0海岸线网络聚合;Iq%Oc%b r


C9`%V ]!L#Yo0
public String getPassword() {

3G!i q?3g0 海岸线网络聚合&I2Bd Hv BX

*SDN Pu p0


RN D B Mr0
return海岸线网络聚合@a2dKg!S v
password;海岸线网络聚合z*y2JwTn4D$}

K$\0Z0i(~DR0海岸线网络聚合r s(|"?/n3u4Kd

海岸线网络聚合W#Pq,h#z
}
海岸线网络聚合8S\d h!G

'I,l#Z!UO[i0

P'NRYA{0

"XHx)T:q5FIr `t#u0 海岸线网络聚合"}DY:{ T{R R

D/s/IZ`&NO7lb}D h0

海岸线网络聚合8d;A._LD^9i/^NL
public海岸线网络聚合-T+l3j.dwe)wv Q
void setPassword(String password) {

9I$K AD4R&FUH0

?Y!xg!~3KH-s0

(UqJCg0


Rb yky)Z X8Y0
this.password = password;海岸线网络聚合nQ+Y hEY,c

海岸线网络聚合!ggsJ jyt

海岸线网络聚合Ta4LOx2J#hb

海岸线网络聚合m5@~k^k.IT
}
海岸线网络聚合 f3Wl6A Rz \;n,N I

海岸线网络聚合p+z!F;{x;m5z

(Dk5cD cm"qZ't_Z"Z.NR0

海岸线网络聚合-oXR:Lk:u1F yj.C

jC#_Q?!iS.e0

z IciAP0

海岸线网络聚合'zb7r _.p$b
public String getTip() {

[v0ch4[,{1f R xEQy0 海岸线网络聚合*l)a]vq T ul;x

X\0GH o3@f0ke0


C5lRw I0
return海岸线网络聚合#y%~B|Bc!]*_!`
tip;海岸线网络聚合,J;y5FR7q]u#y7m C o4V

Te%D!sR_'KS0海岸线网络聚合5l [s;?(J,O4~

海岸线网络聚合~5okW$@ M
}
海岸线网络聚合4F2u4nKDX(l%J

,KG"gwtI*Y#@0海岸线网络聚合vM Tg`l3|

海岸线网络聚合#I.XU BPfXo^P

海岸线网络聚合-YE!Z#Y MG!\h)Q

~;yC:H(u p0


9DEe1F:ps0
public
t1xDi}gp7M0void setTip(String tip) {海岸线网络聚合"z8D,Y;J"X&b8s:o\{

海岸线网络聚合5zY3ZR7u

1CEvo*cr{*[0


|!dhwr0
this.tip = tip;海岸线网络聚合-A Z'jhW elHs2E

海岸线网络聚合P0~gW$BH

IO`PD$@0


;z7d1M!dGV)d0}
海岸线网络聚合"|0Eb&sh:pgfo?

海岸线网络聚合h"T/` To]xl:Y~

6I&gL7z%J4j0

海岸线网络聚合x G4~ a#h K;N6p k d{

-~i6]U-V m wg0

piXO7z&J0海岸线网络聚合gi'OlR


I(T z8k'Z0
public String execute() throws Exception海岸线网络聚合&z'dDNwB `+t7w

+c1eM6I |8k0

7J[xE5uJ0

海岸线网络聚合3q.n4}WTc!X5Q
{

O}XG(EW0

0P6P?]#pY0o Xl$TqM"f+|0海岸线网络聚合Q1M;Cnri h,P+n

海岸线网络聚合Z2`u]+K;dqy
if(ms.valid(getUsername(),getPassword()))

V,C5hgA0

y)w~ DR}g;E"Q3ZL0海岸线网络聚合 ]%a@'x"dj

海岸线网络聚合Xmbm8Uo2Cr
{

ad7bfT]%{!H4`0

Q1pyl+c(o^8_? X0

;D(D/Yf%^'T*v0

海岸线网络聚合9F5l(kwM}*A\"?
setTip(
"GuiceStruts2整合成功!");海岸线网络聚合T1H F+o&y

海岸线网络聚合d{S(\x@g)`

海岸线网络聚合}4Q N W0bD2iZ {

海岸线网络聚合].lF:S)l|Sw*]6F
return
/C.hxk J)R Ol6J0SUCCESS;

;L(K zm'yZs0 海岸线网络聚合 F\lbfD

-E c_7B#?0

海岸线网络聚合Pe5ff6SS{
}
海岸线网络聚合yx.Z q%^9W3w

3H\ s7})~,]m+n0

'?#QKs#Z qjGV0

海岸线网络聚合&py$f~I
else海岸线网络聚合Ogz ~i

yDAY9Bp$Q8?0

)I9S tZSn]0

海岸线网络聚合zS%kY8@5^$X G{}
return
!l"\d@ `,r0ERROR;

[^F*OWM)f,d!gN0

n4eRO#e0

&pC8[+d7c+F,ps9x6zK+J0


5d3SQ"} f3Gy]:f0}
海岸线网络聚合:~2[R'G)[

海岸线网络聚合+M:aH1Oo&A

y B h%[^,yZ0}海岸线网络聚合G#_-p,R%J3o"H

Q#]jPZ#XC6j-Tc0配置struts的配置文件:struts.xml
#`3M;`)q6H:?Z3D0

<struts>

y7|%quIZ MV0 海岸线网络聚合bd6|5x@'_0_1e\

海岸线网络聚合se}&O!we#j"C-zE&u

海岸线网络聚合n4G Mo c/U;iUfE
<constant name="struts.objectFactory" value="guice" />

%|g&?#E#nPn/Ym-W0

!S8}1b'fvc0海岸线网络聚合-?#U*x1K'GR V"y7fF

海岸线网络聚合J|Im#l
海岸线网络聚合$ae1e+O:vnb

8Ff"Bo zL~P~)L0

B| RU4O0


c@[|}3R/c L4n0
<package name="fengzhizi" extends="struts-default">

&C G ^ WDBWOi3G.oe0

.Q'ItE6E4D0海岸线网络聚合 Z,|f E6[:n:Q4|


3h/~ amz%F2Vt\s7~"]0
<action name="login" class="com.hopeteam.action.LoginAction">海岸线网络聚合glsO;MiA*T EC

海岸线网络聚合2s*y2q,@IgP

Tu5S1F1JX d'l0

海岸线网络聚合v/Z[_%@{
<result name="error">/error.jsp</result>海岸线网络聚合 B&e*t'I~:v

海岸线网络聚合k/R?F|&q? F'V

海岸线网络聚合D a1A3X1[q5`h bB


i:{D+CM4nB7u0
<result name="success">/welcome.jsp</result>海岸线网络聚合Y$g#q%wh0tO

#RjI~5t*wU0

X+gY&rH9y0

海岸线网络聚合Tu%\:NL/e+d
</action>海岸线网络聚合}}f3[R Q a)Ty V.A

M+r Iz*? fY)MXEd0

m*d2S(dRb3|0


TS h4F\r0
</package>

6^-y4_itx"v|0

nl7}8k|rjaY A+K0

3N~CD Z7``Lm0</struts>海岸线网络聚合0dG3Dv/\
其中,<constant name="struts.objectFactory" value="guice" />是将Struts2的对象进行注入,包括动作和拦截器。
`x+}\VSU I0海岸线网络聚合%f#~(Jt btY
好了大功告成,我们看一下登陆页面吧
,l}5bNS2d SS0海岸线网络聚合,T.F#Zat"UO A

O];R.p6D022.jpg

.e8d,kX6|4aG)V}0
.K!oz!]c ?w;w0登陆后的页面:
B"|0^F0We;m0
Od4i0mNe fR x&z0海岸线网络聚合'`/l`{d:L$\$zx
3.jpg
海岸线网络聚合RshC)F-r

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容器。
m Q1?e8[
w
关心您的IT产品和网络安全!QN-@ m        ?d3?1k`d
目前已经有了一个基于guice的框架:warp
u$b4S c
mB+k/[网络安全 信息安全 个人电脑安全  海岸线论坛
它的warp-persist提供了事务处理,并封装了Hibernate$z"@d-P!l}wk
`;U

我们可以看到流行的Struts+Spring+Hibernate完全可以由Struts+warp+Hibernate替代space.thysea.com(ErM1S0|Xc;v
XLc5w"q)dhJ,C&K
由此 看好Guice 看好warp
starlight的个人空间 starlight 发布于2008-05-19 22:45:13
拭目以待吧
我来说两句

(可选)

日历

« 2008-11-20  
      1
2345678
9101112131415
16171819202122
23242526272829
30      

数据统计

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

RSS订阅

Open Toolbar