[原创]Struts2与Guice整合
上一篇 / 下一篇 2008-05-18 20:07:42 / 个人分类:Web Framework
SVCSo4|iV0Struts2与Guice整合需要Guice的插件guice-struts2-plugin-1.0.1.jar以及guice相关的jar包。下面是整个项目所需要的jar包
o,c tgLW$m U0海岸线网络聚合_'K^YXi\!k-O}
海岸线网络聚合$K I&@]-diDd+g11.jpg
Nh9Y/UI0海岸线网络聚合a%eJGk(Gxi
海岸线网络聚合n,Jk5{z1T
第一步,配置在web.xml中Struts2以及Guice的filter
F ?w6QJ,V|{yK0
N E(w)QZG?0<filter>
-x,{L.e5SP0
h#J#["nK@1i-^lk0
Y JM4z6_M6@8x0<filter-name>guice</filter-name>
.A;N{V;k;G9y2|6F0<filter-class>
海岸线网络聚合5oj o.M|q|S
{)D)`?,U0com.google.inject.servlet.GuiceFilter
海岸线网络聚合G4p&{p#H;}3GY
</filter-class>海岸线网络聚合
H8g;Ry%pqe
IL;ws{9S0
sZaUj5Zg`4RY0
海岸线网络聚合G h&Z'gD0RX
</filter>
f8u |tY{5_0海岸线网络聚合 J `-P~8g3xrP&L
u)iA&[*An9cU0 海岸线网络聚合c(@"li[r~*Gk:US0
海岸线网络聚合
s!MN&h6j
<filter>海岸线网络聚合BS:G0m#q2o*fn&Rt~
海岸线网络聚合DMLx"E~Q#Y
Dvy[,HAe0<filter-name>struts</filter-name>海岸线网络聚合$Iz K9v4nG
-CbaA/}!Q&K0海岸线网络聚合Bv8DL6_P8ds
A~m$P!p
kH0<filter-class>
海岸线网络聚合)g;g`I(C;{7MPI1R
W3i6xe,_)Kw;C0org.apache.struts2.dispatcher.FilterDispatcher海岸线网络聚合q"M
kqB'^
海岸线网络聚合7P'ZVqh${
Zy$WQek.f0</filter-class>海岸线网络聚合k-~0T8TGz`8B
海岸线网络聚合C,TpotJ1[
</filter>海岸线网络聚合2F4_+\qoq\!g
OHbs T*c,E0
o]PP0Q0海岸线网络聚合SCJ3|5k l7m
|RGI l0<filter-mapping>
GOB1A+h?i4MO0<filter-name>guice</filter-name>海岸线网络聚合7c]OAM Z
海岸线网络聚合)h(x1Z/R1i6v(}o9F
海岸线网络聚合peQ O%v2hu&LG
<url-pattern>/*</url-pattern>
I7VI&cG` w-o~%Uj0海岸线网络聚合f!kGLc
{sZa-tI0</filter-mapping>海岸线网络聚合#{@4h@j.E5S{-vms"|
P CFN1b L0海岸线网络聚合]3DP;i6T
海岸线网络聚合$K]Us+Vn jU
6CCwSc:jgh*f0海岸线网络聚合hr6Q-v-EL$Kv;V
6`{7Ajh+a kof@0<filter-mapping>海岸线网络聚合?1WA3E cm&m$Y?_v%}B
1r g0vc1Z7?]0海岸线网络聚合R^2K#H3eQ$Jb T
海岸线网络聚合$PAPplWg2iI
<filter-name>struts</filter-name>海岸线网络聚合)S9k2_7G+??KPLA6\$d
.ed w%[ztxZE F0<url-pattern>/*</url-pattern>
5||X-tS#V(H0
i#kIU"c0海岸线网络聚合e"bZ4_:V n</filter-mapping>海岸线网络聚合kX;AgJm(Y~$A:n
m+^"[ZEHE0海岸线网络聚合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~[LPLY`*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"`8k0i0C#T Bd?&k!{j0
"mCNvOp&a0
海岸线网络聚合 C1w.o'Q7m _u
* 采用annotation进行接口与实现类之间的绑定海岸线网络聚合$OZ:_9{
@
海岸线网络聚合CZ&}SG
* 接口与实现类之间绑定是必须的海岸线网络聚合 p[5xW"u
海岸线网络聚合3C ['m#UR9bqR
*海岸线网络聚合]Sy"i2]h!Ytx
p^ a+C6k V"C0海岸线网络聚合0_za.k|a&pO
海岸线网络聚合8^X!G!N)rP)H
*/
H(K ?p l4`]o0 海岸线网络聚合Y/L&~X](Y3tt?f6{6[[m:p:G?Z0
@ImplementedBy(MyServiceImpl.class)海岸线网络聚合e#?\PG
$G3C]srt1U O[0海岸线网络聚合` b*jj"nQ6@8r
public海岸线网络聚合qN u%N4A0XM
interface MyService {海岸线网络聚合Byx9yOZX
+O)D,J;v#c0Y0海岸线网络聚合0L}hKP b2R D
#@7@6yQb0boolean valid(String username,String password);
海岸线网络聚合0k0MgKWG
}
FLe+~8w[bB.dG0 海岸线网络聚合WIpNo$t|5K0n海岸线网络聚合-f5By!ej0f1oT
|2V8`p0~0第三步,创建Service的实现类:MyServiceImpl
-C\kd%lM0
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-AYJqw海岸线网络聚合WU$gOmYD,k
/*海岸线网络聚合 aA'\eB` f
3j'YODyi~!~.I&n0海岸线网络聚合+c0\ MTm1X;b
* 我们用@Singleton来标注它
LQ'@rzDj0 海岸线网络聚合g+jaB5Yl^+b*?9OLvE {!v0
'GFi4f U0*
*/
,PxR-bk'K&s+_C06bPhb.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
海岸线网络聚合)O$NoV&p
public
!ARh*P1x!ZI%m0boolean valid(String username,String password)海岸线网络聚合 fd-PM$Qn$a]1z
海岸线网络聚合3V7u?8|r
{
海岸线网络聚合j"_)D-gK3P0x J8z$e4F
海岸线网络聚合S"b[bt2X-DL)Dt?
if(username.equals("fengzhizi")
海岸线网络聚合 fT:g!K _ku
海岸线网络聚合%Z_'O$h!\{
&& password.equals("123456"))海岸线网络聚合5xIq-M&q9l)C
5Q0MFr!UD0
*JQ-^NC(?g*x7a5aZ0
海岸线网络聚合h}2l0o;r0V^
return
O ~j)G:[X#UA:M2~p0true;海岸线网络聚合n:H c!yA4|z2L
G{$HxROc0else
海岸线网络聚合b6|i:Q&s!}B#W6s
uL'wXZ"N0return海岸线网络聚合:eyZueg
false;海岸线网络聚合;J0s)O*^Z!U8v(M
&i {P4BO0
.~#n&qL%~o&h-?0
5q&y+bX[E0}海岸线网络聚合!x)f#t8Ek(YX.B_
mz1Kgz4m~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海岸线网络聚合hWR h Mx
第四步,创建Module:MyModule
1H"_/U;F eV9I$o/z0
import com.google.inject.Binder;