Filter
来源:互联网 发布:人体工学椅子 知乎 编辑:程序博客网 时间:2024/09/21 06:35
Filter
Filter 技术是servlet 2.3 新增加的功能。servlet2.3是sun公司于2000年10月发布的,它的开发者包括许多个人和公司团体,充分体现了sun公司所倡导的代码开放性原则。在众多参与者的共同努力下,servlet2.3比以往功能都强大了许多,而且性能也有了大幅提高。
作用
其中最重要的就是filter功能.它使用户可以改变一个request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在response离开servlet时处理response.换种说法,filter其实是一个“servlet chaining“(servlet 链).
包括
1. 在servlet被调用之前截获;
2. 在servlet被调用之前检查servlet request;
3. 根据需要修改request头和request数据;
4. 根据需要修改response头和response数据;
5. 在servlet被调用之后截获.
你能够配置一个filter 到一个或多个servlet;单个servlet或servlet组能够被多个filter 使用。几个实用的filter 包括:用户辨认filter,日志filter,审核filter,加密filter,符号filter,能改变xml内容的XSLT filter等。
API
javax.servlet Interface Filtervoid destroy() void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) void init(FilterConfig filterConfig)
第一个filter
package cn.lemon.filter;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;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.annotation.WebFilter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;MyFilter.javapublic class MyFilter implements Filter { public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub // place your code here HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; //获取访问者的ip String ip = req.getRemoteAddr(); //获取访问的资源url String url= req.getRequestURI().toString(); //获取访问时间 SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = new Date(); String date =df.format(d); //df.parse(string) //输出到控制台 System.out.print(date+"\n"+ip+"\n"+url); // pass the request along the filter chain chain.doFilter(request, response); } public void init(FilterConfig fConfig) throws ServletException { //Filter一定会随着tomcat的启动自启动。 }}
web.xml 配置
<filter> <filter-name>MyFilter</filter-name> <filter-class>cn.lemon.filter.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
filter设置servlet编码
public class EncodingFilter implements Filter {
@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; request.setCharacterEncoding("UTF-8"); chain.doFilter(request, response);}@Overridepublic void init(FilterConfig arg0) throws ServletException {}
}
–
filter登陆验证
public class AuthFilter implements Filter {
@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; String userName = (String) request.getSession().getAttribute("userName"); if (userName == null){ response.sendRedirect("login.html"); return; } chain.doFilter(request, response);}@Overridepublic void init(FilterConfig arg0) throws ServletException {}
}
- Filter
- Filter
- Filter
- filter
- filter
- Filter
- filter
- Filter
- filter
- filter
- Filter
- Filter
- Filter
- Filter
- filter
- Filter
- Filter
- filter
- 高通android 7.0彩信发送过程中使用到的google pdu
- LUA库与工具
- C语言 函数返回数组和指针区别
- 详解http----工作原理
- 第三周项目一 顺序表的基本运算
- Filter
- 新建mavenWeb 没有src/main/java包
- Webpack 常用命令总结
- 在 Linux 上给用户赋予指定目录的读写权限
- 解决CSDN博客 类别管理/文章分类 批量移动管理问题
- 使用GP处理制图中出现的路水关系冲突(当现状道路与水系发生压盖时,图面上要做一定距离的偏移)
- stm32入门之路
- 计算机组成原理概述
- 教你如何轻松玩转自媒体淘客,赚大钱!