1.filter的作用
  • 在HttpServletRequest请求到达Servlet之前,拦截客户的HttpServletRequest
  • 根据需要检查HttpServletRequest的相关信息,修改头信息和数据
  • 在HttpServletResponse到达客户端之前可以进行拦截
  • 在HttpServletResponse到达客户端之前可以进行检查,也可以修改头信息和数据
2.实现方式
  • 定义一个类,继承自javax.servlet.Filter类
  • 实现javax.servlet.Filter的init(),destroy(),doFilter()方法
  • 配置filter在web.xml或者filter的代码中
3.具体实现
package com.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class LogFilter  implements Filter  {

    private FilterConfig config;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.config=filterConfig;
} @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)+")");
} } @Override
public void destroy() {
config=null;
}
}

4.在web.xml中的配置方法
<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>
说明:filter.doFilter调用是用来区分拦截的前后的
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. css重置reset.css

    body, h1, h2, h3, h4, h5, h6, hr, p, blockquote,dl, dt, dd, ul, ol, li,pre,form, fieldset, legend, b ...

  2. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本新增序列管理

    欲了解V3.0版本的相关内容可查看下面的链接地址. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本发布 在V3.0版本的Web(Mvc.WebForm)与WinF ...

  3. 添加右键菜单命令 在此处打开命令窗口(E)(带图标)

    @color 0A @title 添加右键菜单命令 在此处打开命令窗口(^&E)(带图标) by wjshan0808 @echo off reg add HKCR\Directory\Bac ...

  4. poj 3190 Stall Reservations

    http://poj.org/problem?id=3190 Stall Reservations Time Limit: 1000MS   Memory Limit: 65536K Total Su ...

  5. poj 1835 宇航员

    http://poj.org/problem?id=1835 宇航员 Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 4802 ...

  6. Python爬虫爬取百度贴吧的图片

    根据输入的贴吧地址,爬取想要该贴吧的图片,保存到本地文件夹,仅供参考: #!/usr/bin/python#_*_coding:utf-8_*_import urllibimport urllib2i ...

  7. C++之路进阶——codevs3566(紧急疏散)

    3566 紧急疏散  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold     题目描述 Description 发生了火警,所有人员需要紧急疏散!假设每个房间是一 ...

  8. Java Thread wait, notify and notifyAll Example

    Java Thread wait, notify and notifyAll Example Java线程中的使用的wait,notify和nitifyAll方法示例. The Object clas ...

  9. web 安全的前期准备哦

    学习web安全  需要的软件  和 基础 基础会在以后发出来  软件  在网上都可以下 首先   你要有一款虚拟机软件 虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全一样 ...

  10. Java多线程开发系列之四:玩转多线程(线程的控制1)

    在前文中我们已经学习了:线程的基本情况.如何创建多线程.线程的生命周期.利用已有知识我们已经可以写出如何利用多线程处理大量任务这样简单的程序.但是当应用场景复杂时,我们还需要从管理控制入手,更好的操纵 ...