该用户从未签到
|
1. 前言) i9 w9 c! q2 Y0 c, Q6 _
1)为什么要学习struts框架! M' I$ k5 z& @ B) Q9 U0 m3 m/ J
Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。! i3 c) n4 g% N( X: S9 m
2)如何学习Struts框架
9 Y8 b+ S2 M1 K$ @ 先掌握Struts框架的使用,有余力可以了解下实现原理。
5 Y$ V0 k; C4 d* u% h# w* w* M2. MVC在javaWeb程序的使用2 r) ?7 _6 `! X3 u$ Z
* 1) 什么是MVC?
9 T s Q1 f& ^, ?; P MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。0 j( J% L5 c9 ^
V(View视图):负责与用户交互。将数据展现,或者是接收数据
& K- j9 r4 ]5 j* o9 k3 b M(Model模型):负责业务处理。业务模型,数据模型
3 H+ L" V# x% F5 A C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。- ?; H5 t: H ?' S
2)为什么使用MVC?/ y! p7 S& c. j
MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。* s* E2 {0 f/ E6 W! V9 u3 T, C4 m
3)MVC在JavaWeb中的实现* \* a( S1 R- F0 t. }
Servlet,JSP,Filter,JDBC
; S, q: I" r# H1 ~$ ? a.原ShoppingCart程序就是一个MVC结构实现
0 }- K% s" H) }( _# p/ N' N View实现部分:采用JSP组件实现2 t) V. v% {: D9 v! L7 Q( j5 }
Model实现部分:采用DAO、Entity等组件实现
8 m$ e7 y+ N1 ? g5 D Controller实现部分:采用ActionServlet组件实现* B* [4 k, d5 k# b+ T4 P4 ^3 P% J
b.ShoppingCart程序虽然基于MVC,但结构还有一些问题8 B4 S$ y% u4 C( u9 a
当请求数量比较多时,需要在Servlet中编写大量的if...else分支语句,而且Servlet代码量非常多。1 K; C7 c0 L B% H `; u
改造方案:为Servlet提供一个XML配置文件,用于定义请求和Action组件的对应关系。然后将if...else分支中的代码提取到对应的Action组件中。% O. l3 R: R8 y5 r
*4) Struts2的主要工作流程
9 v) s: u9 N6 f: P" m9 V6 t a.首先客户端浏览器发送一个请求,请求到达控制器。, m r, G2 s; d3 ?7 o9 y, g. n. p
b.控制器根据xml配置信息调用相应的Action组件
# z" s* {6 A% f2 v0 T P2 B (XML配置了请求和Action对应关系)
+ q# g, Q6 g" V, [. ?! h5 p% D9 U c.执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。1 W# s6 n; D7 U6 f
d.控制器调用JSP视图组件生成一个响应界面给浏览器4 c( k1 K5 m. b2 l$ Z; W$ s
3.Struts2框架的历史
/ v4 F) k$ r r- C6 o0 { Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。0 | K3 I$ t7 [" @) c$ L/ I
*4.Struts2框架基本使用* U$ O$ `. l/ T0 k9 y6 X2 k
*1)Struts2使用步骤$ P$ N1 P" c8 z8 N5 V( l6 J2 Z
*a.下载发布包,将核心包导入web工程
% m4 W0 z9 `0 x- j$ S( V struts2-core-2.1.8.jar:Struts2核心包
1 D% o4 b8 \( B, F7 C xwork-core-2.1.6.jar : Xwork核心包7 ^) I" v+ @1 v; x
ognl-2.7.3.jar :OGNL技术工具包,与EL相似,但比EL强大。
# m" ^* s" T8 n8 E' L$ P1 l freemarker-2.3.15.jar:界面模板技术,与JSP相似。
2 y0 q% T0 a/ D6 g commons-fileupload-1.2.1.jar :文件上传包。5 m2 n. w, w1 `4 e3 j
*b.配置Struts2控制器,在src下添加struts.xml、
( F6 N+ t3 H4 n Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。$ E+ r2 S& ]( f
在web.xml文件中配置该Filter组件。5 g7 W; [6 L1 a3 L
c.根据请求编写Action,DAO,Entity等组件
( ]' r( v- g7 _( E/ @: _; u. d" y: G *2)HelloWord示例
3 K0 S o/ Y" {" [" C& @% b welcome.action-->struts2控制器-->WelcomeAction-->welcome.jsp- D, v4 U* ~% x. `3 ~, o! J3 j
----------------------Struts2详细工作流程---------------------------/ `8 e6 D& h0 [5 O
a.浏览器发出welcome.action请求
; J, D5 E. s: W1 L/ t- h b.请求到达Struts的Filter控制器(由于web.xml配置)
: s }6 q0 m3 _0 z) f# X+ d c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件
. V" P$ J( i+ e/ G- t d.调用Action组件的execute方法处理请求,最后返回一个String视图标识
8 c2 G( P+ F6 ]( d Z e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置)( Y* D' J8 P% @( a, {4 b, b
f.调用JSP视图生成响应界面给浏览器显示。+ w; l9 a4 t& z* q. e+ H7 G
|
|