JSP Filter用法
- 在HttpServletRequest请求到达Servlet之前,拦截客户的HttpServletRequest
 - 根据需要检查HttpServletRequest的相关信息,修改头信息和数据
 - 在HttpServletResponse到达客户端之前可以进行拦截
 - 在HttpServletResponse到达客户端之前可以进行检查,也可以修改头信息和数据
 
- 定义一个类,继承自javax.servlet.Filter类
 - 实现javax.servlet.Filter的init(),destroy(),doFilter()方法
 - 配置filter在web.xml或者filter的代码中
 
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用法的更多相关文章
- python3 filter用法(举例求0~n之间的素数)
		
在用python3求0~n之间的素数时,关于filter用法的有点模糊,于是上网查了一下filter用法. 求0~n之间素数的脚本prime.py: def f(x): plist = [0,0] + ...
 - JSP Filter,GZIP压缩响应流
		
url:http://hi.baidu.com/xhftx/blog/item/fbc11d3012648711ebc4af59.html 关键词:JSP,Filter,Servlet,GZIP 现在 ...
 - Ext.Net学习笔记12:Ext.Net GridPanel Filter用法
		
Ext.Net学习笔记12:Ext.Net GridPanel Filter用法 Ext.Net GridPanel的用法在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法. Filter是用来过 ...
 - Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法
		
Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法 2018/11/06 Chenxin 资料说明 Django基础入 ...
 - 转:AngularJS的Filter用法详解
		
Filter简介 Filter是用来格式化数据用的. Filter的基本原型( '|' 类似于Linux中的管道模式): {{ expression | filter }} Filter可以被链式使用 ...
 - Servlet过滤器Filter用法
		
1 Servlet 过滤器方法 过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法:public void ...
 - AngularJS的Filter用法详解
		
上一篇讲了自定义Directive,本篇是要讲到AngularJS的Filter. Filter简介 Filter是用来格式化数据用的. Filter的基本原型( '|' 类似于Linux中的管道模式 ...
 - jsp filter登录限制过滤器
		
http://www.cnblogs.com/hemingwang0902/archive/2012/01/09/2316956.html UserFilter.java package filter ...
 - Python中自定义filter用法
		
django中新建项目,在项目中新建app,自定义filter一般放到app中.结构目录如下: 1.先在APP中新建一个templatetags的django文件夹,文件夹中新建一个filter的py ...
 
随机推荐
- LintCode Longest Common Subsequence
			
原题链接在这里:http://www.lintcode.com/en/problem/longest-common-subsequence/ 题目: Given two strings, find t ...
 - Python开发【杂货铺】:模块logging
			
logging模块 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式 ...
 - Linux下更改目录及其下的子目录和文件的访问权限
			
想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理. 例如: [root@localhost ~]# chmod 777 /home/user 注:仅把 ...
 - (转)小心FPGA的JTAG口(上电和下电顺序)
			
同志们,根据ALTERA官方FAE(现场应用工程师)的强烈建议,请注意不要随意带电插拔你的JTAG下载接口,否则会损坏FPGA芯片的JTAG口信号管脚.现象:在排除了下载线的问题后,还是不能访问FPG ...
 - LL基本姿势
			
在说怎么练习之前,先说说LL这个游戏里面的一些基本概念: 谱面元素(element) 谱面由一个个的音符组成,在LL中,音符(Note)分以下三类: 单点(下简称S,Single),同一时刻只有一个圆 ...
 - C# 提供两种切割圆形图片的方式
			
效果: private void Form1_Load(object sender, EventArgs e) { string file =System.IO.Path.Combine(Enviro ...
 - Android下OpenCV的环境搭建
			
目录(?)[-] 前言 系统环境 相关工具 Android ADT环境搭建 Android SDK环境变量的配置 Android NDK的安装与配置 OpenCV for Android 环境搭建 基 ...
 - HTML5元素、属性和格式化
 - jQuery 菜单
 - sqlserver中DATE类型的数据转化 CONVERT
			
主要描述的是SQL Server使用convert取得datetime日期数据的实际操作流程,在实际操作中用SQL Server数据库中用convert来获取datetime日期数据,以下实例包含各种 ...