过滤器、监听器

过滤器Filter

过滤器的概念

sql诸如 页面上输入 where 1=1

select * from t_user

if(pwd !=null ){
        where 1=1
}

特殊字符 敏感字符。 %*. select from t_user where name like %value%
在这里插入图片描述

url权限操作:没有登陆过不能访问资源 servlet session

在servlet中,过滤器是一种非常重要的一项技术,web开发过滤器是通过Fliter来实现的。可以管理Web服务器的所有资源,对JSP servlet 或者静态html资源进行拦截。从而实现一些特殊的功能、敏感字符的过滤、url访问控制权限、编码集的统一设置,等等。

过滤器是如何实现拦截的?

工作流程见流程图
在这里插入图片描述

在javaweb中提供了一个Filter接口,编写了一个类实现这个接口,当前类就是过滤器类。过滤器也是运行在容器中,在到达目前资源(编写servlet、静态资源等等)之前进行拦截处理。处理完了再将请求交给目标资源。

服务器响应的时候依然要经过过滤器。(作用:可以对响应的结果进行处理,再发送回客户端。)

用户发请求过来要经过Filter, servlet返回的信息也要经过Filter才会传输到用户

对于用户。servlet来说 过滤器是透明的

配置Filter

在这里插入图片描述
导入这个包
在这里插入图片描述

在这里插入图片描述

filter和tomcat

在这里插入图片描述
过滤器默认是不会将请求转发给目标资源
在这里插入图片描述
当有这个doFilter 且doFilter里面没有东西的时候,执行一个jsp文件 并不会返回jsp页面的内容,因为被Filter拦截了。

当关闭tomcat的时候 执行destory。

整个流程:

1.启动tomcat,加载自身的配置文件
2.加载webapps下面的每个项目web.xml
3.如果发现web.xml有配置过滤器,实例化过滤器对象
4.马上调用过滤器init方法来初始化过滤器(init在整个生命周期只执行一次)
5.请求被tomcat转交给了过滤器
6.容器销毁过滤器,调用destory


在这里插入图片描述
由于有了
在这里插入图片描述
处理过的信息会返回给请求者
在这里插入图片描述
jsp页面就会显示了。

过程:
用户发送请求—处理–处理完了将请求交给目标资源—servlet进行响应–将请求发给目标资源—响应经过过滤器—用户接收。

请求发送过来经过过滤器(老师总结):
1.先执行一段代码 处理内容。
2.chain.doFilter将请求交给目标资源
3.目标资源处理完了响应又经过过滤器再执行一段代码。

“请求三件套” 用于设置编码集

未设置编码集的样子:
在这里插入图片描述

代码集:
在这里插入图片描述

由于这个三件套,写每一个servlet都要重新写,很麻烦。这时候不妨把他们卸载过滤器里,因为每次反应都要经过过滤器

在这里插入图片描述
不要忘了配置xml文件

在这里插入图片描述

配置完之后,就不用再每一个servlet里面重新配置三件套了

注意:在测试时发现了问题:
这个Filter配置的三件套仅仅针对从后台获得前台输入数据的时候不用转码,而首页若想写汉字,仍然需要在页头修改编码格式,如图
在这里插入图片描述

结论:三件套适用用如下场合
在这里插入图片描述

在这里插入图片描述
直接选择过滤器的servlet就可以了 无需再配置新的servlet(当然新的servlet里面还是要写get parameter这些方法)


注:用get获取的用户输入 无论如何都会乱码
而用post不会乱码


完善filter

在这里插入图片描述

在这里插入图片描述
自己可以配置过滤器的配置信息。

在这里插入图片描述

若匹配到不需要过滤的路径,直接放行。若匹配到需要过滤的路径,再来判断

一开始发现request里面没有gerRequestURI,因为ServletReuqest里面没有get RequestURI方法。
向下转型 使用httpservlet里面的方法
转型之后就可以使用get RequestURI

开始截 找出最后一个斜杠的位置。(和xml文件那些东西匹配。)

如果匹配,放行。

没有匹配,获取session(false): false意思是只得到session 而不用session

若路径既没有认证过 又不符合登陆条件,就跳转回登陆页面。
在这里插入图片描述
图为 UrlFilter里面的内容

