事务
事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功
事务的特性:原子性、一致性、隔离性、持久性
Mysql中的事务
mysql支持事务、默认自动提交事务,每条语句都处在单独的事务中
手动控制事务
- 开启事务:start transaction | begin
- 提交事务:commit
- 回滚事务:rollback
连接池
解决建立数据库连接耗费资源和时间很多的问题,提高性能,常用的数据源:DBCP、C3P0
DBCP
Apache推出的Database Connection Pool
使用步骤
- 添加jar包
- 添加属性资源文件
- 编写数据源工具类
C3P0
使用步骤
- 添加jar包
- 编写配置文件,c3p0-config.xml,放在classpath中,或classes目录中
Listener
用于监听web常见对象:HttpServletRequest/HttpSession/ServletContext
监听它们的创建与销毁/属性变化,监听session绑定javaBean
Filter
拦截所有访问web资源的请求或响应操作
步骤
- 创建一个类实现Filter接口
- 重写接口中方法 doFilter方法是真正过滤的。
- 在web.xml文件中配置
//在Filter的doFilter方法内如果没有执行chain.doFilter(request,response),那么资源不会被访问到
FilterChain
提供了对某一资源的已过滤请求调用链的视图
过滤器使用FilterChain调用链中的下一个过滤器,如果调用的过滤器是链中的最后一个过滤器,则调用链末尾的资源
//多个Filter对同一个资源进行拦截就可以形成Filter链、Filter的执行顺序由
FilterConfig
Filter的配置对象,它可以完成下列功能
- 获取Filtr名称
- 获取Filter初始化参数
- 获取ServletContext对象
生命周期
- 当服务器启动,会创建Filter对象,并调用init方法,只调用一次
- 当访问资源时,路径与Filter的拦截路径匹配,会执行Filter中的doFilter方法,这个方法是真正拦截操作的方法
- 当服务器关闭时,会调用Filter的destroy方法来进行销毁操作
配置
|
|
文件上传
前提
- 提供form表单,method为post
- form表单的enctype为multipart/form-data
- 提供input type=”file”类的上传输入域
fileupload
fileupload是由apache的commons组件提供的上传组件,帮我们解析request.getInputStream()
相关jar包
- commons-fileupload.jar 核心包
- commons-io.jar 依赖包
核心类
DiskFileItemFactory、ServletFileUpload、FileItem
步骤
- 创建工厂类DiskFileItemFactory对象
DiskFileItemFactory factory = new DiskFileItemFactory() - 使用工厂创建解析器对象
ServletFileUpload fileUpload = new ServletFileUpload(factory) - 使用解析器来解析request对象
Listlist = fileUpload.parseRequest(request)
FileItem对象对应一个表单项(表单字段),可以是文件字段或普通字段