该用户从未签到
|
1. 前言- t. p: z, I9 ?( [5 O$ B g
1)为什么要学习struts框架
, R: u8 W, s* ] i Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。
" N3 ?+ v7 V7 L$ L$ B 2)如何学习Struts框架3 W! ^- l# q8 @! _& J& u# D
先掌握Struts框架的使用,有余力可以了解下实现原理。& K/ O9 K! Z7 x" Q
2. MVC在javaWeb程序的使用+ f5 J6 m1 q" p; H
* 1) 什么是MVC?% s; B: Y0 X- Y1 M [
MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。1 t0 Y& C$ @7 ~, d
V(View视图):负责与用户交互。将数据展现,或者是接收数据1 N+ ^/ t6 O' g: Z6 t
M(Model模型):负责业务处理。业务模型,数据模型
2 G5 h& C! j s1 ?; t C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。
/ g5 w. ^9 l+ ~; ?$ V 2)为什么使用MVC?
- ]. R9 N9 n& z7 H9 | P. w8 K MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。8 K& y. g, e: {% v, Z
3)MVC在JavaWeb中的实现
2 x0 z; C3 M* z0 ]! | Servlet,JSP,Filter,JDBC
! `: z" ~( B2 W9 R: n a.原ShoppingCart程序就是一个MVC结构实现
0 ^! b M5 \7 A4 z1 l7 s" ` View实现部分:采用JSP组件实现
+ J& }2 P, z! s" W* P8 z Model实现部分:采用DAO、Entity等组件实现
+ M8 k2 v3 T7 b+ ~" F3 }0 w Controller实现部分:采用ActionServlet组件实现1 p2 G" ] f% y7 [, i
b.ShoppingCart程序虽然基于MVC,但结构还有一些问题* v& r, L3 S+ [% y8 \( M4 z# n! Z
当请求数量比较多时,需要在Servlet中编写大量的if...else分支语句,而且Servlet代码量非常多。
; A8 Q* u( ~4 m# v0 o# g, y" { 改造方案:为Servlet提供一个XML配置文件,用于定义请求和Action组件的对应关系。然后将if...else分支中的代码提取到对应的Action组件中。
% Q; W. j4 p5 S3 P1 n *4) Struts2的主要工作流程
7 n: O0 b" \! S* V2 q a.首先客户端浏览器发送一个请求,请求到达控制器。
5 @; U) i! Z7 }& \* M b.控制器根据xml配置信息调用相应的Action组件
7 W# ]7 N, ] k# \" z (XML配置了请求和Action对应关系)
. N( o: X1 X7 R5 h1 M/ V c.执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。) Z+ g! \, l4 x2 z( r" k$ c
d.控制器调用JSP视图组件生成一个响应界面给浏览器
7 ?% d+ p: Y" p; y$ C9 w* n3.Struts2框架的历史, T6 n- |' X% c6 g; G+ G7 W% O, L
Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。 i; y9 q( d/ e% v2 [, q+ `
*4.Struts2框架基本使用
6 ~: j# U! K9 P* T# |/ E *1)Struts2使用步骤
, Y8 ~: m9 x3 P1 w: Q: s *a.下载发布包,将核心包导入web工程 J# A$ `! ?# l" B7 _" M' _# N5 E
struts2-core-2.1.8.jar:Struts2核心包
4 t+ a. i2 e( z1 Z7 E xwork-core-2.1.6.jar : Xwork核心包
& K' j9 Z* d3 n2 k ognl-2.7.3.jar :OGNL技术工具包,与EL相似,但比EL强大。
" i% j6 M* L' R, j$ M freemarker-2.3.15.jar:界面模板技术,与JSP相似。
( p1 r) L( t4 X5 R! C8 p, V8 H# O commons-fileupload-1.2.1.jar :文件上传包。- `5 x- _& x' F2 _0 J
*b.配置Struts2控制器,在src下添加struts.xml、( k9 r5 B$ Z( r6 c/ [
Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。6 {$ F- [ C1 m1 U. ], b8 b4 f, B* r
在web.xml文件中配置该Filter组件。
4 s+ o1 i: H' ^/ f+ n- k c.根据请求编写Action,DAO,Entity等组件
1 R0 Y" y8 h7 R) {/ g *2)HelloWord示例8 { g5 ?, x( d) n# l4 j" B) v. D* ]* b
welcome.action-->struts2控制器-->WelcomeAction-->welcome.jsp* W* V# n& y ~8 \" A- d
----------------------Struts2详细工作流程---------------------------
; i8 H( F! w5 [2 p* r a.浏览器发出welcome.action请求. {; L. a: f4 e
b.请求到达Struts的Filter控制器(由于web.xml配置)
6 j/ r7 M# }' H. k1 q c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件! F. s* q- @7 \ t; H* h
d.调用Action组件的execute方法处理请求,最后返回一个String视图标识. X1 t! x* d/ j0 B# X0 o
e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置)
+ ]4 b0 H: U# ]! ~ f.调用JSP视图生成响应界面给浏览器显示。+ d; L# v% h5 q: y2 o8 k. N
|
|