JavaWeb之过滤器(Filter)与监听器(Listener)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 本文介绍了JavaWeb中的过滤器(Filter)和监听器(Listener)概念及其使用。过滤器主要用于拦截和处理Web资源请求,如进行编码设置、权限验证等,它在Servlet之前和之后执行。监听器则监听域对象(如ServletRequest、HttpSession、ServletContext)状态变化,分为创建/销毁监听和属性变化监听。监听器在Web.xml中注册后会在相应事件发生时自动执行,例如用于统计网站访问人数或初始化配置。

前言


版权声明:本文为本博主在CSDN的原创文章搬运而来,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                            

原文链接:https://blog.csdn.net/weixin_72543266/article/details/138636768


        回顾一下学习并对JavaWeb的学习过程中对笔记总结进行记录,同时进行思考过程中的理解加入其中,方便自己进行后续的学习和回顾,其实前面的那些都说不上和网安有关系,但是对于过滤器来说,在网安中,很多网站会通过顾虑器来过滤掉渗透人员发来的存在威胁的请求,当然过滤器也不是万无一失的.

过滤器(Filter)

1.什么是过滤器

       过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理,通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理

image.gif

2.过滤器的语法格式

2.1.创建一个类实现Filter接口

public class CharSetFilter implements Filter{}

image.gif

2.2.重写接口中的方法

public void destroy() { //销毁的方法}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
                    //过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理
                    chain.doFilter(req, resp);
            }
public void init(FilterConfig config) throws ServletException {
                    /*初始化方法  接收一个FilterConfig类型的参数 该参数是对Filter的一些配置*/
            }

image.gif

2.3.在web.xml文件中配置

<filter>
                    <filter-name>过滤器名称</filter-name>
                    <filter-class>过滤器所在的路径</filter-class>
            </filter>
            <filter-mapping>
                    <filter-name>过滤器名称</filter-name>
                    <url-pattern>需要过滤的资源</url-pattern>
            </filter-mapping>

image.gif

3.使用场景

3.1.如何防止用户未登录就执行后续操作

String name=(String)session.getAttribute("key");
if(name==null){
//跳转到登录页面
}

image.gif

3.2.设置编码方式--统一设置编码

设置为utf-8等统一格式编码

3.3.加密解密(密码的加密和解密)

通过base64加密或解密,当然能创建自己公司的加密方式更好

3.4.非法文字筛选

对于存在危协的非法输入字符进行过滤操作

3.5.下载资源的限制

防止未收权或是非法下载资源

过滤器的特点:在servlet之前和之后都会被执行

监听器(Listener)

1.什么是监听器

       监听器就是监听某个域对象的的状态变化的组件  监听器的相关概念:  事件源:被监听的对象(三个域对象 request、session、servletContext)  监听器:监听事件源对象事件源对象的状态的变化都会触发监听器  注册监听器:将监听器与事件源进行绑定  响应行为:监听器监听到事件源的状态变化时所涉及的功能代码(程序员编写代码)

2.监听器分类

       第一维度按照被监听的对象划分:ServletRequest域、HttpSession域、ServletContext域  第二维度按照监听的内容分:监听域对象的创建与销毁的、监听域对象的属性变化的

image.gif

3.监听三大域对象的创建与销毁的监听器

监听器的编写步骤(重点):

       编写一个监听器类去实现监听器接口  覆盖监听器的方法  需要在web.xml中进行配置—注册

<listener>
       <listener-class>监听器所在的路径</listener-class>                                    
</listener>

image.gif

ServletContextListener

监听ServletContext域的创建与销毁的监听器

4.Servlet域的生命周期

何时创建:服务器启动创建  何时销毁:服务器关闭销毁

ServletContextListener监听器的主要作用

       初始化的工作:初始化对象、初始化数据(加载数据库驱动、连接池的初始化)  加载一些初始化的配置文件(spring的配置文件)  任务调度(定时器—Timer/TimerTask)

HttpSessionListener

监听Httpsession域的创建和销毁的监听器

5.HttpSession对象的生命周期

       何时创建:第一次调用request.getSession时创建  何时销毁:服务器关闭销毁、session过期(默认30分钟,修改默认的30分钟是在Tomcat的web.xml,修改当前项目的过期时间是在自己项目的web.xml中)、手动销毁

6.HttpSessionListener监听器的主要作用:

       由于每次访问网站都会默认创建session对象(jsp页面中page指令中的session属性默认为true,即被访问时创建session),可以用于计数网站访问过的人

ServletRequestListener

监听ServletRequest域创建与销毁的监听器

ServletRequest的生命周期

创建:每一次请求都会创建request

销毁:请求结束

用处不是很多,就不多写了

相关文章
|
2天前
|
监控 Java 数据管理
java会话跟踪和拦截器过滤器
本文介绍了Web开发中的会话跟踪技术——Cookie与Session,以及过滤器(Filter)和监听器(Listener)的概念和应用。Cookie通过在客户端记录信息来识别用户,而Session则在服务器端保存用户状态。过滤器用于拦截和处理请求及响应,监听器则监控域对象的状态变化。文章详细解释了这些技术的实现方式、应用场景和主要方法,帮助开发者更好地理解和使用这些工具。
9 1
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
367 37
|
27天前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
29 2
|
1月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
41 5
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
2月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
92 2
|
2月前
|
SQL JSON JavaScript
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
Vue 指令、生命周期、this和$、vue脚手架进行模块化开发/ElementUI框架、综合案例,element商品列表展示增删改查
JavaWeb基础9——VUE,Element&整合Javaweb的商品管理系统
|
2月前
|
监控 前端开发 Java
Java里的过滤器和拦截器是什么原理,如何选择?
Java里的过滤器和拦截器是什么原理,如何选择?
27 0