该用户从未签到
|
1. 前言% i. b! Z: @6 I
1)为什么要学习struts框架
, p3 [- @2 y6 Y4 T, y4 S- Y Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。
) B4 j4 i1 s- T* P9 {7 r 2)如何学习Struts框架
; M0 l9 e7 |5 j* a2 _! O1 M3 B, z 先掌握Struts框架的使用,有余力可以了解下实现原理。% O0 P" e9 c' }9 m6 i+ O
2. MVC在javaWeb程序的使用
. I6 j" f1 u E0 H" }! z * 1) 什么是MVC?
$ }' T% J! i5 M5 X MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。1 {# B6 K) U/ u& O) L6 R. F7 P
V(View视图):负责与用户交互。将数据展现,或者是接收数据6 ?" e" {& P/ ~/ R% s( G
M(Model模型):负责业务处理。业务模型,数据模型& L7 A3 |- O6 c P* v, P E( ]8 r
C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。
1 b! @3 v7 g9 u, r/ ?7 x8 ?3 o, K 2)为什么使用MVC?; F, Q' b$ y G! s3 t8 N0 |
MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。1 t) ?, X3 }2 b' @0 f' @
3)MVC在JavaWeb中的实现( K* E- X% }: L1 T
Servlet,JSP,Filter,JDBC& [) x% d* Q9 r) v% }: z U
a.原ShoppingCart程序就是一个MVC结构实现8 \$ P* R7 u; P
View实现部分:采用JSP组件实现% J' M+ Q) v0 y3 |
Model实现部分:采用DAO、Entity等组件实现4 ~4 R$ J' _) G' B) o1 d' J% m( |
Controller实现部分:采用ActionServlet组件实现* k& u' u0 r, _
b.ShoppingCart程序虽然基于MVC,但结构还有一些问题+ Z+ U6 t' @) V' L2 y0 U. i9 T
当请求数量比较多时,需要在Servlet中编写大量的if...else分支语句,而且Servlet代码量非常多。 N( o y1 E! H% e/ e& E, r* g* b
改造方案:为Servlet提供一个XML配置文件,用于定义请求和Action组件的对应关系。然后将if...else分支中的代码提取到对应的Action组件中。
, S6 P% W5 U y6 m: H7 {" d+ q *4) Struts2的主要工作流程
5 h- k+ }( @( c- j) e( e' x a.首先客户端浏览器发送一个请求,请求到达控制器。( d+ [) f: L4 g: k6 W L2 x. n
b.控制器根据xml配置信息调用相应的Action组件
9 q5 _! m, m. m (XML配置了请求和Action对应关系)
; {! b: i& a h* G0 f. s c.执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。* v, H( e8 Y& O f' k& J$ |
d.控制器调用JSP视图组件生成一个响应界面给浏览器 |( Z- Y; _( u0 k* p! L* D& p5 ^
3.Struts2框架的历史
3 J2 w% g V& A" t7 n/ i7 D! L Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。
, H3 b* Z* i+ c& [1 H/ K*4.Struts2框架基本使用* o1 S" w3 _: [+ f( J8 X6 p
*1)Struts2使用步骤
9 _& d3 E+ ?2 A% [' G *a.下载发布包,将核心包导入web工程3 |4 m# x, l4 }8 x( D. G
struts2-core-2.1.8.jar:Struts2核心包+ a2 e$ j! {! P% D1 x0 F% ~) p
xwork-core-2.1.6.jar : Xwork核心包. `. j% ^* H7 _* Z: q* Y
ognl-2.7.3.jar :OGNL技术工具包,与EL相似,但比EL强大。
6 Z z6 C8 `9 @! n freemarker-2.3.15.jar:界面模板技术,与JSP相似。! C/ I' N" l. [5 i% ]% J9 Q. L
commons-fileupload-1.2.1.jar :文件上传包。& Y" Q. w$ k" y$ E7 W+ {& l
*b.配置Struts2控制器,在src下添加struts.xml、# g/ F3 c6 t( p% J1 s( q. a8 e
Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。7 r1 h% G: }# ~* x, P( |7 A
在web.xml文件中配置该Filter组件。% `. N3 R X! L! b: O8 t0 [4 a
c.根据请求编写Action,DAO,Entity等组件
' r/ F6 _/ _$ f; x! \% g *2)HelloWord示例
3 g9 Y+ L* y2 s# r- F: @% `: [5 x7 f welcome.action-->struts2控制器-->WelcomeAction-->welcome.jsp3 m9 e0 `( N4 z( b$ K
----------------------Struts2详细工作流程---------------------------
2 b4 U( {; `2 a& Z. Z: H a.浏览器发出welcome.action请求- B/ f# z H: P
b.请求到达Struts的Filter控制器(由于web.xml配置)7 H+ H7 B7 S8 K4 V6 q5 s2 ]
c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件
* C8 e6 G* g& ^* ]+ \8 [* r d.调用Action组件的execute方法处理请求,最后返回一个String视图标识4 ?8 m; M, d" z) T. z3 F
e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置)
W. M& G2 `- O f.调用JSP视图生成响应界面给浏览器显示。
& P# X1 T8 A. C& V2 ?5 _ |
|