博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet过滤器
阅读量:4102 次
发布时间:2019-05-25

本文共 2658 字,大约阅读时间需要 8 分钟。

过滤器(Filter)
Filtering概述
Filtering是servlet2.3以上版本的特性
主要内容
1.Filtering的基本思想
将jsp,servlet,html看作资源,容器用来处理这些资源,并未资源提供服务
  因此,可以在处理资源之前或之后,通过过滤增加一些通用功能。
比如:
拦截请求头:安全认证,日志
数据转换:加密(压缩),解密(解压缩)
抢占特殊资源的服务:缓存(redis)
而且这些过滤器可以形成一个链
2.Filtering API
接口:javax.servler.Filter
所有起到过滤器功能的类要实现此接口
接口:javax.servlet.FilterChain
将各个过滤器连接起来组成过滤器链
接口:javax.servlet.FilterConfig
处理过滤器配置相关信息
3.Filtering的实现
创建一个web项目
在webContent下创建一个file目录下面放一张图片和一个imag文件,imag文件里再放一张照片
这里我们做两个拦截
创建一个java类继承接口Filter
package cn.et;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;/** * 拦截器的实现类 实现Filter * 	拦截器只能在容器启动时创建实例 *  * 拦截器链 * 	如果某些资源被多个过滤器拦截形成了链。 *  如果资源被访问时 这个链中的所有过滤器都会被依次执行。 *  如果如何一个过滤器没有通过 链条被中断,链条后的所有过滤器都不会执行。 * @author Administrator * */public class FilterDemo implements Filter {	/**	 * 生命周期的销毁方法	 */	public void init(FilterConfig filterConfig) throws ServletException {	}	/**	 * 配置了拦截某些资源  这些资源都被进入doFilter方法	 * 该方法决定了资源是否能够通过过滤器。	 */	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)			throws IOException, ServletException {		//调用了该方法过滤器通过验证,不调用直接打回		Object attribute = request.getParameter("name");		System.out.println(attribute);		if(attribute!=null && attribute.equals("1")){			chain.doFilter(request, response);			return;		}		request.getRequestDispatcher("/index.jsp").forward(request, response);	}	/**	 * 生命周期的消费方法	 */	public void destroy() {	}}
该拦截器拦截file目录下的文件
filterDemo
cn.et.FilterDemo
filterDemo
/file/*
在创建一个类,拦截imag下的文件
package cn.et;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;public class ImagFiter implements Filter{	public void init(FilterConfig filterConfig) throws ServletException {	}	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)			throws IOException, ServletException {		Object attribute = request.getParameter("id");		if(attribute!=null && attribute.equals("1")){			chain.doFilter(request, response);			return;		}		request.getRequestDispatcher("/index.jsp").forward(request, response);	}	public void destroy() {			}}
imagFiter
cn.et.ImagFiter
imagFiter
/file/imag/*
通配符
你可能感兴趣的文章
早知道这些免费 API,我就可以不用到处爬数据了!
查看>>
Java各种集合类的合并(数组、List、Set、Map)
查看>>
JS中各种数组遍历方式的性能对比
查看>>
Mysql复制表以及复制数据库
查看>>
进程管理(一)
查看>>
linux 内核—进程的地址空间(1)
查看>>
存储器管理(二)
查看>>
开局一张图,学一学项目管理神器Maven!
查看>>
Android中的Binder(二)
查看>>
Framework之View的工作原理(一)
查看>>
Web应用架构
查看>>
设计模式之策略模式
查看>>
深究Java中的RMI底层原理
查看>>
用idea创建一个maven web项目
查看>>
Kafka
查看>>
9.1 为我们的角色划分权限
查看>>
维吉尼亚之加解密及破解
查看>>
DES加解密
查看>>
TCP/IP协议三次握手与四次握手流程解析
查看>>
PHP 扩展开发 : 编写一个hello world !
查看>>