定义:过滤器是一个服务器端组件,他可以截取用户端请求信息与响应信息,并对信息进行过滤

例:当进入csdn要进行文章编辑时,检测用户是否登录,若未登录,跳转到登录界面。

过滤器操作方法:

init() : 初始化过滤器,创建过滤器实例后调用这个方法,可以读取web.xml过滤器中的参数

doFilter() : 完成过滤操作,过滤器的核心方法,当用户请求访问预过滤出其关联的url
* 时调用这个方法 FilterChain参数可以调用chain.doFilter方法,将请求传给下一个
* 过滤器,或利用转发、重定向将请求转发到其他资源

destroy() : 销毁过滤器 释放资源

工作原理:

用户请求----->过滤器----->web资源

web资源----->过滤器----->用户

生命周期:

实例化----->初始化------>过滤----->销毁

web.xml--->init()---->dofilter()--->destory()

过滤器链:指一个网页需要经过多个过滤器的过滤才能对web资源进行请求

用户请求--->过滤器1--->过滤器2--->过滤器3---->.......------>web资源

经过多个过滤器的步骤为dofilter1(start)------>dofilter2(start)----->dofilter2(end)----->dofilter1(end) 即多个过滤器嵌套实现功能

例子:

首先先在web.xml中配置过滤器(也可以在代码中直接配置)

<filter>    <!-- 指定一个过滤器 -->
<filter-name>JavaFilter</filter-name> <!-- 给过滤器指定名字 -->
<filter-class>com.th.JavaFilter</filter-class> <!-- 指定过滤器的完整路径名 -->
</filter>
<filter-mapping> <!-- 设置一个Filter所负责拦截的资源 -->
<filter-name>JavaFilter</filter-name>
<url-pattern>/index.jsp</url-pattern> <!-- 设置Filter所拦截的请求路径 ,即过滤index.jsp页面的请求-->
</filter-mapping>

设置一个编码过滤器

//@WebFilter(
// urlPatterns={"*"},
//    initParams={@WebInitParam(name="encoding",value="utf-8")})
public class JavaFilter implements Filter{
private String defaultEncoding="utf-8"; /**
* 销毁方法。  当web应用移除或服务器停止时才销毁
*/
@Override
public void destroy() { }
/**
* 这个事过滤器的核心方法,完成实际操作,FilterChain方法用于访问Filter中的后续过滤器
*/
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(defaultEncoding);
response.setCharacterEncoding(defaultEncoding);
chain.doFilter(request, response); } /**
* Filter的创建和销毁由web服务器负责,web应用启动时,创建Filter对象,调用init方法,读取web.xml配置
* Filter对象只会创建一次,init方法也执行一次,
*/
@Override
public void init(FilterConfig config) throws ServletException {
String encoding = config.getInitParameter("encoding");  
if(encoding!=null){
defaultEncoding=encoding;
} } }

https://www.cnblogs.com/coderland/p/5902878.html

java过滤器 Fliter的更多相关文章

  1. Java 过滤器的作用

    Servlet API 非常久曾经就已成为企业应用开发的基石,而 Servlet 过滤器则是对 J2EE 家族的相对较新的补充.在 J2EE 探索者 系列文章的最后一篇中,作者 Kyle Gabhar ...

  2. Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求

    Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 >>>>>>>>>>>>>>&g ...

  3. cookie、session和java过滤器

    基础知识理解: cookie.session和过滤器通常都是用在web应用中,cookie和session用来保存一定的数据,过滤器Filter则是在浏览器发出请求之后,而后台执行特定的请求之前发生一 ...

  4. java过滤器(过滤器排序)

    java过滤器(过滤器排序) 定义过滤器顺序是很简单的:匹配请求的过滤器将按照它们出现在部署描述符或者编程式配置中的顺序添加到过滤器链中(记住,如果同时再部署描述符或者编程式配置中设置了一些过滤器,那 ...

  5. Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求

    Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求   Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java ...

  6. java 过滤器(理解二)

    request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf ...

  7. java 过滤器(Filter)与springMVC 拦截器(interceptor)的实现案例

    java 过滤器Filter: package com.sun.test.aircraft.filter;import javax.servlet.*;import java.io.IOExcepti ...

  8. 1.7(学习笔记)过滤器(Fliter)

    一.过滤器(Fliter)简介 过滤器是位于客户端与服务器之间的滤网,在访问资源时会经过一系列的过滤器, 满足条件则放行,不满足条件的将其拦截. 过滤器可以看做是一个特殊的Servlet,设置了过滤器 ...

  9. java 过滤器

    1.什么是过滤器?  过滤信息,执行的优先级高于 servlet 2.自定义过滤器的步骤 写一个普通java类,实现Filter接口 2.配置过滤器  web.xm中 import java.io.I ...

随机推荐

  1. @angular/cli项目构建--组件

    环境:nodeJS,git,angular/cli npm install -g cnpm --registry=https://registry.npm.taobao.org cnpm instal ...

  2. C++ const 常量和常指针

    常量,该指针所指向的值为只读 ; const int * p = &a; 常指针,该指针的值为只读,不可再指向其他地址 const * const p = &a; 常值,常指针 con ...

  3. wordpress 插件 汉化

    http://blog.wpjam.com/article/localizing-a-wordpress-plugin-using-poedit/ 翻译或者说本地化 WordPress 插件和主题可以 ...

  4. Python 中的几种矩阵乘法 np.dot, np.multiply, *

    使用array时,运算符 * 用于计算数量积(点乘),函数 dot() 用于计算矢量积(叉乘).使用matrix时,运算符 * 用于计算矢量积,函数 multiply() 用于计算数量积. 下面是使用 ...

  5. C#面向对象(四):其他面向对象知识

    前文链接: C#面向对象(一):明确几个简单的概念作为开胃菜 C#面向对象(二):封装和继承 C#面向对象(三):多态 今天是这个系列的收尾文章了,来谈谈其他面向对象知识. 1.嵌套类 1.1概念 在 ...

  6. webpack里CommonJS的require与ES6 的module.exports加载模块有何不同

    只需明白commonjs的规则即可,import会被转化为commonjs格式的,babel默认会把ES6的模块转化为commonjs规范的. import vue from 'vue'; //等价于 ...

  7. Oracle 12C 新特性之 db默认字符集AL32UTF8、PDB支持不同字符集

    一. db默认字符集AL32UTF8Specify the database character set when you create the database. Starting from Ora ...

  8. UOJ #55 & 洛谷 P3920 紫荆花之恋 —— 动态点分治+替罪羊树

    题目:http://uoj.ac/problem/55 https://www.luogu.org/problemnew/show/P3920 参考博客:https://www.cnblogs.com ...

  9. 五、Jmeter--关联(正则表达式)

    一.什么时候需要关联? 1. 服务器返回的动态变化而且对业务有影响的需要关联. 2. 回放脚本看是否正确,检查下脚本,是否有动态数据影响 3. 一大串字符串,每次请求参数是否有变化 4. 可以找开发问 ...

  10. 使用while 打印10~1,1~10

    使用while 打印10~1,1~10 #!/bin/bash i= ));do echo $i ((i--)) done 答案:109876543210 i= ));do echo $i ((i++ ...