全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

Java知识点分享:监听器和过滤器的介绍及应用

发布时间:2018-07-09 13:42:00
发布人:千锋老师

  JavaWeb中,监听器是一种组件,能够监听项目的启动和停止,用户会话的创建和销毁,以及各种组件的添加、更新和删除,能够通过监听对象的状态改变,自动做出反应执行响应代码。

  应用场景:启动网站后进行初始化、检测用户的数量等。

  常用的监听器接口:

  ServletContextListener 监听项目的启动和停止

  方法:

  contextInitialized 项目加载完成

  contextDestroyed 项目停止

  HttpSessionListener 监听用户会话的创建和销毁

  sessionCreated 每一个用户第一次访问时调用

  sessionDestroyed 每个用户退出系统后调用

  监听器的配置:

  方式1 web.xml

1

  方式2 注解

  @WebListener

  案例:监听网站的启动

2

  案例:监听网站的用户数

3

4

5

  JSP页面:

6

  过滤器

  能够对网站中的各种内容进行过滤(页面、Servlet、图片、文件),可以在网站内容请求和响应时进行一些操作,完成一些通用的功能。

  过滤器链

  在项目中可以创建多个过滤器,网站内容可能会经过多个过滤器,多个过滤器就形成了过滤器链。

图片1

  实现方法:

  1、实现Filter接口

  init 初始化

  doFilter 进行过滤

  参数:

  ServletRequest 请求

  ServletResponse 响应

  FilterChain 过滤器链

  //让请求通过,执行下一个过滤器,如果不执行这个方法,请求就被拦截

  chain.doFilter(request, response);

  destroy 销毁

  2、配置

  web.xml

7

  注解:

  @WebFilter({"/*"})

  @WebFilter({"/test1.jsp","/test2.jsp"})

  过滤器执行的顺序:

  如果是注解配置的,按名字顺序进行执行

  如果是web.xml配置的,按过滤器filter定义的顺序

  案例:表单重复提交问题

  把表单数据多次提交给服务器

  问题:1、加大服务器的负担 2、多次插入重复的数据

  可能出现重复提交的情况:

  1、提交表单后,用forward跳转到其它页面,刷新页面

  2、提交表单后,服务器还没有响应前,多次刷新页面

  3、提交表单后,服务器还没有响应前,多次点击提交按钮

  4、提交表单后,跳转后点击返回,点击提交

  解决方法:

  1、进入表单页面前,在过滤器中创建Token(令牌)随机字符串,保存到Session中。

  2、在表单中添加一个隐藏域,值是Token字符串,会和表单一起提交服务器

  3、提交服务器后,将表单中Token和Session中Token进行比较,如果相同就正常提交表单,否则就是重复提交。

  4、如果能够成功提交后,把Session中的Token去掉。

8

9

10

  JSP页面:

11

  总结

  本章学习的监听器能够监听项目中各种对象的状态,如项目的启动和停止、用户会话的创建和销毁、会话属性的添加删除等,然后自动调用对应的方法,在实际工作中能完成缓存的提前加载,和项目的相关配置工作。而过滤器能过滤网站中的各种资源,给Servlet和JSP添加一些额外的功能,如:设置编码格式、对用户进行登录验证、解决重复提交问题等。

  千锋Java开发培训作为中国IT研发人才一体化服务的开拓者,为学生制定合理有序的学习计划,2周免费试听不满意不收费,与学员签订就业协议,坚持良心面授,从千锋Java开发培训班出去的学员均已高薪就业。千锋推出的免费Java视频教程,让学员能够更好的巩固基础技术能力。

相关文章

OKR跟KPI有什么不一样?

OKR跟KPI有什么不一样?

2023-10-14
服务器和电脑主机有什么区别?

服务器和电脑主机有什么区别?

2023-10-14
C#有什么实用的第三方库吗?

C#有什么实用的第三方库吗?

2023-10-14
边缘计算跟云计算是什么关系?

边缘计算跟云计算是什么关系?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取