该用户从未签到
|
1. 前言
3 l. C) e9 d2 Q' j' G% d. V" _ 1)为什么要学习struts框架
9 ]9 f, X. O% x8 r! \1 i Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。
) x* h- W& c1 u4 w8 g 2)如何学习Struts框架
; S8 X+ @- x9 r9 S+ R4 r3 U+ J# Q6 \ 先掌握Struts框架的使用,有余力可以了解下实现原理。
- A! H- U& D/ g- g2. MVC在javaWeb程序的使用1 t* ] n3 P+ n V/ \
* 1) 什么是MVC?
6 e) |. f1 _' t& [9 d MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。
2 w, ~5 a" k$ R2 D9 r* h6 S V(View视图):负责与用户交互。将数据展现,或者是接收数据
! d2 J: ` V% i M(Model模型):负责业务处理。业务模型,数据模型6 o" ]3 K! G! V* i6 i- M6 b
C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。% d& ~2 M- S" O, I
2)为什么使用MVC? F0 h' o3 F) }+ D* \+ V, t/ [
MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。
8 W. }, [! |1 j4 d! e+ e3 `3 B 3)MVC在JavaWeb中的实现
, E: Z1 `6 P% a' p/ w( q e: M. w Servlet,JSP,Filter,JDBC# W* v W k2 r* t/ t1 x& n
a.原ShoppingCart程序就是一个MVC结构实现! e1 t( b& H& U; D6 I0 d& y9 q
View实现部分:采用JSP组件实现
" ~, E0 t7 Y: D, [$ }0 | Model实现部分:采用DAO、Entity等组件实现- Y/ K% T+ g: j0 l$ d" p: m2 D, z- I! r
Controller实现部分:采用ActionServlet组件实现) D, Y7 D/ W7 A F
b.ShoppingCart程序虽然基于MVC,但结构还有一些问题
9 h/ S$ y M6 s3 u 当请求数量比较多时,需要在Servlet中编写大量的if...else分支语句,而且Servlet代码量非常多。
- B0 a- o) b* z: o% K. y Z 改造方案:为Servlet提供一个XML配置文件,用于定义请求和Action组件的对应关系。然后将if...else分支中的代码提取到对应的Action组件中。
0 l* {9 D: ~# w' ~8 Q% o d *4) Struts2的主要工作流程
0 `8 H% L$ E: u: T/ w* j7 p% C a.首先客户端浏览器发送一个请求,请求到达控制器。
( Q z# @+ |+ v/ r" U+ x4 f b.控制器根据xml配置信息调用相应的Action组件4 i4 L6 B1 s! n( w4 L; D6 E
(XML配置了请求和Action对应关系)7 g1 J8 b# R4 P* k. C
c.执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。( z2 l: \+ R, Z( t
d.控制器调用JSP视图组件生成一个响应界面给浏览器
2 }7 P& x% Y! i. y! u3.Struts2框架的历史
[- d$ s* |& Q- T Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。% ?* I: z! P/ O( u4 n, ^% r
*4.Struts2框架基本使用: Y4 l6 X6 M% @) A& f$ \4 ^2 \
*1)Struts2使用步骤" Y- S: @( F6 `) m/ v! Z: _: h
*a.下载发布包,将核心包导入web工程
1 Q( N- ^( Z, J: P7 G struts2-core-2.1.8.jar:Struts2核心包
) P& F% P7 `# g# F6 y xwork-core-2.1.6.jar : Xwork核心包; T* |1 N, ]/ r+ ]% q
ognl-2.7.3.jar :OGNL技术工具包,与EL相似,但比EL强大。
& ~% F* y7 F4 h freemarker-2.3.15.jar:界面模板技术,与JSP相似。
6 d0 P, | N; F. |7 s commons-fileupload-1.2.1.jar :文件上传包。& H& ` \. @! u
*b.配置Struts2控制器,在src下添加struts.xml、
* s! e3 Q1 O2 t+ Q Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。
, s8 I2 V4 r/ k/ _ 在web.xml文件中配置该Filter组件。/ k3 ]! D- S- N. ?# Y/ m# a1 u
c.根据请求编写Action,DAO,Entity等组件, l, C% C' P" b8 P
*2)HelloWord示例
% O' {4 M+ Z6 I6 A; N welcome.action-->struts2控制器-->WelcomeAction-->welcome.jsp: X7 ` y: C* ~9 E
----------------------Struts2详细工作流程---------------------------
1 ^7 P7 k3 l, k0 }+ [0 r& J/ u a.浏览器发出welcome.action请求
9 X& p2 B( r; a) \2 O. q) @. h b.请求到达Struts的Filter控制器(由于web.xml配置)
$ {/ z* U& ]' z, d7 f c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件
+ e) T2 l+ G# l$ Y( h d.调用Action组件的execute方法处理请求,最后返回一个String视图标识
: j: q, z) B' V& _0 s2 X8 v+ h e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置)7 F1 d3 _! c) ~3 `% Q$ d; _) ]( `$ ~
f.调用JSP视图生成响应界面给浏览器显示。
9 U, V8 s' W+ P; p/ _8 D |
|