java过滤器 Fliter
定义:过滤器是一个服务器端组件,他可以截取用户端请求信息与响应信息,并对信息进行过滤
例:当进入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的更多相关文章
- Java 过滤器的作用
Servlet API 非常久曾经就已成为企业应用开发的基石,而 Servlet 过滤器则是对 J2EE 家族的相对较新的补充.在 J2EE 探索者 系列文章的最后一篇中,作者 Kyle Gabhar ...
- Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求
Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 >>>>>>>>>>>>>>&g ...
- cookie、session和java过滤器
基础知识理解: cookie.session和过滤器通常都是用在web应用中,cookie和session用来保存一定的数据,过滤器Filter则是在浏览器发出请求之后,而后台执行特定的请求之前发生一 ...
- java过滤器(过滤器排序)
java过滤器(过滤器排序) 定义过滤器顺序是很简单的:匹配请求的过滤器将按照它们出现在部署描述符或者编程式配置中的顺序添加到过滤器链中(记住,如果同时再部署描述符或者编程式配置中设置了一些过滤器,那 ...
- Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求
Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求 Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java ...
- java 过滤器(理解二)
request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf ...
- java 过滤器(Filter)与springMVC 拦截器(interceptor)的实现案例
java 过滤器Filter: package com.sun.test.aircraft.filter;import javax.servlet.*;import java.io.IOExcepti ...
- 1.7(学习笔记)过滤器(Fliter)
一.过滤器(Fliter)简介 过滤器是位于客户端与服务器之间的滤网,在访问资源时会经过一系列的过滤器, 满足条件则放行,不满足条件的将其拦截. 过滤器可以看做是一个特殊的Servlet,设置了过滤器 ...
- java 过滤器
1.什么是过滤器? 过滤信息,执行的优先级高于 servlet 2.自定义过滤器的步骤 写一个普通java类,实现Filter接口 2.配置过滤器 web.xm中 import java.io.I ...
随机推荐
- Codeforces Round #253 (Div. 2)B(暴力枚举)
就暴力枚举所有起点和终点就行了. 我做这题时想的太多了,最简单的暴力枚举起始点却没想到...应该先想最简单的方法,层层深入. #include<iostream> #include< ...
- DataTable:数据库到程序的桥梁
DataTable:是一个临时保存数据的网格虚拟表(表示内存中数据的一个表.).DataTable是ADO dot net 库中的核心对象,它无须代码就可以简单的绑定数据库,它具有微软风格的用户界面. ...
- QT:QString、QByteArray和char *的转换 【转载】
原文网址:http://blog.csdn.net/light1028/article/details/7899541 第一种,数据流的方式,这里只说从QByteArray转向QString. QBy ...
- bzoj 3992 [SDOI2015]序列统计——NTT(循环卷积&&快速幂)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3992 有转移次数.模M余数.方案数三个值,一看就是系数的地方放一个值.指数的地方放一个值.做 ...
- Android实现推送方式解决方案 - 长连接+心跳机制(MQTT协议)
本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息. ...
- linux下安装composer
在linux下使用comoser命令,但是提示composer command not found 那么就是当前环境中没有composer 学习源头: https://blog.csdn.net/gb ...
- Xcode工具特性
1.注释 #pragma mark 注释说明#pragma mark - 分类/分组注释说明 2.自定义代码块. 3.多文本编辑框 View>>Assistant Editor
- ramfs, rootfs and initramfs
ramfs, rootfs and initramfs October 17, 2005 Rob Landley <rob@landley.net> =================== ...
- java代码split分割数字类
总结:正则表达式-- package com.c2; //写一个spli的用法,数字类 ===分割字符串 public class yqw { public static void main(Stri ...
- mysql存储过程获取sqlstate message_text
群里有人询问,在mysql的proc中如何获取错误信息.错误编号呢?我们知道在oracle.mssql中比较简单: oracle中sqlcode,sqlerrm ;mssql中ERROR_PROCED ...