JavaWeb17(过滤器监听器)

news2024/11/22 13:31:51

目录

1.过滤器/拦截器-Filter.

1.1过滤器介绍.

1.2过滤器使用步骤.

1.2.1创建过滤器.

1.2.2映射配置.

1.3案例1-编码设置.

1.4案例2-登陆状态验证.

1.4过滤链-略带.

2.监听器-Listener.

2.1监听器介绍.

2.2案例演示1-统计在线人数.

2.3案例演示2-统计历史在线人数.


1.过滤器/拦截器-Filter.

1.1过滤器介绍.

  • 过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。

  • S2阶段使用过滤器主要进行页面编码设置和登录状态验证。


1.2过滤器使用步骤.

1.2.1创建过滤器.

  • 创建过滤器包filter,创建普通java类并实现Filter接口;

  • 重写destroy(销毁)doFilter(执行/处理)init(初始化),作用如下:

    1. init方法,初始化Filter,Filter在服务器启动阶段被实例化。并且调用init方法,init方法只执行一次,因为Filter只被实例化一次。

    2. destory方法,销毁Filter,释放内存,在web服务正常停止时调用此方法。或者项目重新部署,或者服务器重新启动的时候,会销毁所有的Filter对象,销毁之前会先调用Filter对象的destroy方法,完成销毁前的准备工作,也是只执行一次。

    3. doFilter方法里面编写过滤器要执行的逻辑代码(重点)。

  • 如下所示:


1.2.2映射配置.

  • web.xml方式:

  • 注解方式:

    1. @WebFilter("/*");

    2. @WebFilter("/home/*");

    3. @WebFilter("*.do");


1.3案例1-编码设置.

  • 代码如下:


1.4案例2-登陆状态验证.

  • 效果:没有登陆则不能访问项目的某些页面,比如:购物车页面、订单页面、所有servlet文件等。

  • 哪些页面不需要被登陆就可以访问?登陆前后端jsp页面以及对应的servlet文件;

  • 实现代码:

  • 注,getWrite()方法如果执行两次及以上程序会报500错,当过滤资源过多的时候,过滤器里面的代码会被执行多次,所以不建议在过滤器里面调用 getWrite()方法获取 PrintWriter对象。因此在过滤器里面跳转到登陆页面通过:response.sendRedirect(request.getContextPath()+"/admin/login.jsp");

  • 思考,如果在同一个过滤器里面实现前端的登陆状态验证,该如何处理?


1.4过滤链-略带.

  • 在一个Web应用程序中,可以部署多个过滤器进行拦截,这些过滤器组成了一个过滤器链。过滤器链中的每个过滤器负责特定的操作和任务,客户端的请求在这些过滤器之间传递。具体执行流程如下:


2.监听器-Listener.

2.1监听器介绍.

  • 一个实现特定接口的普通java程序,而这个java程序专门用于监听另一个java对象的方法调用或属性的改变,当被监听对象发生上述事件后,监听的某个方法将立即被执行。常用于监听Web应用中某些对象的创建、销毁、增加、修改、删除等动作的发生,然后作出相应的响应处理。当监听范围的对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。常用于统计网站在线人数、系统加载时进行信息初始化、统计网站的访问量等等。

  • 监听器分类:按照监听的对象不同可分为HttpRequest域,HttpSession域和ServletContext域。如:

    1. ServletContextListener监听器,此监听器主要用来监听ServletContextListener的创建与销毁即服务器的创建与销毁;

    2. HttpSessioinListener监听器,此监听器用来监听Session的创建与销毁;

    3. HttpSessionAttributeListener 是SessionAttribute的监听,当在会话对象中加入属性、移除属性或替换属性时,就会调用HttpSessionAttributeListener监听器。

    4. ServletRequestListener监听器,此监听器用来监听每一次请求调用请求创建时的方法,当请求结束时,调用销毁的方法。


2.2案例演示1-统计在线人数.

  • 思路分析:

    • 每当有一个访问连接到服务器时,服务器就会创建一个 session来管理会话;

    • 那么就可以通过统计 session的数量来获得当前在线人数。所以这里用到的监听器是 HttpSessionListener

  • 创建 Java类 OnLineCountListener 实现 HttpSessionListner接口,并添加监听器注解:@WebListener。代码如下:

  • jsp页面:<h1>在线人数:${sessionCount} </h1>

  • 注,

    1. 因为同一类型浏览器不管打开多少个会话,都是共享一个sessoin(无痕模式和非无痕模式不共享)。所以要打开不同类型浏览器访问项目(google/IE/Edge)进行测试。

    2. 关闭浏览器人数不会减少,必须以注销 session的方式退出才能实现人数减少。

  • 注销功能:

