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

简介: 本文介绍了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天前
|
存储 程序员
JavaWeb之Listener监听器
JavaWeb之Listener监听器
4 0
|
7天前
|
安全 Java
使用FilterChain实现Java中的过滤器链
使用FilterChain实现Java中的过滤器链
|
11天前
|
前端开发 JavaScript 算法
javaweb(四)——过滤器与监听器
javaweb(四)——过滤器与监听器
|
12天前
|
安全 Java 容器
Java 1.8新特性使用记录:Filter、数据容器的转换、排序Sorted
Java 1.8新特性使用记录 有些方法一段时间不使用会忘记,这里要记录一下,方便以后使用 一、过滤Filter 二、数据容器的转换 三、List 排序
20 0
|
13天前
|
Java
java中Stream流中的forEach、filter、map、count、limit、skip、concat
java中Stream流中的forEach、filter、map、count、limit、skip、concat
15 0
|
Java 缓存 应用服务中间件
Java EE 之 过滤器入门学习与总结(2)
今天就对使用Filter技术能做什么来个小小的归纳。也为了方便今后的复习。 控制浏览器不进行对jsp页面的缓存 //在doFilter方法中添加这样的代码 HttpServletRequest request = (HttpServletRequest )req; Ht...
992 0
|
2天前
|
监控 安全 Java
Java中的线程调度与性能优化技巧
Java中的线程调度与性能优化技巧
|
2天前
|
缓存 安全 Java
Java中的线程安全问题及解决方案
Java中的线程安全问题及解决方案
|
2天前
|
并行计算 安全 Java
Java中的多线程与并发编程详解
Java中的多线程与并发编程详解
|
2天前
|
存储 缓存 前端开发
Java八股文面试之多线程篇
Java八股文面试之多线程篇
9 0
Java八股文面试之多线程篇