事务管理务原本是数据库中的概念,在Dao层。但一般情况下,需要将事务提升到业务层,即Service层。这样做是为了能够使用事务的特性来管理具体的业务。
Spring事务管理事务管理器是PlatformTransactionManager接口对象。其主要用于完成事务的提交、回滚,及获取事务的状态信息。
PlatformTransactionManager:接口常用的两个实现类
DataSourceTransactionManager:使用JDBC或MyBatis 进行持久化数据时使用。
HibernateTransactionManager:使用Hibernate进行持久化数据时使用。
Spring的回滚方式
Spring事务的默认回滚方式是:发生运行时异常时回滚,发生受查异常时提交
接口TransactionDefinitiond定义的事务的常量
事务定义接口事务定义接口TransactionDefinition中定义了事务描述相关的三类常量:事务隔离级别、事务传播行为、事务默认超时时限,及对它们的操作。
事务传播行为:所谓事务传播行为是指,处于不同事务中的方法在相互调用时,执行期间事务的维护情况。如,A事务中的方法doSome()调用B事务中的方法doOther(),在调用执行期间事务的维护情况,就称为事务传播行为。
事务具有哪些特性原子性:一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
一致性:事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性:持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
AspectJ的AOP配置方式管理事务的spring配置注册事务管理器。
注册事务通知
aop配置
代码示例:
事务注解管理事务的spring配置注册事务管理器。
配置注解驱动
代码示例:
transaction-manager配置对应的是事物管理器的id
MVC介绍MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,它是一种软件设计典范,是一种软件架构设计分层模式。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
View(视图)是应用程序中处理数据显示的部分。
Controller(控制器)是应用程序中处理用户交互的部分。
最典型的MVC就是JSP + servlet + javabean的模式。
MVC发展历史Model 1 (jsp+javabean)
Model 2 (jsp+servlet+javabean)
Model1和Model2的优缺点
目前主流的MVC框架SpringMVC
Struts
JfinalSpringMVC(主流MVC框架):是spring框架的一部分(子框架),是实现对Servlet技术进行封装。
SpringMVC开发步骤导入jar包
配置web.xml,注册SpringMVC前端控制器(中央调度器)
编写SpringMVC后端控制器
编写springmvc配置文件,注册后端控制器(注意id写法格式)
编写跳转资源页面
SpringMVC请求处理流程① 用户发送请求到springmvc框架提供的DispatcherServlet 这个前端控制器
② 前端控制器会去找处理器映射器(HandlerMapping),处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet 。
③ 根据处理器映射器返回的处理器,DispatcherServlet 会找“合适”的处理器适配器(HandlerAdapter)
④ 处理器适配器HandlerAdpater会去执行处理器(Handler开发的时候会被叫成Controller也叫后端控制器) 执行之前会有转换器、数据绑定、校验器等等完成上面这些才会去正在执行Handler
⑤ 后端控制器Handler执行完成之后返回一个ModelAndView对象
⑥ 处理器适配器HandlerAdpater会将这个ModelAndView返回前端控制器DispatcherServlet。前端控制器会将ModelAndView对象交给视图解析器ViewResolver。
⑦ 视图解析器ViewResolver解析ModelAndView对象之后返回逻辑视图。
⑧ 前端控制器DispatcherServlet对逻辑视图进行渲染(数据填充)之后返回真正的物理View并响应给浏览器。
静态资源无法访问解决方案(三种)
第一种在web.xml中进行资源放行
第二种在SpringMVC配置文件中使用MCV标签default-servlet
第三种在SpringMVC配置文件中使用MVC标签的resource
其中location为资源文件路径,mapping的值为映射路径