退出按钮:

<a href="loginOut.jsp">

    <h2>退出</h2>

</a>

loginOut.jsp:

<%session.invalidate();%>

<h3>您已退出本系统</h3>


2.3案例演示2-统计历史在线人数.

  • 该功能的实现思路:在用户退出的时候不减少人数。其实就是注释掉统计在线人数案例里面销毁方法-sessionDestroyed的代码。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/600448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

太好玩了!用Python做音乐节奏可视化!

大家注意&#xff1a;因为微信最近又改了推送机制&#xff0c;经常有小伙伴说错过了之前被删的文章&#xff0c;比如前阵子冒着风险写的爬虫&#xff0c;再比如一些限时福利&#xff0c;错过了就是错过了。 所以建议大家加个星标&#xff0c;就能第一时间收到推送。&#x1f44…

【Python C扩展】零基础也能轻松掌握的学习路线与参考资料

Python C扩展是将Python语言与C语言相结合&#xff0c;最大限度地利用C语言的高性能和Python语言的灵活性&#xff0c;使Python程序获得更高的运行效率。Python C扩展的学习路线涵盖了C语言基础、Python语言、Python C API等多个方面。下面将详细介绍Python C扩展的学习路线&am…

Python+Yolov5人脸表情特征识别

程序示例精选 PythonYolov5人脸表情特征识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonYolov5人脸表情特征识别>>编写代码&#xff0c;代码整洁&#xff0c;规则&am…

【微服务架构】专家组:在过去十年的微服务中,我们学到了什么?

瓦特&#xff08;Watt&#xff09;&#xff1a;这是微服务专家组。Chris早些时候谈到了最小化微服务中的设计时耦合。他是microservices.io的创建者&#xff0c;《微服务模式》一书的作者。他也是Java冠军&#xff0c;在微服务领域非常有经验。我期待着与你们一起深入研究其中的…

区间预测 | MATLAB实现基于QRCNN-BiLSTM-Multihead-Attention卷积神经网络结合双向长短期记忆神经网络多变量时间序列区间预测

区间预测 | MATLAB实现QRCNN-BiLSTM-Multihead-Attention卷积神经网络结合双向长短期记忆神经网络多变量时间序列区间预测 目录 区间预测 | MATLAB实现QRCNN-BiLSTM-Multihead-Attention卷积神经网络结合双向长短期记忆神经网络多变量时间序列区间预测效果一览基本介绍模型描述…

chatgpt赋能python:Python冒泡排序:理解流程图

Python冒泡排序&#xff1a;理解流程图 当涉及到排序算法时&#xff0c;Python中最流行的算法之一就是冒泡排序。它是一种简单而有效的排列方法&#xff0c;旨在让列表中的元素按升序或降序排列。在此文章中&#xff0c;我们将讨论冒泡排序的流程图&#xff0c;并重点介绍每个…

JavaWeb18(文件上传富文本编辑器)

目录 一、富文本编辑器 1.1 什么是富文本编辑器? 1.2 CKEditor 1.3 CKEditor 4的使用步骤【参考官方文档】 1.4 优化商品增加、查看、修改功能 1.5 尝试课外扩展其他富文本编辑器 二、文件上传 2.1 到底客户端的文件是上传到哪里? 2.2 SmartUpload是什么? 2.3 Sma…

聚观早报 |ChatGPT之父称AI可能灭绝人类;Kindle本月关闭电子书店

今日要闻&#xff1a;马斯克到访特斯拉上海超级工厂&#xff1b;ChatGPT之父称AI可能灭绝人类&#xff1b;Kindle本月关闭电子书店&#xff1b;FF91将进入交付阶段&#xff1b;iPhone14最高降1900元 马斯克到访特斯拉上海超级工厂 6 月 1 日消息&#xff0c;据航班APP信息显示…

记录--面试官:“你知道什么情况下 HTTPS 不安全么”

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 面试官&#xff1a;“HTTPS的加密过程你知道么&#xff1f;” 我&#xff1a;“那肯定知道啊。” 面试官&#xff1a;“那你知道什么情况下 HTTPS 不安全么” 我&#xff1a;“这....” 越面觉得自己越…

