14过滤器监听器课程笔记.docx
- 文档编号:30719670
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:14
- 大小:736.40KB
14过滤器监听器课程笔记.docx
《14过滤器监听器课程笔记.docx》由会员分享,可在线阅读,更多相关《14过滤器监听器课程笔记.docx(14页珍藏版)》请在冰豆网上搜索。
14过滤器监听器课程笔记
过滤器_监听器
【学习目标】
1:
过滤器的原理。
2:
如何使用过滤器。
(对象api实现业务功能)
3:
映射filter的多种方式
4:
filter的案例(重点掌握)
1)用户权限url设置
2)解决全网站的post和get方式乱码。
1.教学内容
过滤器的原理
Serlvet技术规范中描述了三种技术:
Servlet(服务器端小程序),filter(过滤器),listener(监听器),
而其中过滤器和监听器可以用来实现很多高级的功能
今天的课程重点是学习过滤器,过滤器主要用来干什么?
主要用来拦截客户端对web资源的访问,包括静态资源以及web资源,
例如:
控制访问权限等等。
Filter工作的原理是什么?
见下图:
当客户端访问服务器端的web组件(servlet/jsp时,每一次请求都会执行过滤器组件的业务方法doFilter()具体的业务在doFilter里面编写!
)
过滤器的快速入门
1:
Filter
classXxxximplementsFilterXxxx类具备过滤器功能!
!
2:
接口三个方法!
!
Servletinit容器创建过滤器实现类对象destroy过滤器对象销毁执行该方法doFilter()访问一次该方法执行一次!
!
重点是doFilter
编写一个普通java类实现该接口
2:
web.xml配置过滤器组件servlet开发流程类似
配置文件url-pattern决定过滤器doFilter方法!
是否执行
过滤器映射filter的多种方式
参考servlet-mapping语法一致
1、如果连接目标资源是一个Servlet,选择url-pattern配置方式
2、url-pattern和Servlet中路径写法一样,
有三种:
完全匹配、目录匹配、扩展名匹配
需要常用配置:
1:
/hello浏览器访问/hello执行过滤器doFilter方法
2:
/admin/*表示用户浏览器访问/admin/下所有资源都会执行过滤的doFilter方法
3:
*.jsp只要浏览器访问.jsp结尾都会执行过滤器doFilter()方法!
!
过滤器执行doFilter方法之后如何执行后续组件servlet/jsp呢?
查看doFilter方法三个参数
requestresponseFilterChain
1:
访问Servlet执行doPost方法容器才会创建HttpServletRequestHttpServletResponse对象!
!
现在执行过滤器的时候HttpServletRequestHttpServletResponse创建时间不是访问servlet时候容器才创建是在访问过滤器执doFilter方法时候
容器就会创建HttpServletRequestHttpServletResponse对象!
!
过滤器会通过chain.doFilter(request,response)传递给后续的目标访问资源.
后续的servlet或者jsp执行doPostdoGet方法的时候HttpServletRequestHttpServletResponse两个对象是由过滤器传递过来的
过滤器组件小节:
web.xml配置utl-pattern决定过滤器doFilter方法是否执行
doFilter(request,response,chain);
由chain.doFilter(request,response);改代码决定是否放行.是否访问目标资源.
filter的案例
案例一实现全站的中文字符编码
1:
分析乱码产生的原因:
主要有三个方法导致乱码的产生原因:
request.getParameter()
request.getParameterValues()
request.getParameterMap();
思想重写三个方法推荐方案继承HttpServletRequestWrapper类
覆盖上述三个方法!
super(request)this.request是同一个request对象
三个方法重写
request请求乱码
post乱码的处理
响应乱码处理:
web.xml配置用户自定义信息
代码通过FilterConfig对象获取
案例二用户访问权限的控制
给用户添加URL访问权限
应用场景:
搭建在用户系统完成之后.
系统中存在很多资源,将需要进行权限控制的资源,放入特殊路径中,编写过滤器管理访问特殊路径的请求,如果没有相应身份和权限,控制无法访问
要求用户必须登陆之后才可以访问三个业务功能
继续day16_customer工程案例添加登陆权限.
1:
编写过滤器:
编码:
web.xml
2.监听器
监听器就是一个java程序,功能是监听另一个java对象变化(方法调用、属性变更)
监听的对象--->服务器创建对象.requestresponseservletsessionservletContextpageContext.....
Servlet监听器(接口)
第一类:
监听三个数据范围对象(request、session、ServletContext)的创建和销毁监听器
ServletContextListener监听ServletContext对象的创建和销毁...
HttpSessionListener监听session创建和销毁
ServletRequestListener监听request对象创建和销毁
第二类:
监听三个数据范围对象中属性变更(增加、替换、删除)的监听器
setAttribute()removeAttribute()
ServletContextAttributeListener,监听ServletContext对象属性的变更
HttpSessionAttributeListener监听session对象属性变更
ServletRequestAttributeListener监听request对象的属性变更
案例一:
监听服务器对象创建和销毁
开发步骤:
1:
编写一个普通class实现相关接口...
2:
告知容器该类监听哪一个指定对象web.xml注册!
容器创建监听器实例对象标签配置顺序listener--->filter---->servlet容器创建对象的顺序!
!
3:
测试容器创建session对应监听器类的方法自动执行!
!
案例二监听服务器创建对象属性变更!
!
setAttributeremoveAttribute监听对象绑定数据解绑数据数据替换的.
1:
普通java类实现对应的接口
2:
web.xml注册监听器
3:
测试多个监听器不会相关干扰每一个监听器功能单一!
!
1:
案例之统计当前在线session个数(后台管理使用)
2:
案例之查询订单半小时未支付的订单有哪些?
(estore)
案例一:
获取网站session个数....--->推导用户在线个数..(测试服务器压力及时了解服务器创建session个数!
!
)
1:
当用户访问网站服务器创建一个session对应sessionCreated()方法自动调用执行:
方法实现体当前个数存放起来
服务器的哪一个对象可以永久保存session创建的个数呢?
pageContextrequestsessionservletContext.setAttribute(key,count);
2:
serletContext对象创建的时候保存数据初始化count全局参数ccount++
3:
session销毁的时候获取全局count--放回ServletContext!
!
4:
sessionlistener监听session创建和销毁servletContext一创建初始化count保存session个数变量(容器对象唯一)
案例步骤:
1:
index.jsp查询session在线个数
2:
服务器一旦启动创建全局变量存储session个数保存ServletContext对象中
3:
web.xml注册该监听器
4:
当用户访问网站网站自动创建一个session对象出来我们要获取全局变量count个数++当用户离开网站一段时间之后seesion销毁.我们要让全局变量count--
5:
web.xml注册session监听器
6:
showSession.jsp显示全局变量给用户查看使用
测试手动更改session生命周期
web.xml配置标签
过一段时间session个数变化了!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 14 过滤器 监听器 课程 笔记