1、Servlet 过滤器有以下目的

  1. 在客户端的请求访问后端资源之前,拦截这些请求。
  2. 在服务器的响应发送回客户端之前,处理这些响应。

2、Filter接口

  1.每一个过滤器都需直接或间接继承Filter接口

  2.Filter的创建

    在web服务器启动时会将配置在web.xml中的过滤器保存至内存中。

  3.Filter的方法

    init():在Filter的生命周期中执行一次,在Filter创建的时候执行,可用于初始化参数、修改参数等操作。

    doFilter():做拦截操作的时候执行

    destroy():在Filter的生命中执行一次,在卸载Filter容器前被调用,用于回收Filter所占用的资源。

3、Filter的配置 

<!--过滤器测试-->
<filter>
<filter-name>TestFilter</filter-name>
<filter-class>com.controller.TestFilter</filter-class>
<init-param>
<param-name>oneLink</param-name>
<param-value>/test1</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>TestFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>ERROR</dispatcher>
</filter-mapping>

  在web.xml中添加如上配置。其中com.controller.TestFilter为自己实现的过滤器,其代码如下:

package com.controller;

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;
import javax.servlet.http.HttpServletResponse; public class TestFilter implements Filter { private String oneLink;
private String[] linkArr; public void init(FilterConfig filterConfig) throws ServletException {
oneLink = filterConfig.getInitParameter("oneLink");
if (!isNull(oneLink)) {
linkArr = oneLink.split(",");
}
return;
} public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
boolean isEqual = false;
for (String link : linkArr) {
String str = ((HttpServletRequest) servletRequest).getServletPath();
if(((HttpServletRequest) servletRequest).getServletPath().equals(link)){
isEqual = true;
break;
}
} if (isEqual) {
filterChain.doFilter(servletRequest, servletResponse);
} else {
httpResponse.sendRedirect("/test2");
filterChain.doFilter(servletRequest, servletResponse);
}
} public void destroy() {
} private boolean isNull(Object obj){
return obj == null || obj.equals("") ? true : false;
} }

  这样一个简单的过滤器就配置完成。

4、Filter配置参数介绍

<filter>
<filter-name>TestFilter</filter-name>
<filter-class>com.controller.TestFilter</filter-class>
<init-param>
<param-name>oneLink</param-name>
<param-value>/test1</param-value>
</init-param>
</filter>
<filter-name>:配置过滤器名称
<filter-class>com.controller.TestFilter</filter-class>:配置过滤器的实现类

<init-param>:配置需要出示化的一些参数名、参数值
注:其中<init-param>中配置的参数在web服务启动时可通过Filter中的init方法获取,如filterConfig.getInitParameter("oneLink")
<filter-mapping>
<filter-name>TestFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<url-pattern>:配置过滤请求规则
<dispatcher>:配置过滤规则,请参考web.xml里<filter-mapping>中的<dispatcher>作用

servlet之filter过滤器的更多相关文章

  1. 【Servlet】Filter过滤器的编写和配置

    Servlet的Filter介绍 在Servlet作为过滤器使用时,它可以对客户的请求进行过滤处理,当它处理完成后,它会交给下一个过滤器处理,就这样,客户的请求在过滤链里一个个处理,直到请求发送到目标 ...

  2. servlet中filter(过滤器)的学习使用

    servlet过滤器是小型的web组件,它能够处理传入的请求和传出的响应.Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理r ...

  3. 6.Servlet、Filter过滤器以及监听器

    Servlet 是运行在Web服务器端的Java程序,它使用Java语言编写,与Java程序的区别是Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持,在Jav ...

  4. java Servlet中的过滤器Filter

    web.xml中元素执行的顺序listener->filter->struts拦截器->servlet. 1.过滤器的概念 Java中的Filter 并不是一个标准的Servlet ...

  5. Servlet的学习之Filter过滤器技术(1)

    本篇将讲诉Servlet中一项非常重要的技术,Filter过滤器技术.通过过滤器,可以对来自客户端的请求进行拦截,进行预处理或者对最终响应给客户端的数据进行处理后再输出. 要想使用Filter过滤器, ...

  6. Servlet中的过滤器Filter详解

    加载执行顺序 context-param->listener->filter->servlet web.xml中元素执行的顺序listener->filter->stru ...

  7. Servlet中的过滤器Filter

    链web.xml中元素执行的顺序listener->filter->struts拦截器->servlet. 1.过滤器的概念 Java中的Filter 并不是一个标准的Servlet ...

  8. [转]Servlet的学习之Filter过滤器技术

    本篇将讲诉Servlet中一项非常重要的技术,Filter过滤器技术.通过过滤器,可以对来自客户端的请求进行拦截,进行预处理或者对最终响应给客户端的数据进行处理后再输出. 要想使用Filter过滤器, ...

  9. 【Servlet】Java Serlvet Filter 过滤器

    Filter的设计思想Filter是一种AOP(aspect-oriented programming)的设计思想 : 面向切面编程.用于的请求和响应都会走 使用filter的登录案例我们通过一张图片 ...

随机推荐

  1. windows 环境下wamp环境的搭建。

    学php要搭建wamp环境,经常使用的是wampserver,也挺好用的,一键傻瓜式安装,挺省事的.但是程序员都是爱折腾的,总要求要有完美的环境.于是用来用去,觉得还是散装环境最能体现自己的逼格. 其 ...

  2. Docker入门教程(六)另外的15个Docker命令

    Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...

  3. oneM2M启动Release 3标准化,华为引领物联网技术布局

    http://developer.huawei.com/cn/ict/news/cn/2016/06/onem2m [韩国,首尔,2016年6月] 国际权威的物联网组织oneM2M召开第23次技术全会 ...

  4. springMVC的注解详解

    springmvc常用注解标签详解 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业 ...

  5. Yocto开发笔记之《错误记录》(QQ交流群:519230208)

    QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 ============================================== 提问: 1. 怎样修改linu ...

  6. SQL查询效率:100w数据查询只需要1秒钟

    G os: windows 数据库: ms sql server 目的: 查询性能测试,比较两种查询的性能 SQL查询效率 step by step -- setp . -- 建表 create ta ...

  7. angularjs中ng-selected使用方法

    ng-selected只能应用在option标签上,就像ng-submit只能应用在form标签上一样. ng-selected指令为select设置了指定的选中值,HTML规范不允许浏览器保存类似s ...

  8. 自然语言15.1_Part of Speech Tagging 词性标注

    QQ:231469242 欢迎喜欢nltk朋友交流 https://en.wikipedia.org/wiki/Part-of-speech_tagging In corpus linguistics ...

  9. Java多线程——线程范围内共享变量

    多个线程访问共享对象和数据的方式 1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,买票系统就可以这么做. package java_ ...

  10. 无法访问 IIS 元数据库。您没有足够的特权访问计算机上的 IIS 网站

    我是WIN10+VS2015  之前用的是VS2012     后来卸载了VS2012 就出现了这个错误,请问该如何解决 在VS的图标上 按右键用管理员(Administrator)运行