LEAP模型(能源环境发展、碳排放建模预测及不确定性分析)

在国家“3060”碳达峰碳中和的政策背景下&#xff0c;如何寻求经济-能源-环境的平衡有效发展是国家、省份、城市及园区等不同级别经济体的重要课题。根据国家政策、当地能源结构、能源技术发展水平以及相关碳排放指标制定合理有效的低碳能源发展规划需要以科学准确的能源环境发…

在金融数据里挖呀挖,GaussDB开出了花

北京是首都&#xff0c;上海是魔都&#xff0c;那深圳是什么&#xff1f;如果在网上问这个问题&#xff0c;网友会告诉你&#xff0c;深圳是“搞钱之都”。 金融在深圳扮演着关键角色&#xff0c;金融产业的配套数字化基础设施地位也自然也非常重要。深圳的银行、券商等金融机构…

(2)NUC980 Uboot制作

目录&#xff1a; (1)NUC980 编译环境搭建 (2)NUC980 Uboot制作 (3)NUC 980 kenerl编译 u-boot&#xff1a; &#xff08;1&#xff09;下载u-boot: A:下载连接&#xff1a; 下载地址&#xff1a;https://gitee.com/OpenNuvoton/NUC970_U-Boot_v2016.11 文件&#xff1a;NUC97…

分布式存储ceph

ceph架构&#xff0c;三个默认接口&#xff08;块存储RBD&#xff0c;文件存储cephFS&#xff0c;对象存储RGW&#xff09; LibRADOS对象访问接口 RADOS基础存储系统&#xff08;统一存储池&#xff09; #最底层 ceph架构 osd&#xff0c;负责存储数据&#xff0c;一般一个…

27.hadoop系列之50G数据清洗入库秒查询实践

1. 项目背景 目前本地有50G的企业年报csv数据, 需要清洗出通信地址&#xff0c;并需要与原有的亿条数据合并以供业务查询最新的企业通信地址 2. 技术选型 Hadoop ClickHouse 3. Hadoop数据清洗 我们50G的数据无须上传至集群处理&#xff0c;上传目前带宽2M/S, 巨慢&#x…

【shiro】shiro整合JWT——1.需要创建的类

前言 shiro整合JWT系列&#xff0c;主要记录核心思路–如何在shiroredis整合JWTToken。 该篇主要讲述整合JWT需要创建那些类&#xff0c;如下&#xff1a; JwtToken &#xff08;JWT实体类&#xff09;JwtUtil &#xff08;JWT工具类&#xff09;JwtFilter &#xff08;JWT拦…

IIS日志分析

一、下载IIS日志分析软件 地址如下&#xff1a; 开放网盘: 寄存一些分享出来的文件之类的东西 其中就是LogParser和LPS两个压缩文件 二、安装软件 1、需要先安装Log Parser 运行安装上面的文件。 2. 运行Log Parser Studio 在解压的LPSV2.D1文件夹中运行LPS.exe 出现下面…

BR 4P3040.00-490 标准PLC采用梯形逻辑编程

B&R 4P3040.00-490 奥地利贝加莱 电源面板 可编程逻辑控制器(Programmable Logic Controller)技术通常与梯形逻辑编程隔离通信——这是B&R迈出的一大步。B&R平台是基于PC的&#xff0c;这意味着您可以使用PLC系统中不常见的编程语言和功能。例如&#xff0c;可以用…

《架构设计》-09-分布式服务架构(注册中心、服务发布、服务调用、服务治理)

文章目录 1. 概述2. 集群容错策略3. 服务路由3.1 直接路由3.2 间接路由和注册中心3.3 路由规则3.4 服务路由/负载均衡/集群容错的关系 4. 服务发布4.1 发布启动器4.2 动态代理4.3 发布管理器4.4 协议服务器 5. 服务调用6. 服务治理 1. 概述 RPC架构的意义 解决了分布式环境下两…

chatgpt赋能python:Python写UDF对于SEO的影响

Python写UDF对于SEO的影响 作为一名有10年python编程经验的工程师&#xff0c;我对Python写UDF的优势深有体会。UDF&#xff08;User-Defined Functions&#xff09;是用户自定义函数的缩写&#xff0c;在数据处理和数据分析的过程中经常用到。下面我将介绍Python写UDF对于SEO…

渲染学生信息表

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, initi…