|
该用户从未签到
|
1. 前言
5 w( _! x7 u! v! F 1)为什么要学习struts框架4 p5 c a) X) S5 w! O; `0 S6 l
Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。
' E3 y( C2 f- m' r, q( Q 2)如何学习Struts框架0 T2 ?* t( \7 y0 ]! n4 E
先掌握Struts框架的使用,有余力可以了解下实现原理。
2 A0 F* V. q! f4 r( J2. MVC在javaWeb程序的使用$ X$ e# Y* B- O$ r! T3 O
* 1) 什么是MVC?5 K4 _, ]2 w6 K4 P# q* `! l
MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。. U4 P, m+ J* t5 ~' {
V(View视图):负责与用户交互。将数据展现,或者是接收数据
: u$ i( J! O( a+ l9 ?3 H M(Model模型):负责业务处理。业务模型,数据模型
^' C9 Z& o* z0 o C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。; X& l W2 e1 y+ d" t1 V
2)为什么使用MVC?( P1 I/ y3 {/ T; ~3 |) A
MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。. ], p; Q% v }5 Q
3)MVC在JavaWeb中的实现; |! s+ |" @0 l* g
Servlet,JSP,Filter,JDBC
' |! R! H3 N& t0 R6 V8 L! D a.原ShoppingCart程序就是一个MVC结构实现
' e9 s( z2 G1 i" u$ m7 H View实现部分:采用JSP组件实现( I2 r( d. ~1 G% \# }6 g0 B+ E' n
Model实现部分:采用DAO、Entity等组件实现
. X+ i, r, A( N! p& c( Z Controller实现部分:采用ActionServlet组件实现, t X G* ^; [" s0 a+ e
b.ShoppingCart程序虽然基于MVC,但结构还有一些问题5 k( k: |9 r$ A, ]' N- R
当请求数量比较多时,需要在Servlet中编写大量的if...else分支语句,而且Servlet代码量非常多。# O3 H1 Q& s& T) Y8 X9 J
改造方案:为Servlet提供一个XML配置文件,用于定义请求和Action组件的对应关系。然后将if...else分支中的代码提取到对应的Action组件中。
& o2 i: l+ y8 J9 c- T+ K *4) Struts2的主要工作流程
) m: Q8 @/ h' a, Q) L, ^8 z5 I a.首先客户端浏览器发送一个请求,请求到达控制器。+ ]% H' I+ c" u& ] t6 b8 O
b.控制器根据xml配置信息调用相应的Action组件
, O5 I f3 N, r8 b. ^5 ^ (XML配置了请求和Action对应关系)
s: @! q; b; b& I" Y5 f/ K c.执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。
* e3 x7 s4 V% q' s1 U& w' L# p8 { d.控制器调用JSP视图组件生成一个响应界面给浏览器
8 \1 Y# R, Y M2 ~ o d A3.Struts2框架的历史
0 v- g! O2 T9 _0 ?7 K) u Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。) g3 Z0 t. T* k$ V+ `
*4.Struts2框架基本使用
* c% h: V) U( h8 Y1 n% }9 g *1)Struts2使用步骤& A2 i3 S; |) ^/ }
*a.下载发布包,将核心包导入web工程% v- D, x% X4 ]# y
struts2-core-2.1.8.jar:Struts2核心包! h1 J1 ~; q1 r& g1 u4 [
xwork-core-2.1.6.jar : Xwork核心包" T- h9 ]* ^ C/ m- `2 B1 x2 Q8 L* |
ognl-2.7.3.jar :OGNL技术工具包,与EL相似,但比EL强大。$ U. D2 Q5 {0 T
freemarker-2.3.15.jar:界面模板技术,与JSP相似。% |8 I8 _ v7 Y) ?
commons-fileupload-1.2.1.jar :文件上传包。
^: q6 W: w$ T4 Z2 r *b.配置Struts2控制器,在src下添加struts.xml、
3 f8 o$ a4 h5 ~! E, M# m9 } Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。9 x) `$ ^* U. K+ ]: G; X* F5 ?
在web.xml文件中配置该Filter组件。' a6 ?& ]7 L o& I9 b
c.根据请求编写Action,DAO,Entity等组件
7 m# s# t+ \9 J1 X0 S, W *2)HelloWord示例7 i* J* j8 S$ F
welcome.action-->struts2控制器-->WelcomeAction-->welcome.jsp& A# {$ s1 l% n1 A( Z4 _
----------------------Struts2详细工作流程---------------------------
. }* q4 ?( J& j: j6 n4 f; ?4 j7 w- k a.浏览器发出welcome.action请求6 e- ~: D( V# F- d! ?5 \4 B' n9 [
b.请求到达Struts的Filter控制器(由于web.xml配置)4 i# V! v* C$ I/ r- U9 G
c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件
5 r2 {- w3 l1 d" R) y* E6 F d.调用Action组件的execute方法处理请求,最后返回一个String视图标识
* H% A: d$ F/ m. [4 q% Y e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置)
" [9 D5 f% n3 ?% Q9 O8 @$ X! H' V6 U f.调用JSP视图生成响应界面给浏览器显示。6 _8 f8 u% [7 g$ {4 O/ ?1 e8 ?+ }7 M
|
|