目录
事务管理请参考:数据库事务管理
Filter过滤器
比如说你有这样的需求:
在你的
web
工程下,有一个
admin
目录。这个
admin
目录下的所有资源(
html
页面、
jpg
图片、
jsp
文件、等等)都必须是用户登录之后才允许访问的。
web
工程下,有一个
admin
目录。这个
admin
目录下的所有资源(
html
页面、
jpg
图片、
jsp
文件、等等)都必须是用户登录之后才允许访问的。
那么利用filter过滤器就可以实现。
Threadlocal
threadlocal就是一个map,key是当前线程,value是自己可以设置的值,类型是object, 语法是:threadLocal.set(o);
ThreadLocal
的作用,它可以解决多线程的数据安全问题。
的作用,它可以解决多线程的数据安全问题。
ThreadLocal
的特点:
的特点:
1
、
ThreadLocal
可以为当前线程关联一个数据。(它可以像
Map
一样存取数据,
key
为当前线程)
、
ThreadLocal
可以为当前线程关联一个数据。(它可以像
Map
一样存取数据,
key
为当前线程)
2
、每一个
ThreadLocal
对象,只能为当前线程关联一个数据,如果要为当前线程关联多个数据,就需要使用多个
、每一个
ThreadLocal
对象,只能为当前线程关联一个数据,如果要为当前线程关联多个数据,就需要使用多个
ThreadLocal
对象实例。
对象实例。
3
、每个
ThreadLocal
对象实例定义的时候,一般都是
static
类型
、每个
ThreadLocal
对象实例定义的时候,一般都是
static
类型
4
、
ThreadLocal
中保存数据,在线程销毁后。会由
JVM
虚拟自动释放。
、
ThreadLocal
中保存数据,在线程销毁后。会由
JVM
虚拟自动释放。
示例代码:
package com.atguigu.threadlocal; import java.util.HashMap; import java.util.Map; import java.util.Random; public class ThreadLocalTest { public static ThreadLocal<Object> threadLocal = new ThreadLocal<Object>(){ }; private static Random random = new Random(); public static class Task implements Runnable { @Override public void run() { String name = Thread.currentThread().getName(); Integer i = random.nextInt(1000); System.out.println("线程["+name+"]生成的随机数是:" + i); threadLocal.set(i); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } new OrderService().createOrder(); Object o = threadLocal.get(); System.out.println("在线程["+name+"]快结束时取出关联的数据是:" + o); } } public static void main(String[] args) { for (int i = 0; i < 2; i++){ new Thread(new Task()).start(); } } }
Filter和Threadlocal进行事务管理
@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { try { filterChain.doFilter(servletRequest,servletResponse); JdbcUtils.commitAndClose();// 提交事务 } catch (Exception e) { JdbcUtils.rollbackAndClose();//回滚事务 e.printStackTrace(); throw new RuntimeException(e);//把异常抛给Tomcat管理展示友好的错误页面 } }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/92889.html