该用户从未签到
|
1. 前言
7 ]$ c. @+ b5 A8 Q- h! x2 a 1)为什么要学习struts框架, x0 [3 |8 @1 e8 H* }$ Z X
Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。1 F }% ~+ Z1 `6 i% Z
2)如何学习Struts框架" J D# {. E! H$ D* L3 C" [1 P) D
先掌握Struts框架的使用,有余力可以了解下实现原理。
6 ?$ ~2 H1 @3 P8 ] U8 M7 [2. MVC在javaWeb程序的使用& U7 _. O0 {1 L7 E) b( J% h
* 1) 什么是MVC?, M% ^4 h( k$ I' D* C2 ?
MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。
$ U' `+ k8 G% s9 n V(View视图):负责与用户交互。将数据展现,或者是接收数据
2 x/ k0 k" K) ]' I* z! u M(Model模型):负责业务处理。业务模型,数据模型
) p$ R+ Y) E: ~0 ?- h C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。, x! ?; g+ L8 a( ]# F$ K0 Z1 Q
2)为什么使用MVC?7 E: K+ e0 H3 |/ Z7 e7 ]4 {% B
MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。
4 _ O3 ~) o. g* I; q3 h+ s# s 3)MVC在JavaWeb中的实现! u* x* R2 X) } W0 k" }0 O
Servlet,JSP,Filter,JDBC
% n& L, m$ `/ E- Y$ G, L a.原ShoppingCart程序就是一个MVC结构实现
( W! z3 G# e* s6 b View实现部分:采用JSP组件实现% @* j8 l& R% j: O9 q
Model实现部分:采用DAO、Entity等组件实现0 b( t) ^6 h/ O: K R+ c$ `* k7 N" A
Controller实现部分:采用ActionServlet组件实现
" c% S$ ^' d/ e+ k b.ShoppingCart程序虽然基于MVC,但结构还有一些问题% [* }; v0 \; L6 X9 I; G$ O, j; W
当请求数量比较多时,需要在Servlet中编写大量的if...else分支语句,而且Servlet代码量非常多。
* A8 j* f ]$ t6 G+ h 改造方案:为Servlet提供一个XML配置文件,用于定义请求和Action组件的对应关系。然后将if...else分支中的代码提取到对应的Action组件中。1 p X0 l" R q1 @
*4) Struts2的主要工作流程& ?3 F5 _0 O5 k+ Q2 t
a.首先客户端浏览器发送一个请求,请求到达控制器。 z9 G$ ~' `8 w$ ~3 ]
b.控制器根据xml配置信息调用相应的Action组件
5 \8 u- ~ c$ r( x3 s9 X9 c( \: |1 y (XML配置了请求和Action对应关系)
) \! O8 m2 \/ r5 O3 N c.执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。
8 L; z ], y; s! O4 b d.控制器调用JSP视图组件生成一个响应界面给浏览器0 Z. e6 [! ~. l# g/ a: m) e, J* w6 W
3.Struts2框架的历史+ Q1 A+ y9 G. r. c# ]( b
Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。: r! P! f! Q# Z1 d' c& g3 R* B
*4.Struts2框架基本使用
" j' `5 c# a% u1 d *1)Struts2使用步骤$ F' x* u$ q% W* F& p6 }/ \
*a.下载发布包,将核心包导入web工程, u3 F/ s- l Y( r3 L2 b
struts2-core-2.1.8.jar:Struts2核心包
- ?- D* e }2 S# b4 o, m$ D xwork-core-2.1.6.jar : Xwork核心包7 q6 R! `9 @% ?; O- v% z4 ^% q: E
ognl-2.7.3.jar :OGNL技术工具包,与EL相似,但比EL强大。$ _7 C- Y$ r3 E9 h+ f' a3 @
freemarker-2.3.15.jar:界面模板技术,与JSP相似。% R0 Y; |: ?" ~$ N7 G
commons-fileupload-1.2.1.jar :文件上传包。
_6 ~7 l- E' O$ M0 D *b.配置Struts2控制器,在src下添加struts.xml、
. S: L, ~6 R# e3 y2 w I' m. |9 K Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。
: w4 N& o- `/ s$ @1 s. { 在web.xml文件中配置该Filter组件。
* B, P4 {1 G& C8 M8 J c.根据请求编写Action,DAO,Entity等组件
* p# w$ Z. O& `9 V# `. g6 P5 V *2)HelloWord示例
2 `" ]9 R& e) E! r6 I+ J welcome.action-->struts2控制器-->WelcomeAction-->welcome.jsp
) M7 k% T( v% V2 J; j ----------------------Struts2详细工作流程---------------------------) o" u( @ o! w+ @+ ?: b$ k
a.浏览器发出welcome.action请求
2 Y g2 z- O$ m% e0 r3 _ b.请求到达Struts的Filter控制器(由于web.xml配置)2 m; G# @1 k+ @: G3 J' p
c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件2 v4 s' ]2 n4 S8 T
d.调用Action组件的execute方法处理请求,最后返回一个String视图标识5 A6 H6 L9 U, ]: n) ?
e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置)& R5 u2 p2 T. O3 d5 S5 e8 M
f.调用JSP视图生成响应界面给浏览器显示。& Y$ V5 }2 J& ^! d6 \
|
|