ThreadLocal + Filter 处理事务
来源:互联网 发布:土猫宠物淘宝怎么样 编辑:程序博客网 时间:2024/06/15 05:01
package me.gac.web.filter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import me.gacl.util.JdbcUtils;
/**
* @ClassName: TransactionFilter
* @Description:ThreadLocal + Filter 统一处理数据库事务
* @author: 孤傲苍狼
* @date: 2014-10-6 下午11:36:58
*
*/
public class TransactionFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
Connection connection = null;
try {
//1、获取数据库连接对象Connection
connection = JdbcUtils.getConnection();
//2、开启事务
connection.setAutoCommit(false);
//3、利用ThreadLocal把获取数据库连接对象Connection和当前线程绑定
ConnectionContext.getInstance().bind(connection);
//4、把请求转发给目标Servlet
chain.doFilter(request, response);
//5、提交事务
connection.commit();
} catch (Exception e) {
e.printStackTrace();
//6、回滚事务
try {
connection.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
//req.setAttribute("errMsg", e.getMessage());
//req.getRequestDispatcher("/error.jsp").forward(req, res);
//出现异常之后跳转到错误页面
res.sendRedirect(req.getContextPath()+"/error.jsp");
}finally{
//7、解除绑定
ConnectionContext.getInstance().remove();
//8、关闭数据库连接
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
@Override
public void destroy() {
}
}
- ThreadLocal + Filter 处理事务
- 使用ThreadLocal+Filter处理连接池的缺点
- ThreadLocal-------结合Filter用于管理Web开发中数据库的事务
- 利用ThreadLocal & Filter 实现事务处理
- Filter和ThreadLocal实现事务管理
- ThreadLocal封装Connection--事务统一管理
- JdbcUtils_DBCP事务控制(ThreadLocal)
- ThreadLocal封装Connection--事务统一管理
- ThreadLocal封装Connection--事务统一管理
- Java事务(三) - 使用ThreadLocal
- ThreadLocal封装Connection--事务统一管理
- ThreadLocal 与 jdbc 事务操作
- ThreadLocal封装Connection--事务统一管理
- 认识ThreadLocal,多线程处理
- 代码优化:处理事务的不同手段 OpenSessionInView 的Filter和Interceptor拦截器
- web day19 Service层处理事务(利用ThreadLocal),TxQueryRunner小工具,单表练习(增删改查操作)
- context:exclude-filter spring事务
- DAO跨事务调用(ThreadLocal)
- 自定义Toast
- Edittext中输入@符号关联联系人及快速索引
- 程序员到大数据人才 只需这几步
- 两个int类型的数组合并为新的数组
- XC2440开发板编写BSP文件
- ThreadLocal + Filter 处理事务
- 将一个给定的整型数组转置输出
- Velocity教程
- 51NOD 1127 最短的包含字符串(尺取法)
- java 删除文件夹下的所有文件
- Android5.0以上Button去除阴影
- 编写程序,键盘输入10个数,计算平均值,并打印这10个数、平均值(用数组)
- nginx+tomcat使用apache的FtpClient上传图片时由于多线程问题导致的文件大小为0的问题
- System.arraycopy(T[] src,T srcBegin,T []des,T desBegin,int Length)