Struts2 框架
Struts是Apache组织的一个开源项目,是一种基于MVC设计模式的java web开发框架,利用它可以简化Java Web项目的开发,提高系统的灵活性和可扩展性.
Struts 2框架的特点
扩展性强
支持使用拦截器
容易测试
默认配置
支持使用注解
支持Ajax
表现层输出形式丰富
支持使用OGNL(Object Graph Notation Language)
便于与Spring集成
开发Struts2应用所必须的类库
struts2-core.jar struts2的核心类库
xwork.jar Struts2所依赖的XWork类库
freemarker.jar struts2所依赖的FreeMarker类库,FreeMarker是java中的一种模板技术
ognl.jar 支持对象图导航语言(OGNL)的类库,OGNL是Struts2所使用的表达式语言
commons-logging.jar 通用的日志类库,Struts2用它为Log4j提供日志记录
commons-fileupload.jar Struts2用来完成文件上传的类库
commons-io.jar 使用commons-fileupload类库的依赖类库
在具体的看Struts的api的使用,这样就不详细说了
Hibernate与Spring Framework
Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。Spring的创始人——Rod Johnson
Spring FrameWork的子模块
Ioc容器
容器的概念
包含其他的其他对象的容器
IoC设计模式
控制反转
SpringAOP
oop的不足
Aop应运而生
AOP专有名词
接入点 Joinpoint
切入点 Pointcut
通知 Advice
切面 Aspect
目标对象 Target Object
AOP代理 AOP Proxy
织入Weaving
Spring AOP中通用的通知类型
前置通知(MethodBeforAdvice)
返回后通知(AfterReturningAdvice)
异常通知(ThrowsAdvice)
环绕通知(MethodInterptor)
使用AspectJ 5的注解实现Spring AOP
@Aspect public class LogAspect{ @Pointcut("execution(*com.rbh.guestbook.web.GuestbookAction.query(..))") public void logMethod(){ }
@Aspect 表示一个切面类
@pointcut切入点
AspectJ的切入点表达式语法
execution(可见性?返回类型 声明类型?方法名称(参数类型)异常类型?)
语法 是否可选 说明
可见性 可选 可见性遵循java语法,"public"将匹配所有的public方法,可以使用"*"通配符匹配所有的可见性
返回类型 必选 用来匹配方法的返回类型,如果void,string,double等。用"*"通配符可以匹配所有的返回类型
声明类型 可选 用于匹配java包名,如com.rbh.guestbook.web等,可用"*"通配符
方法名称 必选 匹配方法名称,可以使用"*"通配符,声明类型和方法名称组成切入点的全路径
参数类型 必选 指定方法的参数类型及个数,".."通配符匹配任何参数类型
异常类型 可选 匹配方法抛出异常的类型
Spring 对Hibernate的支持
HIbernateTemplate
load() 根据标识符属性值获取对应的持久化对象,找不到记录,抛出违例
delete() 删除已经存在的持久化对象
find() 执行HQL语句,获取持久化对象的集合
get() 根据标识符属性值获取对应的持久化对象,如果数据不存在,返回null
persist() 保存持久化对象到数据库中
refresh() 刷新持久化对象
save() 保存持久化对象所对应的数据岛数据库中
saveOrUpdate() 保存或者更新持久化对象所对应的表中的数据
update() 更新持久化对象所对应的表中的数据
简化SessionFactory对象的获取
使用Spring提供HibernateTemplate和,
HibernateDaoSupport类
使用Spring的声明性事务管理
Spring对事务的支持
Spring编程事务管理
Spring声明事务管理
Spring中事务隔离级别
ISOLATION_DEFAULT 使用后端数据库默认的隔离级别
ISOLATION_READ_UNCOMMITTED 一个事务可以读取另一个事务已更新但尚未提交的数据,但在另一个事务提交前,不允许其他事务再写入,所有这种隔离级别可能出现脏读,但是不可能出现更新丢失
ISOLATION_READ_COMMITED 某个事务仅可读取(不可修改或者删除)另一个事务已提交的数据,不可以读取尚未提交的数据,所有这种隔离级别不可能出现脏读,但可能出现不可重复读,和幻读
ISOLATION_REPEATABLE_READ 一个事务已读取的数据,不允许其他事务进行数据写入,不可能出现不可重复读,但是可能出现幻读
ISOLATION_SERIALIZABLE 最严格的事务隔离级别,它要求所有事务进行序列化执行,事务只要一个接着一个的执行,不能迸发执行
Spring的传播行为