过滤器链:多个过滤器同时作用,嵌套执行的时候,形成了一个过滤器链。
多个过滤器嵌套在执行的,第一个完了马上进入第二个。退出的时候,退后一个过滤器一直到第一个过滤器。

在这里插入图片描述

由于过滤器都注册和映射在web.xml文件中,所以过滤器链中第一个执行的过滤器,肯定是web.xml首先注册和映射的过滤器。所以以后在写过滤器的时候要注意过滤器的顺序。

如图,所有的过滤器都放在servlet之前,servlet和servlet之间跳转不会经过过滤器。

若想实现servlet和servlet之间的跳转的时候实现过滤功能 怎么办?
在这里插入图片描述

在这里插入图片描述

这个dispatcher。规定当前过滤器只能在内部派发(servlet和servlet之间相互传递)的时候产生作用

监听器

一、监听器的概念

监听器就是一个普通的java程序 实现了特定接口,这个程序专门用于监控其他的java程序,别的java程序若做了属性变更、对象状态的改变的时候,立即采取相应的行动(执行监听器的方法)
在这里插入图片描述

JavaWeb中学习的监听器

在javaWeb中提供了三类监听器:
Servlet类:
Session类:
ServletContext类:

JavaWeb中提供的监听器主要是用于监控Servlet程序、Session对象、以及ServletContext对象。

在这里插入图片描述

注册监听器:仅需要注册,无需映射。
在这里插入图片描述

前端的绑定:
在这里插入图片描述
在这里插入图片描述

后台的绑定:
在这里插入图片描述
找到事件源 btn

把监听器(actionListener)绑定到事件源上

btn执行点击的时候 触发这个动作


session监听
在这里插入图片描述

Session的钝化(序列化):上面图中的会话迁移

如果要监听userbean
则需要在model层中的对象里面 继承一个httpBindingListener(不常用,经常被httpsessionAttributelistener(对象变更监听器)代替)
在这里插入图片描述
在这里插入图片描述
验证码的制作:使用servlet来制作验证码:

如何把jsp页头上的charset永久改成Utf-8

JSP的九大内置(隐式)对象:JSP已经定义过的九大对象,可以直接调用,不用声明

request
response
session
out
excetion
config
page
application:上下文对象
pageContext : jsp的运行环境,包含了其他八个对象,是一个域对象,可以通过当前对象获取到其他八个对象,还包含了一些动作,在自定义标签的时候会用到,比其他任何一个对象范围都大。

JSTL:标准标签库

就是<c:if> ,页头导入包这类,
在这里插入图片描述
在这里插入图片描述
标准标签库的出现是为了弥补html的不足,html没有逻辑标签、循环、判断、第三方开发这种功能的标签。
只需要引入到页面,可以用这些功能标签。

常用的C: 就是JSTL的核心库

域对象

就是能够存储内容的对象,并且能够将对象进行传递。
在这里插入图片描述
把前面的request装满东西,进行请求派发,并把数据传递给下一个资源

所以request就是一个域对象。

对象作用域

域对象有三种:
在这里插入图片描述
pageContext: 容器,作用范围最大 仅次于tomcat
HttpSession :之前的验证码就已经用到了,存活于一次会话的过程。session在你关闭浏览器后会保存30分钟(默认的),过了这个时间后就会钝化,在下次登录的时候会反序列化
Reques:t在写servlet中经常用到,代表一次请求,请求完了就消失了。可以在不同的资源之间传递数据。

ServletContext:上下文对象:代表整个web应用。(代表当前web项目)

在这里插入图片描述
一个web项目只会有一个上下文对象,当前这个对象代表的是项目的环境。
你可以使用当前的对象获取到项目中的任何一个资源文件。

上下文作用域非常大,算一个全局变量,比如统计在线人数等
作用:声明为一个全局对象,所有session都可以共享对象
表示工程环境,可以通过这个对象操作工程目录

在这里插入图片描述
在这里插入图片描述

为什么要用斜杠 而不用c盘tomcat的完整路径?
因为通过上下文获取的工程文件,当你使用其他操作系统的时候(比如Linux)不用修改代码,因为不同的操作系统,路径地址是不一样的

上下文对象,随着容器(现在用的是tomcat)的启动而启动,容器的销毁而销毁。所以可以用于监控 在线人数

在线人数监控

在这里插入图片描述
在这里插入图片描述

利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值