该用户从未签到
|
1. 前言
, R( p4 X) l3 ]9 b6 B* u 1)为什么要学习struts框架
: @# u3 j2 @2 w, w3 ]2 _% _ Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。
- c1 I# m# z% U9 \$ q 2)如何学习Struts框架
]# f- R2 ^. ?- R. q1 l 先掌握Struts框架的使用,有余力可以了解下实现原理。6 l. H6 r4 L- j( D$ a+ B
2. MVC在javaWeb程序的使用3 |/ a0 }! V1 n9 A4 k$ C! i: a$ H1 a
* 1) 什么是MVC?. R0 @$ y1 [2 C. k% ]* b4 s% m
MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。
9 H9 q' o( e6 _' B7 K& f V(View视图):负责与用户交互。将数据展现,或者是接收数据
- q' Z/ z$ ^9 v! z a M(Model模型):负责业务处理。业务模型,数据模型
3 y% `6 o% G/ _0 }5 A C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。
% l: }, a5 Z: q- ]( F 2)为什么使用MVC?5 E4 R/ m) L$ Y
MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。
1 a) t- e; f' t7 v) }! q7 q& g 3)MVC在JavaWeb中的实现
) l$ m1 b' \4 z5 W8 a8 S Servlet,JSP,Filter,JDBC* A! k' \! l( F
a.原ShoppingCart程序就是一个MVC结构实现& [$ P- Q1 @' @% L, J: |
View实现部分:采用JSP组件实现$ v: U, T1 \( E5 b& ~# T$ O) t
Model实现部分:采用DAO、Entity等组件实现6 D9 k- O' h" n2 R7 t% p
Controller实现部分:采用ActionServlet组件实现
% ]" B; z7 }3 z# y# l b.ShoppingCart程序虽然基于MVC,但结构还有一些问题1 t1 A+ J. F$ p, h& C1 r- S
当请求数量比较多时,需要在Servlet中编写大量的if...else分支语句,而且Servlet代码量非常多。; `$ w/ r6 z( Z9 `; p0 g
改造方案:为Servlet提供一个XML配置文件,用于定义请求和Action组件的对应关系。然后将if...else分支中的代码提取到对应的Action组件中。* ?0 [3 W5 g3 Y* t& ?: g) j/ s& M1 u( n
*4) Struts2的主要工作流程
, C0 U/ G ]" l4 M, Q1 ` a.首先客户端浏览器发送一个请求,请求到达控制器。) W0 T* u& W p8 n6 B8 Y( x
b.控制器根据xml配置信息调用相应的Action组件# h& ^1 S5 }% r( C: {
(XML配置了请求和Action对应关系); H4 v9 ~5 F1 \( d
c.执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。
- N' r" O7 i3 L8 b: W d.控制器调用JSP视图组件生成一个响应界面给浏览器
% d( @9 v0 q) [& z" o- z4 l3.Struts2框架的历史; ~: K# v) X4 Q7 Y$ `6 E1 J
Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。
0 j' a y) }' O9 d7 Y! z0 X [*4.Struts2框架基本使用* F8 f! a; G0 Y
*1)Struts2使用步骤
# y- E q- b* g: s *a.下载发布包,将核心包导入web工程
1 a- f2 }7 c4 Y z m struts2-core-2.1.8.jar:Struts2核心包, I! C6 ]- L& e, J3 {/ j/ W
xwork-core-2.1.6.jar : Xwork核心包
. {" G6 x3 N5 y3 R% Q# ` ognl-2.7.3.jar :OGNL技术工具包,与EL相似,但比EL强大。
1 h) H1 ^- C9 {7 B freemarker-2.3.15.jar:界面模板技术,与JSP相似。
& P% s6 T" F0 z, `+ x- D commons-fileupload-1.2.1.jar :文件上传包。
" y) ?: @9 g3 o! @4 S- I *b.配置Struts2控制器,在src下添加struts.xml、3 r. k2 p* k& I% ~0 L
Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。% Q: G. {2 r$ T' H. t3 K
在web.xml文件中配置该Filter组件。
+ @" K v3 a, g, [. e c.根据请求编写Action,DAO,Entity等组件$ i1 l* E* F; {6 I& [$ ?8 U6 j# Z
*2)HelloWord示例$ }: `" @4 e) z! D
welcome.action-->struts2控制器-->WelcomeAction-->welcome.jsp. E% j% E6 Q0 c+ H, k( y" d8 K
----------------------Struts2详细工作流程---------------------------! ~2 t: V0 U x! @
a.浏览器发出welcome.action请求& c/ Z0 u6 ]4 Q$ H4 j9 V
b.请求到达Struts的Filter控制器(由于web.xml配置)
: Y+ u1 Y# r1 F5 K7 ] c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件; [4 E. T6 ^2 {+ P. R5 r% Q j
d.调用Action组件的execute方法处理请求,最后返回一个String视图标识- D1 `! F# e }# f) R2 ^& a' p
e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置)
! v9 M, I+ o, R. c/ @0 u3 ?4 g; r f.调用JSP视图生成响应界面给浏览器显示。
( A( z c- K3 n |
|