该用户从未签到
|
1. 前言
/ o) q5 V* W8 ]3 [ 1)为什么要学习struts框架* d) E8 W4 ]# e- q4 U
Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。& Z+ y, r% ]6 r1 V$ `9 I+ @. s
2)如何学习Struts框架7 s" }2 Q5 ]; P" n: e5 m
先掌握Struts框架的使用,有余力可以了解下实现原理。
+ ^9 a2 c8 G, D* w2 k! {& H2. MVC在javaWeb程序的使用$ n7 m# X( y/ J2 y
* 1) 什么是MVC?
$ J7 O* d0 ^9 H. {' z+ {, c MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。% b- W9 w3 }3 F& R, a
V(View视图):负责与用户交互。将数据展现,或者是接收数据 A! S3 n7 e- }3 P$ A
M(Model模型):负责业务处理。业务模型,数据模型
9 L t$ z" J8 p- n7 d9 j5 G$ ~ C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。: W) J( a3 `, W8 F" u5 H+ y
2)为什么使用MVC?
: m5 g) @" w$ F) s" M MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。( C0 ^. k( N1 Q( [' z; s
3)MVC在JavaWeb中的实现
5 e& j: V2 d* F Servlet,JSP,Filter,JDBC
4 ~' K7 H: a j5 u" U1 e1 G* f" Y7 p a.原ShoppingCart程序就是一个MVC结构实现; e% S7 M/ h; i1 M, ?2 l3 d$ b# d
View实现部分:采用JSP组件实现
% Y: P$ Y; h" Z; A Model实现部分:采用DAO、Entity等组件实现
6 ?0 x5 j m2 l7 L3 _2 v Controller实现部分:采用ActionServlet组件实现
, ^3 z4 ~7 \! Z! L+ y b.ShoppingCart程序虽然基于MVC,但结构还有一些问题
0 y; V D/ {" j1 c- l4 q1 K: S 当请求数量比较多时,需要在Servlet中编写大量的if...else分支语句,而且Servlet代码量非常多。
. t1 U+ \5 I, K4 M* Z 改造方案:为Servlet提供一个XML配置文件,用于定义请求和Action组件的对应关系。然后将if...else分支中的代码提取到对应的Action组件中。* R9 Z* Q$ _. |# P
*4) Struts2的主要工作流程
, a- G r( z7 b1 y; g% ^ c a.首先客户端浏览器发送一个请求,请求到达控制器。+ q6 P( y( s$ a2 |4 Y
b.控制器根据xml配置信息调用相应的Action组件- B: }( T2 a$ j; l: c, H# X% }
(XML配置了请求和Action对应关系)1 i. E5 k' @4 U4 b9 a: d$ y, L
c.执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。
' f3 T* y& Z1 X! ]- a+ w, Z d.控制器调用JSP视图组件生成一个响应界面给浏览器7 Q+ q8 n; p, u
3.Struts2框架的历史1 H: Y6 ^( M" ]. J$ `
Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。* ]0 q! g, d1 }* O" _1 h" @
*4.Struts2框架基本使用, p5 H/ y m1 d& X
*1)Struts2使用步骤- R7 r: \, D$ @: D7 i- n
*a.下载发布包,将核心包导入web工程' n7 x* h+ s/ K5 J4 m! |
struts2-core-2.1.8.jar:Struts2核心包
) `# A4 g* f5 f4 w8 X xwork-core-2.1.6.jar : Xwork核心包
" c) I' X/ l C) I ognl-2.7.3.jar :OGNL技术工具包,与EL相似,但比EL强大。
. K. ]7 k8 N1 [( d; a4 R6 W% x. f freemarker-2.3.15.jar:界面模板技术,与JSP相似。$ o5 S8 U: v* ^/ I s6 G' f* d! Q
commons-fileupload-1.2.1.jar :文件上传包。/ f( S. p) j6 T v$ T; N0 o
*b.配置Struts2控制器,在src下添加struts.xml、
/ F1 t+ {/ ]- x+ `" t Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。# X1 ` {3 }, ]- W% k" S5 P( x9 @5 t
在web.xml文件中配置该Filter组件。& k2 J; j/ r. H
c.根据请求编写Action,DAO,Entity等组件
) `# D# V' B8 v *2)HelloWord示例
) o+ n; a. w7 e& M welcome.action-->struts2控制器-->WelcomeAction-->welcome.jsp9 _* r5 m! p% t4 [
----------------------Struts2详细工作流程---------------------------: F& b9 E0 r. \! R* j
a.浏览器发出welcome.action请求( \/ r# R. n2 s* l7 o
b.请求到达Struts的Filter控制器(由于web.xml配置)4 `) }' J, n% |! o& Y
c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件, y. V# C9 z! x" X+ z' j! d
d.调用Action组件的execute方法处理请求,最后返回一个String视图标识
$ Z0 F. a. Z9 m& b4 z4 i e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置)
1 G; F$ Z; @ D: h f.调用JSP视图生成响应界面给浏览器显示。
4 h6 H# R+ S9 U: n S2 c3 C0 X7 z |
|