`

Servlet中filter作用及使用

    博客分类:
  • Java
阅读更多

Filter相关

Servlet过滤器是 在Java Servlet规范2.3中定义的,它能够对Servlet容器的请求和响应对象进行检查和修改,它在Servlet被调用之前检查Request对象, 修改Request Header和Request内容;在Servlet被调用之后检查Response对象,修改Response Header和Response内容。Servlet过滤器负责过滤的Web组件可以是Servlet、JSP或HTML文件,具有以下特点:

l         Servlet过滤器可能检查和修改ServletRequest和ServletResponse对象

l         可以指定Servlet过滤器和特定的URL关联,只有当客户请求访问此URL时,才会触发该过滤器工作

l         多个Servlet过滤器可以被串联起来,形成管道效应,协同修改请求和响应对象

l         所有支持Java Servlet规范2.3的Servlet容器,都支持Servlet过滤器

 

所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。该接口定义了以下3个方法:

l         init(FilterConfig)     这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后就会调用这个方法。在这个方法中可以通过 FilterConfig来读取web.xml文件中Servlet过滤器的初始化参数。

l         doFilter(ServletRequest, ServletResponse, FilterChain)  这是完成实际的过滤操作的方法,当客户请求访问与过滤器关联的URL时,Servlet容器先调用该方法。FilterChain参数用来访问后续的过滤 器的doFilter()方法。

l         destroy() Servlet容器在销毁过滤器实例前调用该方法,在这个方法中,可以释放过滤器占用的资源。

 

示例:拒绝列在黑名单上的客户访问留言簿

NoteFilter.java

package com.pandita.servlet.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;
import javax.servlet.http.HttpServletRequest;

public class NoteFilter implements Filter {

	public String BlackList = "";
	String warnMsg = "对不起,您没有权限留言!";
	
	public void destroy() {

	}

	public void doFilter(ServletRequest servletrequest,
			ServletResponse servletresponse, FilterChain filterchain)
			throws IOException, ServletException {
		String username = ((HttpServletRequest)servletrequest).getSession().getServletContext().getInitParameter("username");
		if(username != null && BlackList.indexOf(username) != -1){
			System.out.println(warnMsg);
                        filterchain.doFilter(servletrequest, servletresponse);
		}
	}

	public void init(FilterConfig filterconfig) throws ServletException {
		BlackList = filterconfig.getInitParameter("BlackList");
	}

}

 

web.xml配置:

<context-param>
		<param-name>username</param-name>
		<param-value>pandita</param-value>
    </context-param>
    <filter>
		<filter-name>NoteFilter</filter-name>
		<filter-class>com.pandita.servlet.filter.NoteFilter</filter-class>
		<init-param>
			<param-name>BlackList</param-name>
			<param-value>pandita</param-value>
		</init-param>
     </filter>
     <filter-mapping>
		<filter-name>NoteFilter</filter-name>
		<servlet-name>ScriptLoader</servlet-name>
		<url-pattern>*.js</url-pattern>
     </filter-mapping>

 

分享到:
评论

相关推荐

    servlet之Filter使用范例--登陆验证

    在Java Web开发中,Servlet和Filter是两个非常重要的概念。Servlet是Java提供的一个用于扩展服务器功能的接口,而Filter则是一种动态web资源过滤机制,它允许我们在数据处理流程中进行预处理和后处理,比如登录验证...

    Servlet中的Filter

    每个Filter的doFilter()方法会被调用,直到请求达到Servlet,或者在Filter中中断过滤链。 4. **Filter接口** - **init()**:在Filter实例化后,Web容器会调用一次init()方法,用于初始化Filter,可以在此方法中...

    Servlet Filter 的单元测试

    Servlet Filter 是Java Servlet API中的一个重要组件,主要用于在Servlet处理请求之前或之后进行拦截处理,例如权限检查、日志记录、内容转换等。进行Servlet Filter的单元测试是确保Filter功能正确性和健壮性的重要...

    简单的servlet+Filter的例子

    Servlet和Filter是Java Web开发中的两个重要概念,它们在构建动态Web应用程序中起着关键作用。Servlet是一种Java类,用于扩展服务器的功能,处理客户端(如浏览器)的请求,并向其发送响应。而Filter则是在Servlet...

    servlet+filter+listener 详解

    Servlet、Filter 和 Listener 是 JavaEE 中三种重要的组件,它们在 Web 开发中扮演着重要的角色。Servlet 负责处理客户端的请求,Filter 负责过滤和拦截 Web 资源,而 Listener 负责监听Servlet 容器中的事件。

    Servlet之Filter深入讲解及实例研究

    Servlet之Filter是Java Web开发中的一个重要概念,它在Servlet规范中扮演着不可或缺的角色。Filter(过滤器)允许开发者在请求到达目标Servlet之前或之后对请求和响应进行处理,提供了诸如数据验证、日志记录、字符...

    简单使用Filter模拟Servlet中的过滤器

    本篇博客“简单使用Filter模拟Servlet中的过滤器”主要探讨了如何在实际应用中实现和配置Filter,以及其工作原理。虽然描述部分为空,但我们可以从标题推测,博主可能详细讲解了如何创建一个基本的Filter类,实现...

    Servlet与jsp与Filter的使用

    ### Servlet与JSP与Filter的使用详解 #### 一、Servlet与JSP的基本概念 Servlet是一种Java技术,用于创建动态Web应用程序。它本质上是一个Java类,由Web服务器或应用服务器加载,以响应客户端请求。Servlet可以...

    Spring 管理filter 和servlet

    特别是在Java EE环境中,如何有效地整合Spring与Servlet、Filter等核心组件,对于构建高性能、高灵活性的应用系统至关重要。本文将深入探讨Spring管理Filter和Servlet的机制与实践步骤,帮助开发者更好地理解和运用...

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    通过配置`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素在web.xml中指定Filter的使用。 综上所述,`javax.servlet` jar包和`javax.servlet.jsp` jar包是Java Web开发不可或缺的部分,它们提供了处理HTTP请求的核心接口和类,...

    servlet_filter.rar_Servlet filter_重写filter

    在这个压缩包“servlet_filter.rar”中,我们聚焦于Servlet Filter的重写以及如何利用它来解决乱码问题和过滤敏感字符。 首先,让我们深入理解Servlet Filter的工作原理。Servlet Filter是一个实现了`javax.servlet...

    jsp,servlet,filter温故知新

    **JSP、Servlet与Filter详解** 在Web开发领域,Java技术是不可或缺的一部分,其中JSP(JavaServer Pages)...在实际项目中,合理利用Filter可以提高应用的安全性和性能,而JSP和Servlet则负责处理用户交互和业务逻辑。

    jsp+servlet+filter+javabean 权限实例代码

    `Filter`在Java Web应用中起着至关重要的作用,它提供了一种机制,可以在请求到达目标资源(如Servlet或JSP)之前对其进行拦截和处理。在这个权限实例中,我们将会用到`Filter`来实现登录检查。每当用户尝试访问受...

    jsp servlet中的过滤器Filter配置总结

    在Filter中,可以通过调用`doFilter()`方法将请求传递给下一个Filter或目标资源。Filter还可以选择是否中断请求链,通过调用`Chain.doFilter()`来实现。 总之,Filter在JSP和Servlet应用中提供了强大的功能,允许...

    servlet filter

    Servlet Filter是Java Servlet API中的一个重要概念,它是Servlet容器(如Tomcat、Jetty等)提供的一种拦截请求和响应的能力,允许开发者在请求到达目标Servlet之前或之后进行处理。Filter可以用于实现诸如认证、...

    servlet filter大全

    以上就是"servlet filter大全"中可能涵盖的一些关键知识点,它们在实际开发中扮演着重要角色,提升应用的健壮性和用户体验。了解并熟练运用这些过滤器,对于任何Java Web开发者来说都是至关重要的。通过学习和实践,...

    web.xml 中的listener、 filter、servlet 加载顺序及其详解.doc

    首先,我们需要了解 listener、filter、servlet 的定义和作用。Listener 是一种特殊的 Servlet,它可以监听页面、Session 和 Request 等对象的创建、销毁和修改事件,从而实现对 Web 应用的监听和控制。Filter 是一...

    servlet+filter+lisenter 例子

    在给定的压缩包文件中,"Filter"可能包含了一个或多个实现了Filter接口的示例类,它们展示了如何配置和使用过滤器。"Listener"文件可能包含实现了不同监听器接口的示例,用于展示监听器的工作原理。而"Servlet"文件...

Global site tag (gtag.js) - Google Analytics