Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的,但现在已经不止应用于企业应用。
是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架:
从大小与开销两方面而言Spring都是轻量的
通过控制反转(IOC)的技术达到松耦合的目的
提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发
包含并管理应用对象的配置和生命周期,这个意义上是一种容器
将简单的组件配置、组合成为复杂的应用,这个意义上是框架
Spring作用:
容器
提供了对多种技术的支持
- JMS
- MQ支持
- UnitTest
- ......
AOP(事务管理、日志等)
提供了众多方便应用的辅助类(JDBC Template等)
对主流应用框架(Hibernate等)提供了良好的支持
适用范围:
构建企业应用(SpringMVC + Spring + Hibernate/Mybatis)
单独只用Bean容器(Bean管理)
单独使用AOP进行切面管理
其他的Spring功能,如:对消息的支持等
在互联网中的应用......
框架(别人搭舞台,你来表演):
特点:半成品
封装了特定的处理流程和控制逻辑
成熟的、不断升级改进的软件
与类库的区别:
框架一般是封装了逻辑、高内聚的,类库则是松散的工具组合
框架专注于某一领域,类库则是更通用的
IOC:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责
是获得依赖对象的过程被反转了,控制被反转之后,获得依赖对象的过程由自身管理变为有IOC容器主动注入
IOC本质就是要抛弃new的方法取得对象,通过配置来取得对象。
DI(依赖注入)是其一种实现方式
目的:创建对象并且组装对象之间的关系
Struts2
Struts是流行和成熟的基于MVC设计模式的web应用程序框架。
Struts翻译:支柱,支杆,来源于建筑和旧式飞机使用的而金属支架。
Apache Struts2的环境需求:servlet API 2.4 JSP API 2.0 Java 1.5+
搭建Struts2环境步骤:
1. 下载相关jar包
2. 创建web项目
3. 创建并完善相关配置文件
4. 创建Action并测试启动
---------------------------------------------------
Struts2工作流程:
1、客户端(HttpServletRequest)发送请求
2、请求经过过滤器(ActionContextCleanUp-->StrutsPrepareAndExecuteFilter(核心过滤器 )
3、请求到达ActionMapper,通过它来决定调用哪个Action
4、当决定调用某个Action后,请求又会通过核心过滤器,核心过滤器把请求的处理交给ActionProxy
5、ActionProxy通过ConfigurationManager询问配置文件(Struts.xml),找到要调用的Action类。
---------------------------------
Struts2核心文件:
一. web.xml
任何MVC框架都需要与web应用整合,这就不得不借助于web.xml文件,
只有配置在web.xml文件中servlet才会被应用加载。
通常,所有的MVC框架都需要web应用加载一个核心控制器,对于Struts2框架而言,
需要加载StrutsPrepareAndExecuteFilter,
只要web应用负责加载StrutsPrepareAndExecuteFilter,
StrutsPrepareAndExecuteFilter将会加载Struts2框架。
二. struts.xml
Struts2的核心配置文件,再开发过程中利用率最高,该文件主要负责管理应用中的Action映射,
以及该Action包含的Result定义等。
struts.xml中包含的内容:
1. 全局属性
2. 用户请求和响应Action之间的对应关系
3. Action可能用到的参数和返回结果
4. 各种拦截器的配置
三. struts.properties
struts2框架的全局属性文件,自动加载。
该文件包含很多key-value对。
该文件完全可以配置在struts.xml文件中,使用constant元素。
传统是servlet+jdbc实现MVC模式。
动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多。推荐使用通配符的方式。
struts2提供三种方式去访问Servlet API:
1. ActionContext 2. 实现***Aware 3. ServletActionContext