该用户从未签到
|
1. 前言
2 W" b3 K9 D1 b, | 1)为什么要学习struts框架
+ x; d: s0 D W( [- v# F Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。8 j' A4 i$ Z$ K( b5 y* _
2)如何学习Struts框架
' l, K$ E) y- O$ j0 Z+ |5 N 先掌握Struts框架的使用,有余力可以了解下实现原理。) o& s8 i! B4 P( {8 {
2. MVC在javaWeb程序的使用3 J2 Z7 K7 O# p( n+ `
* 1) 什么是MVC?) V5 F4 S; }. g. C4 ?; C
MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。: X% o9 U8 a) C# `* o
V(View视图):负责与用户交互。将数据展现,或者是接收数据% P8 d% R" e8 o: N: m& {
M(Model模型):负责业务处理。业务模型,数据模型
. y+ E6 U8 N5 i C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。/ E2 a3 U4 z+ ?7 ~
2)为什么使用MVC?* Y( A$ f4 F; s; f2 q) [
MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。
: |, J( ` I% n4 ~ 3)MVC在JavaWeb中的实现 a" h5 N6 \: S. \2 M) b
Servlet,JSP,Filter,JDBC
) i- K2 ?( `8 }$ j a.原ShoppingCart程序就是一个MVC结构实现$ B2 }7 _* `( c8 ]
View实现部分:采用JSP组件实现' w# M; a5 J/ ~+ K
Model实现部分:采用DAO、Entity等组件实现6 D/ b2 L5 I' ]% Q' `
Controller实现部分:采用ActionServlet组件实现
+ O6 P1 G, x8 d b.ShoppingCart程序虽然基于MVC,但结构还有一些问题
1 x9 G" Q& f {' D2 G( u 当请求数量比较多时,需要在Servlet中编写大量的if...else分支语句,而且Servlet代码量非常多。9 S5 q& u. P* @
改造方案:为Servlet提供一个XML配置文件,用于定义请求和Action组件的对应关系。然后将if...else分支中的代码提取到对应的Action组件中。/ G0 \8 X7 d# b
*4) Struts2的主要工作流程6 [9 Q* Z5 e4 `" ^ f: I, ~
a.首先客户端浏览器发送一个请求,请求到达控制器。
) E/ `( a8 E' D7 R, y% a b.控制器根据xml配置信息调用相应的Action组件
k9 o( a& \) T9 N (XML配置了请求和Action对应关系)- q9 m, Z: ^3 X! e' A1 K
c.执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。
' d" p' [; G3 O9 c$ _0 X# }6 @& c: w d.控制器调用JSP视图组件生成一个响应界面给浏览器" m1 r5 t4 `' m
3.Struts2框架的历史* Y& | z1 {; q0 \1 K
Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。
# j8 ~1 K6 P1 H4 G# v, Q" l: F9 L T*4.Struts2框架基本使用, W: M- E* _4 v
*1)Struts2使用步骤
/ q3 y: D" F( N% y4 T1 S *a.下载发布包,将核心包导入web工程
e5 y2 N9 [3 _3 K4 U struts2-core-2.1.8.jar:Struts2核心包6 m3 @7 }- V8 }4 u
xwork-core-2.1.6.jar : Xwork核心包
" C0 t: Q( A- l+ h( m ognl-2.7.3.jar :OGNL技术工具包,与EL相似,但比EL强大。4 @, S# \$ p! @& d
freemarker-2.3.15.jar:界面模板技术,与JSP相似。" m- [" H" b0 |- e& y) c
commons-fileupload-1.2.1.jar :文件上传包。% U4 ^! u1 O: {; L2 D
*b.配置Struts2控制器,在src下添加struts.xml、% v4 k2 W( B) b! D, F
Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。# w6 j, E! |5 x
在web.xml文件中配置该Filter组件。
. c ]' P+ t! R: X h c.根据请求编写Action,DAO,Entity等组件
' i/ A* y! W- o4 K9 P3 l *2)HelloWord示例1 U! f7 n# Z4 z8 n
welcome.action-->struts2控制器-->WelcomeAction-->welcome.jsp
4 ~# E7 t# `* Y9 t+ M ----------------------Struts2详细工作流程---------------------------
; ^' H7 z& _+ }. _$ k. L a.浏览器发出welcome.action请求
8 `. b# w8 T$ _% U1 a0 a b.请求到达Struts的Filter控制器(由于web.xml配置)
' p) T1 M7 n- C7 z# w1 c; N c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件( A3 S% G# @$ w
d.调用Action组件的execute方法处理请求,最后返回一个String视图标识
- J4 a, z7 A3 X3 H$ o' \3 w e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置)3 |+ N: X- M p) ^3 T& q
f.调用JSP视图生成响应界面给浏览器显示。
8 H6 f8 |" o$ w: P- D4 L/ C! F |
|