|
该用户从未签到
|
1. 前言8 ?; z6 e( N. _& |/ ~5 Q
1)为什么要学习struts框架; D( }, m8 g9 [8 B& q \( {2 f6 o- V
Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。
6 u1 o1 @' A6 C% P) T+ Q; C 2)如何学习Struts框架8 J* B9 ]# _ P8 ^! L
先掌握Struts框架的使用,有余力可以了解下实现原理。
" P( p* x8 }! J9 K2. MVC在javaWeb程序的使用
# ^' ~1 @3 ~: S5 s) D( \3 p * 1) 什么是MVC?
4 y0 F9 n% g3 K. ?7 Z MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。
3 _% t9 w& o& G7 k T! d1 A V(View视图):负责与用户交互。将数据展现,或者是接收数据# ^9 j5 d8 q# ?- Y0 x5 [$ R7 W
M(Model模型):负责业务处理。业务模型,数据模型: q# O0 j& N$ X' M
C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。
! N$ Q7 ]+ [! R! r( e3 F 2)为什么使用MVC?1 i* a1 W& I4 p; ~: F8 B. W2 J6 K
MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。
5 C3 w& N7 h* l8 W9 n( H 3)MVC在JavaWeb中的实现
& c/ m/ |- M. d- e Servlet,JSP,Filter,JDBC# Y1 ? P5 _0 V( ~
a.原ShoppingCart程序就是一个MVC结构实现; U, p) [0 [5 J) X4 I
View实现部分:采用JSP组件实现8 K7 @/ g I: W0 |/ w! |2 V
Model实现部分:采用DAO、Entity等组件实现
3 e1 S$ v! f1 C Controller实现部分:采用ActionServlet组件实现2 j* d" \- a0 v4 f# U- D
b.ShoppingCart程序虽然基于MVC,但结构还有一些问题
& b" m3 T; ?$ B5 F( F 当请求数量比较多时,需要在Servlet中编写大量的if...else分支语句,而且Servlet代码量非常多。, u* X; v1 T# f) G$ Y
改造方案:为Servlet提供一个XML配置文件,用于定义请求和Action组件的对应关系。然后将if...else分支中的代码提取到对应的Action组件中。& ~5 a x; A) n# W+ @6 {
*4) Struts2的主要工作流程" n% }( d3 b- Y
a.首先客户端浏览器发送一个请求,请求到达控制器。2 }- D. n. _' y7 B' V9 k) ?3 l) Q; B+ a
b.控制器根据xml配置信息调用相应的Action组件+ P# ]* u j( ~7 u4 @# d2 D
(XML配置了请求和Action对应关系)1 ]6 _% o0 y! P- Q
c.执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。' l& ?$ z" M9 E0 \% ^+ E% k
d.控制器调用JSP视图组件生成一个响应界面给浏览器
$ c0 j, i$ o+ p* e) B8 s' S3.Struts2框架的历史
+ M! j+ h B" D; C: s" d; m Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。8 Z' u$ E5 @" k
*4.Struts2框架基本使用" M4 h" `6 D5 }5 n% u3 N0 j
*1)Struts2使用步骤5 |8 Q9 P. H9 R! C
*a.下载发布包,将核心包导入web工程
9 }8 u1 M1 P0 Q' ]8 ^( p struts2-core-2.1.8.jar:Struts2核心包! o9 z6 k" m) Y+ Z8 L
xwork-core-2.1.6.jar : Xwork核心包' D2 l" s/ }5 Q% k
ognl-2.7.3.jar :OGNL技术工具包,与EL相似,但比EL强大。
4 P, Y0 K, E1 E3 x freemarker-2.3.15.jar:界面模板技术,与JSP相似。
5 \& Z6 h; b# z# \' V commons-fileupload-1.2.1.jar :文件上传包。) C' \5 j& a! O! z, N9 g! M
*b.配置Struts2控制器,在src下添加struts.xml、
9 O+ ~+ |9 |2 L" B3 M3 q; {, V/ n Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。$ \- K( e$ Z! ~6 @, f& k7 j
在web.xml文件中配置该Filter组件。
9 j- p2 [/ V# M" Q c.根据请求编写Action,DAO,Entity等组件
) k5 ^2 n5 f3 k2 Z: f2 B! K. G, @ *2)HelloWord示例
! R4 t0 \/ A0 g. G" b% s welcome.action-->struts2控制器-->WelcomeAction-->welcome.jsp4 {" F8 e' o: w' h3 E
----------------------Struts2详细工作流程---------------------------
# W( {( Z- N; s+ @3 L* a a.浏览器发出welcome.action请求
8 ~$ P- i( ? ~- g- Y b.请求到达Struts的Filter控制器(由于web.xml配置)1 T% k+ c, _0 V0 r
c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件# c5 w& E- E1 n! K' Q+ q4 m( t- Q
d.调用Action组件的execute方法处理请求,最后返回一个String视图标识: [# j2 [+ f, h5 q N8 H7 F
e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置)
* t6 {$ ^3 d7 w4 P+ @ f.调用JSP视图生成响应界面给浏览器显示。/ Y; q' e" P8 ]) p; Q
|
|