Servlet过滤器
2016-04-24 15:28
393 查看
Filter可以改变一个request和修改一个response。Filter不是一个Servlet,它不能产生一个response,它能够在一个request到达Servlet之前预处理request,也可以在离开Servlet时处理response。
一个Filter必须实现javax.servlet.Filter接口并定义三个方法:
· public void init(FilterConfig config):Filter实例化后进行初始化的回调方法。
· public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain):处理过滤业务的方法。
· public void destory():Filter在释放时回调的方法。
web.xml注册这个Filter实现类,并配置初始化参数
一个Filter必须实现javax.servlet.Filter接口并定义三个方法:
· public void init(FilterConfig config):Filter实例化后进行初始化的回调方法。
· public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain):处理过滤业务的方法。
· public void destory():Filter在释放时回调的方法。
package com.yyq.filter; import javax.servlet.*; import java.io.IOException; /** * Created by gao on 16-4-14. */ public class CharacterEncodingFilter implements Filter { private FilterConfig filterConfig; //Filter初始化时的回调方法 //FilterConfig接口实例中封装了这个Filter的初始化参数 @Override public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; } //主要负责过滤工作 //FilterChain用于调用过滤器链中的下一个顾虑器 @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //获取此Filter的初始化参数的值 String encoding = filterConfig.getInitParameter("encoding"); if (null != encoding && !"".equals(encoding)){ //设置请求数据的编码方式 servletRequest.setCharacterEncoding(encoding); } //把请求和响应对象传给过滤器链中的下一个要调用的过滤器或Servlet filterChain.doFilter(servletRequest,servletResponse); } //此Filter被释放时的回调方法 @Override public void destroy() { //空 } }
web.xml注册这个Filter实现类,并配置初始化参数
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <!--定义一个过滤器--> <filter> <!--过滤器的标识名--> <filter-name>characterEncodingFilter</filter-name> <!--过滤器实现类的全限定名--> <filter-class>com.yyq.filter.CharacterEncodingFilter</filter-class> <!--配置初始化参数--> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <!--过滤器的映射配置--> <filter-mapping> <!--过滤器的标识名--> <filter-name>characterEncodingFilter</filter-name> <!--过滤器的URL匹配模式--> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
相关文章推荐
- 88、android 插件开发教程(转载)
- STM32 printf函数打印到串口(刘凯)
- 一点PCA与LDA的理解
- ZOJ 5716 查找照片中人的个数 枚举
- [模版] 带部分重构的KD_Tree
- 原理分析之二:框架整体设计
- 会话跟踪
- [Algorithm & NLP] 文本深度表示模型——word2vec&doc2vec词向量模型
- tar.gz 和 tar.bz2 详细解释
- Codeforces #591 D Chip 'n Dale Rescue Rangers(二分查找/转换参考系)
- Failure to transfer org.apache.maven.plugins:maven-war-plugin:pom:2.2 from https://repo.maven.apache
- Shiro学习之身份验证
- ubuntu下的Samba配置:使每个用户可以用自己的用户名和密码登录自己的home目录
- 工具类问题集合
- CentOS 7最小安装之后应该尽快做好的几件事情
- Python实现的KNN分类器
- A strange lift宽度搜索优先队列
- Linux是一个多用户多任务的操作系统
- Node.js入门实例程序
- bzoj3262: 陌上花开