线程容器

ThreadLocal容器

给线程绑定一个OBJECT,只要在同一个线程下,随时可以从线程中拿东西

匿名内部类里面的变量必须是FINAL (意味着不可以改变线程==)或者全局的,
这样整个应用都可以共享这个线程容器,放在线程容器里的又可以在同一线程下共享
在这里主线程是MAIN函数的线程
在这里插入图片描述
主线程main进行 new Thread又来了个子线程 所以线程 改变了 肯定结果为空

总结:只要线程不变 信息是可以互相取的

filter和servlet是同一线程

在Web.xml中配置filter

/* 代表拦截全部servlet
Service中执行的东西和filter中执行的是同一个线程的
把sqlseesion放到ThreadLocal中 就可以被对方获得

工具类

在service层中
三行代码获取session
中间是业务逻辑
两行代码提交关闭session

重复的代码冗余 我们把获得和关闭都封装成工具类方便调用
解析文件希望类刚加载进来就存在了 所以获得session要在主函数执行之前就存在 在静态代码块里执行
在这里插入图片描述

获取的时候不能获取一次就opensession一次 所以要判断如果已经有了就别取
在这里插入图片描述
不是空就关了 然后还要把线程容器清空

  • 现在service层可以调用工具类就直接获得Session关闭Session但是每一个service还是要重复的调用这两个函数
  • 有没有什么类能够帮助在Serive前后调用这两个函数让Service也不用重复写这两个工具类函数呢?
  • Filter监听类:servlet调用service,filter恰好可以在Servlet前后都执行 这样就能包裹住service在他的前后取调用工具类 然后dofilter Serivice还可以进行自己

在这里插入图片描述
在这里插入图片描述
包这
在这里插入图片描述
现在service就减少了许多代码了
获得Seesion工具类获得
进行Sql操作 不用管提交 关闭 事务回滚 Filter 就做了 简洁明了还没有冗余
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值