Filter和listener

本文详细介绍了HTTP中的Filter和Listener。Filter主要用于在请求访问目标资源前进行修改、判断等操作,例如权限控制、过滤敏感词等。而Listener则用于监听Web应用中对象的状态变化,如监听Session、Request等。文中给出了Filter防止浏览器缓存、自动登录、过滤脏词以及JSP内容压缩的案例,以及Listener获取网站访问人数的示例。
摘要由CSDN通过智能技术生成

Fileter

概念:

处于客户端与服务器目标资源之间的一道过滤技术

作用:

在访问目标资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改,也可以对响应进行过滤,拦截或者修改响应
比如:实现权限访问控制、过滤过敏词汇、压缩响应信息功能

实现步骤

在这里插入图片描述

Filter配置

配置方式一:web.xml

在这里插入图片描述

配置方式二:注解在这里插入图片描述

过滤器链

在这里插入图片描述

Filter优先级

在这里插入图片描述

过滤器参数配置

在这里插入图片描述

过滤器的典型应用

案例1:禁止浏览器缓存动态页面
@WebFilter(filterName = "CacheFilter" ,urlPatterns={
   "*.jpg","*.png","*.css","*.html","*.js"})
public class CacheFilter implements Filter {
   
    public void destroy() {
   
        
    }
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
   
     HttpServletResponse response=  (HttpServletResponse)resp;
     //缓存十分钟,对ie有效
        response.setHeader("cache-control", "max-age=600");
        response.setDateHeader("expires", System.currentTimeMillis() + 600000);
        chain.doFilter(req, resp);
    }

    public void init(FilterConfig config) throws ServletException {
   

    }
}
案例二、自动登录

步骤: ①首先浏览器向服务器请求login.jsp页面,服务器返回该页面的内容
②用户填写信息并选择自动登录或否,如果选择了自动登录就由servlet返回cookie中保存的登录信息给浏览器
③浏览器在下一次访问的时候直接携带cookie来就可以了
在这里插入图片描述
代码实现:
①登录界面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
    <h1>登录页面</h1>
    <form action="login" method="post" enctype="application/x-www-form-urlencoded">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="pwd"><br>
        <input type="checkbox" value="自动登录" name="auto">
        <input type="submit" value="登录">
    </form>
</body>
</html>

②LoginServlet

package com.qf.controller;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Base64;

/**
 * @author Administrator
 * @Version v1.0
 * @Date 2021/9/7 11:04
 */
@WebServlet(name = &#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值