【过滤器篇】1.一个简单的过滤器demo

1.工程介绍

  我们要实现一个过滤器,这个过滤器能够过滤我们指定的资源路径,然后做出相应的操作。

  在这个demo中,主要介绍如何在过程中创建一个过滤器以及过滤器在过滤一个资源时的生命周期是怎样的。

  工程的下载地址

2.创建过滤器

  创建一个class:FirstFilter.java,该类实现java.servlet包下的Filter接口。然后它会自动生成接口中的三个方法,分别是初始化,doFilter和销毁方法。为了演示过滤器生命周期的执行过程,在对应方法中添加控制台的输出信息。

  具体代码如下:

package com.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/*
 * 2018.5.3 Dragon
 * 过滤器生命周期的demo
 */
public class FirstFilter implements Filter {

	@Override
	public void destroy()
	{
		System.out.println("destroy");
	}

	@Override
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
			FilterChain filterChain) throws IOException, ServletException {
		System.out.println("start----------doFilter");
		filterChain.doFilter(servletRequest, servletResponse);
		System.out.println("end------------doFilter");
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException 
	{
		System.out.println("init");
	}

}

3.注册过滤器

  然后需要我们在web.xml文件下注册这个过滤器,注册过滤器有两部分,分别是过滤器的名字和过滤器的资源路径。

  代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
    <filter>
        <filter-name>FirstFilter</filter-name>
        <filter-class>com.filter.FirstFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>FirstFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

4.运行项目

  ok,这些都做好了,然后就是将我们的工程部署到服务器,然后跑起来。

  由控制器的打印结果可以看出来:
     当我们启动tomcat的时候,初始化方法就已经执行了;
     其次我们访问我们的工程,这个时候doFilter执行;
     在doFilter方法执行的时候,先过滤对应的网页,然后返回相应信息
     最后,我们关闭tomcat的时候,会执行destroy方法
     以上,可以看出一个过滤器的生命周期

     实例化,初始化,执行,销毁四个阶段

注意:过滤器能够改变用户请求的web资源:比如访问某一页面需要检测用户是否登录过
              但是过滤器不能直接返回数据给用户

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您演示一个布隆过滤器的示例demo。假设我们有一个数据集合,其中包含一些字符串,比如"hello"、"world"、"python"等等。现在我们想要使用布隆过滤器来判断一个字符串是否在这个数据集合中。 首先,我们需要选择一些哈希函数。这些哈希函数应该能够将任意长度的字符串映射为一个固定长度的整数。在这个示例中,我们选择了三个哈希函数: ``` hash1(str) = (2 * str[0] + 3 * str[1] + 5) % 10 hash2(str) = (7 * str[0] + 11 * str[1] + 13) % 10 hash3(str) = (17 * str[0] + 19 * str[1] + 23) % 10 ``` 接下来,我们需要创建一个长度为10的位数组,并将所有位都初始化为0。这个位数组将用于表示数据集合中的所有字符串是否存在。 现在,我们可以将数据集合中的每个字符串分别进行哈希,并将对应的位数组中的位设置为1。例如,对于字符串"hello",我们可以将它分别使用哈希函数进行哈希,得到的结果分别为2、5、7。然后,我们将位数组中下标为2、5、7的位都设置为1。 最后,当我们想要判断一个字符串是否在数据集合中时,我们将该字符串分别使用哈希函数进行哈希,得到的结果分别为i1、i2、i3。然后,我们检查位数组中下标为i1、i2、i3的位是否都为1。如果都为1,那么说明该字符串可能存在于数据集合中;否则,说明该字符串一定不存在于数据集合中。 这就是一个简单的布隆过滤器示例demo。当然,实际使用中还需要考虑哈希函数的选择、位数组的大小、哈希冲突等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值