|
该用户从未签到
|
1. 前言4 x0 `8 L4 _1 C0 h7 \
1)为什么要学习struts框架' x! v, k I3 O2 O- m+ d' m
Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。' C2 H7 |6 K4 T& K
2)如何学习Struts框架- F5 P- h6 ?( j4 Q# P5 \
先掌握Struts框架的使用,有余力可以了解下实现原理。
. A- f. L4 q- M2 m2. MVC在javaWeb程序的使用$ L# l7 |" x/ k2 W; A6 @' h
* 1) 什么是MVC?' _6 h( {) L& z. ?3 j. i
MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。
& u+ q, o% Y/ h& \ V(View视图):负责与用户交互。将数据展现,或者是接收数据7 k7 b. f! ]" J( V# f
M(Model模型):负责业务处理。业务模型,数据模型+ L6 W6 w( }! O
C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。
; v' x0 W# `/ z7 K/ m% U 2)为什么使用MVC?
, I$ c& ?4 a1 w% |9 | MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。
! P& g5 D) \4 S; q2 a* N 3)MVC在JavaWeb中的实现- [$ s/ n! l* O
Servlet,JSP,Filter,JDBC
8 F( _! J, _5 A6 p a.原ShoppingCart程序就是一个MVC结构实现
2 s7 s5 T( L" C7 C( O# G View实现部分:采用JSP组件实现" V$ Z% Q' D6 D+ _
Model实现部分:采用DAO、Entity等组件实现% a+ w J, F" C7 U: C9 O
Controller实现部分:采用ActionServlet组件实现$ L3 P5 L# U# s2 z
b.ShoppingCart程序虽然基于MVC,但结构还有一些问题
( l) B5 G5 m. s. a 当请求数量比较多时,需要在Servlet中编写大量的if...else分支语句,而且Servlet代码量非常多。
- f. j" s' \* [1 I+ `6 T/ b 改造方案:为Servlet提供一个XML配置文件,用于定义请求和Action组件的对应关系。然后将if...else分支中的代码提取到对应的Action组件中。3 u v* v) m; B2 B5 |
*4) Struts2的主要工作流程
) {+ i! ?0 ]$ o" Y# @9 w a.首先客户端浏览器发送一个请求,请求到达控制器。' z4 o) R, E( [
b.控制器根据xml配置信息调用相应的Action组件
' h+ o. h$ t$ f/ D$ ?9 o (XML配置了请求和Action对应关系)
% d0 B* M1 ^" ]& P) O4 x4 t c.执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。
1 @ [9 S; b& g0 l7 q/ i6 P9 Y d.控制器调用JSP视图组件生成一个响应界面给浏览器
/ y. n5 z- u" ?5 W+ ^' k3.Struts2框架的历史/ _* }: L, T9 W$ u
Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。0 Q$ \9 \+ r( v9 t3 Y/ z) }- s* {$ \
*4.Struts2框架基本使用/ { b6 m; r% y$ t6 |1 M! m5 Q
*1)Struts2使用步骤7 f. V6 q! Z0 U3 Z# o! G; u# ^
*a.下载发布包,将核心包导入web工程
% e8 F( b( n9 _5 c% H struts2-core-2.1.8.jar:Struts2核心包
+ Q m- I- j; @, W n# J/ B# Q# o% ` xwork-core-2.1.6.jar : Xwork核心包& p p0 I( U, I, k
ognl-2.7.3.jar :OGNL技术工具包,与EL相似,但比EL强大。
G- P9 m1 ?$ _' R5 w0 e freemarker-2.3.15.jar:界面模板技术,与JSP相似。
% W6 G* |- [' _0 h/ z+ V; P commons-fileupload-1.2.1.jar :文件上传包。
3 ?- R2 D/ b! {5 K *b.配置Struts2控制器,在src下添加struts.xml、
" L# P t9 n& @, U1 p8 } Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。$ r1 a3 B& k( g4 O9 e& K
在web.xml文件中配置该Filter组件。+ l9 r9 C# f0 {4 Q( L0 c
c.根据请求编写Action,DAO,Entity等组件
2 g$ Z" a* U9 I3 a *2)HelloWord示例4 V. O; q$ M2 t# d7 q* P
welcome.action-->struts2控制器-->WelcomeAction-->welcome.jsp
' \" w; I1 n u; L s' ~ ----------------------Struts2详细工作流程---------------------------
% Q9 N6 j7 {# J& e, Z a.浏览器发出welcome.action请求6 M6 E6 v9 p# g8 K% P" \2 ^: d9 W2 y. h! r
b.请求到达Struts的Filter控制器(由于web.xml配置)
' w1 v1 W- F* {, ~: W2 F' g- k c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件
5 L! M. W( B' w& \ d.调用Action组件的execute方法处理请求,最后返回一个String视图标识
4 ?7 F: F, l0 A( S e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置)
# D/ P3 S$ ?5 y1 z5 [6 X! J5 D f.调用JSP视图生成响应界面给浏览器显示。
$ a- a; r6 W9 a |
|