`
tianhei
  • 浏览: 211665 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Filter小例子

阅读更多

Filter即过滤器,也是Servlet的一种。主要功能是对用户的请求和对服务器的响应做同一的处理。过滤器也是根据这两个功能而命名的。

Filter相当于组件,可以最后独立添加在应用中。之后只要请求响应格式符合,过滤器将自动执行。

Filter实用案例:对请求/响应内容做同一编码、统计在线用户、屏蔽非法文字等等。

 

实现了Filter接口就实现了自己的过滤器。

Filter接口中有三个方法:

1、public void init(FilterConfig config);//过滤器初始化

2、public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain);

     过滤器执行方法

3、public void destroy();//过滤器销毁

 

过滤器的初始化是在容器启动时自动初始化的。

 

TestFilter.java

package com.vmn;

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

public class TestFilter implements Filter{

	public void init(FilterConfig config){
		System.out.println("过滤器初始化。。。");
	}	
	public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain){
		try{
			System.out.println("doFilter。。。");
			chain.doFilter(request,response);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public void destroy(){
		System.out.println("过滤器销毁。。。");
	}
}

 第17行的作用是当处理完这个Filter的时候,会把请求或响应继续往下传(参数为request、response)。否则请求或响应会停在这个doFilter()方法内。

第11行的这个init方法是在容器初始化的时候执行的。

第22行的这个destroy方法为过滤器销毁。在关闭web服务器、reload服务器、关机的时候执行的。

 

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
    <servlet>
		<servlet-name>testservlet</servlet-name>
		<servlet-class>com.vmn.TestServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>testservlet</servlet-name>
		<url-pattern>/ts</url-pattern>
	</servlet-mapping>
	
	<filter>
		<filter-name>myfilter</filter-name>
		<filter-class>com.vmn.TestFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>myfilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

第15行声明了一个filter,标签为<filter>。

第19行声明了一个filter映射,标签为<filter-mapping>。

第16行为这个filter命名为myfilter,第20行命了同样的名字。因此把"/*"请求路径对应到了这个filter。

第21行定义了这个filter的请求路径"/*",使用标签<url-pattern>。

第17行描述了自定义的这个过滤器的类的具体位置:com.vmn.TestFilter。

 

相关API:

FilterConfig 描述了过滤器的配置信息

1、public String getFilgerName();//获得过滤器名称

2、public String getInitParameter(String name);//获得初始化参数

3、getInitParameterNames();//获得初始化名称

4、public ServletContext getServletContext();//获得servlet上下文

FilterChain

1、doFilter(ServletRequest request,ServletResponse response,FilterChain chain)

     获得下一个连接

 

 

	<filter>
		<filter-name>myfilter</filter-name>
		<filter-class>com.vmn.TestFilter</filter-class>
		<init-param>
			<param-name>Boot</param-name>
			<param-value>this is init param</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>myfilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 this.getInitParameter("Boot");//此时可以获得filter的初始化参数Boot的值this is init param。

 

分享到:
评论

相关推荐

    filter 简单小例子,入门例子

    本文将深入讲解Filter的基本使用,通过一个简单的入门例子来帮助理解其工作原理。 首先,让我们了解什么是Filter。在Servlet规范中,Filter是一个接口,它允许开发者在请求到达目标Servlet或JSP之前对其进行拦截,...

    简单的servlet+Filter的例子

    回到主题,"简单的servlet+Filter的例子"可能涉及到一个简单的应用场景,比如登录验证。在用户尝试访问受保护的资源(如Servlet)之前,Filter会检查请求中是否携带了有效的session信息。如果没有,Filter会重定向...

    Directshow Transform Filter例子

    在这个“Directshow Transform Filter例子”中,我们将探讨如何创建一个自定义的Transform Filter,该Filter的主要功能是将输入的彩色图像数据转换为灰度图像。 Transform Filter在DirectShow中扮演着重要的角色,...

    securityfilter简单例子

    本示例"securityfilter简单例子"提供了一个简化的安全过滤器应用,适用于中小型网站的基础安全需求。 **一、SecurityFilter的工作原理** 1. **Filter接口**:在Servlet API中,Filter接口定义了三个核心方法:`...

    Servlet小例子源码

    总的来说,这个"Servlet小例子源码"涵盖了Java Web开发的基础知识,是学习和理解Servlet、Filter和Listener功能和用法的理想资源。通过深入研究和实践,初学者可以快速提升自己的Java Web开发技能。

    开发一个简单filter的例子

    ### 开发一个简单filter的例子 #### 背景与目的 对于DirectShow(DShow)初学者来说,能够动手开发一个简单的filter是非常重要的一步。它不仅有助于理解filter的基本结构,还能帮助开发者熟悉DirectShow的工作原理...

    filter过滤器例子

    本教程将通过一个具体的`Filter`例子来深入探讨其工作原理和应用。 首先,我们需要了解`Filter`的基本概念。`Filter`是Java Servlet API的一部分,通过实现`javax.servlet.Filter`接口来创建。它的主要功能是在HTTP...

    java filter 执行过程例子

    - **响应过滤**:响应返回时,Filter的`doFilter()`方法同样会被调用,这次是从最后一个Filter到第一个Filter,每个Filter都有机会对响应进行修改。 4. **销毁阶段**:当应用停止时,Servlet容器会调用Filter的`...

    Filter实际例子看了就懂了

    在学习过程中,初学者可以通过修改这个例子,尝试不同的Filter实现,如添加日志记录、修改请求头等,以加深理解。同时,了解Servlet API中的`HttpServletRequest`和`HttpServletResponse`对象也是非常关键的,它们...

    过滤器(filter) 例子源码

    在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许开发者在请求被处理之前或之后执行一些预定义的任务。本篇文章将基于提供的标题和描述,详细讲解过滤器的概念、工作原理以及如何通过源码实现一个...

    sping MVC 简单小例子

    总结,这个"Spring MVC 简单小例子"旨在展示如何通过Spring MVC实现基础的HTTP处理,结合自定义Filter进行请求和响应的拦截,以及自定义ServletResponse以扩展响应功能。这些基础知识对于理解Spring MVC的工作原理...

    kalman滤波超详细讲解加小例子

    卡尔曼滤波器详细讲解加小例子 卡尔曼滤波器是一个optimal recursive data processing algorithm(最优化自回归数据处理算法),广泛应用于机器人导航、控制、传感器数据融合、计算机图像处理等领域。卡尔曼滤波器...

    Filter的使用的demo

    在这个例子中,我们创建了一个自定义的Adapter,并实现了`Filterable`接口。`getFilter()`方法返回一个`Filter`实例,我们在其中处理`performFiltering()`和`publishResults()`方法。当用户在搜索框中输入字符时,`...

    VS环境下PCL的一个例子 Filter

    1. VoxelGrid滤波:也称为体素化滤波,通过将空间划分为小的立方体(体素),将每个体素内的点合并为一个代表点,从而降低点云的密度,减少计算量。在VS中,我们可以创建一个PCLVisualizer对象,加载点云数据,然后...

    servlet 过滤器例子 filter

    本示例“servlet过滤器例子filter”将深入讲解如何使用Servlet过滤器以及其在实际应用中的作用。 首先,我们来了解什么是Servlet过滤器。Servlet过滤器(Filter)是Servlet API的一部分,定义在`javax.servlet....

    servlet+filter+lisenter 例子

    Filter接口的`doFilter()`方法是核心,它接收ServletRequest和ServletResponse对象,并通过FilterChain对象将请求传递到下一个Filter或目标Servlet。 监听器(Listener)是实现特定接口的Java类,它们用于监听和...

    微信小程序filter使用模板

    在给定的压缩包文件`miniprogram-test-1`中,可能包含了具体的示例代码,你可以参考这些例子学习如何在实际项目中应用和自定义`filter`,提升微信小程序的用户体验。 总之,`filter`是微信小程序开发中的一个重要...

    经典的JavaScript小例子

    这个"经典的JavaScript小例子"集合提供了一系列实用的代码片段,旨在帮助开发者理解和应用JavaScript的基本概念,同时激发创新思维,为网站增添互动性和趣味性。 首先,我们要明白JavaScript的主要功能:它可以在...

    最新300个JavaScript小例子

    "最新300个JavaScript小例子"提供了一种实践性的学习方法,帮助开发者深入理解和掌握JavaScript的核心概念。这个资源包含了一系列精心设计的代码片段,旨在通过实例来教授各种功能和技巧。 JavaScript例子通常涵盖...

Global site tag (gtag.js) - Google Analytics