zoukankan      html  css  js  c++  java
  • Filter拦截用户请求

    下面这个Filter负责拦截所有用户的用户请求:

    1.创建Filter必须实现javax.servlet.Fileter接口。

    2.

     1 // FilterConfig可用于访问Filter的配置信息
     2     private FilterConfig config;
     3     // 实现初始化方法
     4     public void init(FilterConfig config)
     5     {
     6         this.config = config;
     7     }
     8     // 实现销毁方法
     9     public void destroy()
    10     {
    11         this.config = null;
    12     }

    destory方法用于在Filter销毁前,完成某些资源的回收。

    3.

    1 // 获取ServletContext对象,用于记录日志
    2         ServletContext context = this.config.getServletContext();
    3         long before = System.currentTimeMillis();
    4         System.out.println("开始过滤...");
    5         // 将请求转换成HttpServletRequest请求
    6         HttpServletRequest hrequest = (HttpServletRequest)request;
    7         // 输出提示信息
    8         System.out.println("Filter已经截获到用户的请求的地址: " +
    9             hrequest.getServletPath());

    上面这一段代码是对用户请求进行预处理。

    (1)currentTimeMillis方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。而且可以用这个值来构造一个Date对象。

    4.

    // Filter只是链式处理,请求依然放行到目的地址
            chain.doFilter(request, response);

    实现该方法前对用户请求进行预处理,实现后对服务器响应进行后处理。

    5.

    long after = System.currentTimeMillis();
            // 输出提示信息
            System.out.println("过滤结束");
            // 输出提示信息
            System.out.println("请求被定位到" + hrequest.getRequestURI() +
                "   所花的时间为: " + (after - before));

    对服务器响应执行后处理。

  • 相关阅读:
    内核模式之事件
    用户模式之临界区
    _stdcall与_cdecl区别
    列出系统所有进程
    一道多线程的题
    进程间通信三:父进程传参数与子进程返回值
    进程间通信二:管道技术之命名管道
    进程间通信二:管道技术之匿名管道
    进程间通信二:管道技术之输入输出重定向
    补充实验1:dhcp服务器分配网关-路由器的静态路由优先级
  • 原文地址:https://www.cnblogs.com/MapleDream/p/8644229.html
Copyright © 2011-2022 走看看