---------------------------------------------MVC部分-----------------------------------------
. [& U9 z4 X8 P* ?" j1. MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻 辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
+ q$ s) q: h9 Z/ U6 L
: u+ f9 e" D( V! cModel(模型)是应用程序中用于处理应用程序数据逻辑的部分。
7 M& k8 `$ g8 Q$ r 通常模型对象负责在数据库中存取数据。1 D1 x* X- Z2 W _; \" q
View(视图)是应用程序中处理数据显示的部分。
' c& J4 M5 z& J 通常视图是依据模型数据创建的。3 g9 o2 V; F# f O( a+ b
Controller(控制器)是应用程序中处理用户交互的部分。7 \( X, F; j; s- u% a! _' `
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
' z& f5 K2 ? L% K
9 u e, {; U* L6 i- s9 S-------------------------------------------struts2部分-----------------------------------------
[7 Q4 ]( R6 G! k" _1. Struts 2是基于mvc的web框架,是在 WebWork的技术基础上开发的全新MVC框架。
9 Y* L4 s: q% a. R$ Y& z; ~: m1 W9 O6 i' F. i+ q
2. 工作流程
$ K% T* W; g, S% {. A6 P- Z 1> 客户端浏览器发出HTTP请求. 2> 根据web.xml配置,该请求被FilterDispatcher接收 3> 根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton 4> Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。 5> Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面 6> 返回HTTP响应到客户端浏览器 5 f& v% t! d- G9 i& L
3. 工作原理 1> 客户端初始化一个指向Servlet容器的请求 2> 这个请求经过一系列的过滤器(Filter) 3> 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4> 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 5 > ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类 6> ActionProxy创建一个ActionInvocation的实例。 7> ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 8> 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
. G; E9 F$ u. C1 i8 r6 P. R9 T4. 为什么使用struts2? 1> 开源的mvc框架 2> 纯pojo的Action 3> 更好的标签特性 4> 易测试 5> 易扩展
! H3 O3 P; g2 U------------------------------------------hibernate部分----------------------------------------- 1. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库。7 J% l6 ]# q4 t. J7 Z& i! [
2 P" T- W' ~6 |! [# D
2. 工作原理9 L( s% H# o0 _. r# h \
T1 o# |) J. o2 [5 E
1> 通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件" d- b9 h# K3 Y. e+ ]
2> 由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>读取并解析映射信息
' l% g0 k; ]& ]- I- _# K8 k3> 通过config.buildSessionFactory();//创建SessionFactory
# ^" E/ S+ q5 b$ [9 }0 X$ S4> sessionFactory.openSession();//打开Sesssion' W! @# a) i) f
5> session.beginTransaction();//创建事务Transation6 h0 Z3 d- B Z b1 n! a/ ]' m
6> persistent operate持久化操作
! X# ?( o+ W3 R f; I. D; Y7> session.getTransaction().commit();//提交事务
& i, R/ v9 z1 |+ j3 B8> 关闭Session 9> 关闭SesstionFactory
, W& U5 N3 m2 `4 b! O- X3. 为什么使用Hibernate? - T) j+ }8 M9 n
Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码 / U- R' ~! @) Y$ Q% H8 \6 b
Hibernate是一个基于jdbc的主流持久化框架,是用优秀的orm实现,它很大程度的简化了dao层编码工作 ------------------------------------------spring部分-----------------------------------------) H. P( j9 N* S- o' ]% b. h
1. Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架。
) ]% G+ A! G8 o% d y3 u( V- ^+ o- D2 P |
2. 控制反转——Spring通过一种称作控制反转(IOC)的技术促进了松耦合。当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。
1 T! k2 B M! p- g- g' I0 E8 S7 Q " @: \5 s& G$ H, j/ d6 n: H1 t
& { z/ H1 r2 S+ k; o& l; M
3. 面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务和事务进行内聚性的开发。
9 | V) T/ u% M3 d5 P; S2 Q- m, u Q
1 v. m: X' x) X$ o1 ^4.为什么使用Spring?; w& D) t. M+ s
1> 方便解耦,简化开发
" ?3 j" j- h2 @' M8 S) h: O) f2> 方便程序的测试
! ^, X3 m2 J: {, o# y# r3> 方便集成各种优秀框架
: [- Z' f2 k y# |7 g
! k' R1 K! J1 I/ P; Y% H+ L% T$ B- `4 ?/ G4 d* Q
|