1.filter的作用
  • 在HttpServletRequest请求到达Servlet之前,拦截客户的HttpServletRequest
  • 根据需要检查HttpServletRequest的相关信息,修改头信息和数据
  • 在HttpServletResponse到达客户端之前可以进行拦截
  • 在HttpServletResponse到达客户端之前可以进行检查,也可以修改头信息和数据
2.实现方式
  • 定义一个类,继承自javax.servlet.Filter类
  • 实现javax.servlet.Filter的init(),destroy(),doFilter()方法
  • 配置filter在web.xml或者filter的代码中
3.具体实现
  1. package com.filter;
    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
  1. public class LogFilter implements Filter {
  2.  
  3. private FilterConfig config;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    this.config=filterConfig;
    }
  4.  
  5. @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    ServletContext context=config.getServletContext();
    long time= System.currentTimeMillis();
    System.out.println("过滤开始");
    System.out.println(time);
    HttpServletRequest request=(HttpServletRequest)servletRequest;
    HttpSession session=request.getSession(true);
    String loginpage=config.getInitParameter("loginpage");
    if(session.getAttribute("username")==null&&!request.getContextPath().endsWith(loginpage)){
    servletRequest.getRequestDispatcher(loginpage).forward(servletRequest,servletResponse);
    }else{
    System.out.println(request.getContextPath());
    filterChain.doFilter(servletRequest,servletResponse);
    long atime= System.currentTimeMillis();
    System.out.println(time);
    System.out.println("过滤结束");
    System.out.println("请求被处理时间是:"+request.getContextPath()+"("+(atime-time)+")");
    }
  6.  
  7. }
  8.  
  9. @Override
    public void destroy() {
    config=null;
    }
    }
  1.  
  1. 4.web.xml中的配置方法
  1. <filter>
    <filter-name>logs</filter-name>
    <filter-class>com.filter.LogFilter</filter-class>
    <init-param>
    <param-name>loginpage</param-name>
    <param-value>/login.jsp</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>logs</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
  1. 说明:filter.doFilter调用是用来区分拦截的前后的
  1. doFilter的使用可以进行权限的验证,日志的记录等方法

JSP Filter用法的更多相关文章

  1. python3 filter用法(举例求0~n之间的素数)

    在用python3求0~n之间的素数时,关于filter用法的有点模糊,于是上网查了一下filter用法. 求0~n之间素数的脚本prime.py: def f(x): plist = [0,0] + ...

  2. JSP Filter,GZIP压缩响应流

    url:http://hi.baidu.com/xhftx/blog/item/fbc11d3012648711ebc4af59.html 关键词:JSP,Filter,Servlet,GZIP 现在 ...

  3. Ext.Net学习笔记12:Ext.Net GridPanel Filter用法

    Ext.Net学习笔记12:Ext.Net GridPanel Filter用法 Ext.Net GridPanel的用法在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法. Filter是用来过 ...

  4. Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法

    Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法 2018/11/06 Chenxin 资料说明 Django基础入 ...

  5. 转:AngularJS的Filter用法详解

    Filter简介 Filter是用来格式化数据用的. Filter的基本原型( '|' 类似于Linux中的管道模式): {{ expression | filter }} Filter可以被链式使用 ...

  6. Servlet过滤器Filter用法

    1 Servlet 过滤器方法 过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法:public void ...

  7. AngularJS的Filter用法详解

    上一篇讲了自定义Directive,本篇是要讲到AngularJS的Filter. Filter简介 Filter是用来格式化数据用的. Filter的基本原型( '|' 类似于Linux中的管道模式 ...

  8. jsp filter登录限制过滤器

    http://www.cnblogs.com/hemingwang0902/archive/2012/01/09/2316956.html UserFilter.java package filter ...

  9. Python中自定义filter用法

    django中新建项目,在项目中新建app,自定义filter一般放到app中.结构目录如下: 1.先在APP中新建一个templatetags的django文件夹,文件夹中新建一个filter的py ...

随机推荐

  1. CSS4

    1.处理溢出(overflow) overflow的取值可以是visible.hidden,scroll,auto,其中visible是默认值.visible表示不裁剪内容,也不添加滚动条,强制显示元 ...

  2. Javascript ES6

    ES6: EMACScript 6 http://javascript.ruanyifeng.com/advanced/ecmascript6.html http://es6.ruanyifeng.c ...

  3. 编译错误:/usr/bin/ld: cannot find -lz

    编译时出现错误/usr/bin/ld: cannot find -lz,安装zlib和zlib-devel yum install zlib yum install zlib-devel

  4. ubuntu16.04部署RED5流媒体服务器

    前提:jdk已经安装 1,下载RED5(https://github.com/Red5/red5-server/releases)选择red5-server-X.X.X-MXX.tar.gz 2,解压 ...

  5. Y-TDC 的一些函数

    typedef void (*func_ptr)(void); func_ptr usm_rom_set_tx2_drive_strength_hs; 定义一个函数指针类型.比如你有三个函数:void ...

  6. python web前端

    概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏览器 ...

  7. Html5特性及简介

  8. rdesktop的使用方法

    工作时一般是开两台电脑 ,一台linux,一台windows,以前也用过虚拟机什么的,但是 有时候 跑起来拖泥带水的十分不爽,所以慢慢的就习惯了两台电脑的工作方式,一般我大部时间都在linux下面.用 ...

  9. 论文阅读(Lukas Neuman——【ICDAR2015】Efficient Scene Text Localization and Recognition with Local Character Refinement)

    Lukas Neuman--[ICDAR2015]Efficient Scene Text Localization and Recognition with Local Character Refi ...

  10. 学习js回调函数

    <!DOCTYPE HTML> <html> <head> <meta charset="GBK" /> <title> ...