00:00
好,那么刚才我们演示的这个动画,我们也已经保存成图片啊,导入到我们这个文档里边了,下一步呢,咱们就把这个transaction filter哈,给它给它先建出来。哎,Filter放在这儿。作为一个filter呢,它需要去实现一下filter这个接口,别导错包啊。这里边有个问题,就是说呢,你看有。Serverl接口它下边呢,还有http serverl,我们filter呢,就没有http filter啊,除非要不你自己去明一个,我们现在这个它默认官方是没有提供,没有去提供啊。那么我们这儿呢,这个音译的方法和destroy方法呢,暂时都用不到哈。所以这两个方法呢,我们给它。这样。收起来哈。
01:00
然后呢,给它们放到一起。哎,重点呢,就都在这个do filter方法里边,首先呢,咱们先写一个try cash final的一个结构。然后呢,这里边儿,首先第一步我们要做的就是这个获取我们的。数据库连接。JDBC点呃,Get connection。哎,然后呢,下一步哈,这个第二步我们要执行的就是这个核心操作。也就是说呢,让我们这个filter chain哈,用我们这个filter chain去调这个do filter方法request和response这俩对象传进来。
02:07
如果能够正常执行完,那么我们就提交15、connection。点commit。如果泡异常的话,我们就connection。这访问不到,说明他得搁到外边去,去声明。点。他还有异常。嗯。那也没有什么太好的办法哈,那这个只能是说在这去给他再再拆开是一层。嗯。嗯,然后在final里边这个connection点。是这样的哈,是JDBC。
03:02
点release啊,把这个connection给进去啊,释放这个数据库连接。这我们加加注释啊,这个是第四步啊,这是回滚事五,哎,这个第五释放数据库连接。大致上是这样哈,但这里边儿我们还有些地方呢,要补充一下,我们这个类建好了,建好了以后呢。哎,这个建这个类的这个位置呢,我们来截个图哈。那就是他。
04:01
对。嗯,这里边儿我们看哈,这谈到一个静态资源扩展名集合,这个是啥意思呢。就是说呀,我们这个。嗯,Filter这个类哈。呃,其实我们如果配置它。把它配置成这个,呃,Urpa哈,配置成杠星的话,那么它会拦截所有的资源,你访问静态资源呢,他也会从这个filter这过,这个时候呢,其实这个事儿是挺浪费性能的啊,静态资源又不可能有事物。所以说呢,在这儿哈,我们应该说检测到如果是这个这个静态资源的话,就把静态资源呢给排除掉。哎,所以说在这儿呢,我们去哈,呃,声明。一个集合去作为啊,这么一个集合去保存我们的这个静态资源扩展名啊,因为我们可以根据扩展名来判断当前这个请求呢,是不是它是不是本名来判断它是不是,呃,静态阶我们给它放到一个set集合里。
05:18
Static resource。啊,内蒙啊。T内这个名有点有点长哈,呃,然后呢,在一个我们找个代码块哈,因为他也不是静态资源,就放在普通的代码块里边,给它初始化一下。哎,设置成静态的也挺好啊,因为这个东西反正他也就有一份就行了。哎,所以这儿呢,是放静态代码块里。先尿一个哈希赛。
06:02
然后呢,往这里边儿去放东西。哎,假如说呢,我们检测到它的这个扩展名是点。偏近。啊,图片嘛,JPG。嗯,别的还能有什么CSS诶,然后GS主要就是这些啊,如果遇到这些的话,我们就给它排除掉。所以在这呢,我们可以在获取数据库连接之前啊,先去做这样一个操作,哎。前置操作啊,这个叫排除静态资源。就solve request调一个方法,Get pass。而我们现在呢,这个serve request对象啊,它没有这个方法,需要给他转一下,转成http serve request。
07:02
强转一下,哎,然后呢,Request点儿get so pass。然后呢,Sorry pass,我们去取一下它的扩展名,这个怎么取呢。我们用substre里边传一个pass last index of,找最后一个点在什么地方啊?然后呢,这个时候呢,去得到它的扩展名ET内,看看这个EST内膜呢,在不在我们这个集合当中。这样哈,呃,If这个集合。我们ex内幕。如果包含的话啊,那这个时候咱就不用废话了啊,说明它就是静态资源,趁点do filter直接让他过去。
08:01
诶,然后这个方法呢,也就不用再往下走了,直接return就行了啊。如果检测到当前请求确实是静态资源,则直接放行啊,这就不做后边那些事故操作了。哎,同时这个方法呢,也停止执行。嗯,就是说当前方法啊,就立即返回,不往下走了。哎,用这样一个前置的判断啊,检测是不是静态资源,这其实呢,就唯一的有一个什么担心呢。说就是我们这儿这样取这个字符串的时候啊。这个这个这个到底它带不带前面这个点啊,这个我们具体的来测试一下哈。反正这个它是这个包含不包含这个字符本身我是懒得记啊,我我就是用的时候,我要不确定的话,我就是来这个呃测试一下。
09:19
打印一下。哦哦,他说啊,没有pass。反正测试哈,这个代码可能写的不是那么特别规范。哦,你看行测试结果是有点儿的是吧,哎,说这个东西我觉得就不用费劲儿去记了哈,啊,就简单的写这么个程序,一跑这个就知道它里边有没有了。嗯,这是我们初步完成的,我们transaction的这个类。
我来说两句