zoukankan      html  css  js  c++  java
  • Servlet过滤器-日志记录

    一,什么是servlet过滤器?

    过滤器是在数据交互之间过滤数据的中间组件,独立于任何平台或者 Servlet 容器。

    Servlet过滤器可以应用在客户机和 servlet 之间、servlet 和 servlet 或 JSP 页面之间,以及所包括的每个 JSP 页面之间。

    二,sevlet过滤器的作用

    servlet过滤器用于根性进入servlet的请求和走出servlet的相应中的有效负载和头信息。过滤器不产生响应,他们只修改或适配请求和响应。servlet过滤器即filter可以认为是servlet的一种加强版,它主要用于对用户亲求进行预处理。

    filter的主要用处:1,在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest。

            2,根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据。

            3,在HttpServletRequest到达客户端之前,拦截HttpServletResponse。

            4,根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。

    filter的典型用例:身份验证,日志记录,数据压缩和加密

    三,使用filter写日志

    创建Filter必须实现javax.servlet.Filter接口,接口的的三个方法如下:

    init(FilterConfig config):这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取web.xml文件中Servlet过滤器的初始化参数。
    destroy():Servlet容器在销毁过滤器实例前调用该方法,这个方法中可以释放Servlet过滤器占用的资源。
    doFilter(ServletRequest req, ServletResponse resp, FilterChain chain):这个方法完成实际的过滤操作,当客户请求访问于过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain参数用于访问后续过滤器。

    我们可以使用注解(@WebFilter)的方式来定义一个filter,在urlPattens中指定你想要拦截的url地址,在这次实验中我拦截的是全部的用户请求地址(/*),filter的配置方式与servlet的配置方式擦汗不多,现在开始实际操作一下吧!

    我使用的是gradle官网的构建webapplication的例子,用户首先访问到的是index.jsp,在界面中,设置了一个提交按钮,通过post方法提交表单,并且交给servlet处理,再通过forward函数设置处理的文件为response.jsp

    以下是一些实验文件及结果:

    HelloServlet.java

     LogFilter.java

     

    index.jsp

    response.jsp

    最后的实验结果如下:

  • 相关阅读:
    std thread
    windows更新包发布地址
    How to set up logging level for Spark application in IntelliJ IDEA?
    spark 错误 How to set heap size in spark within the Eclipse environment?
    hadoop 常用命令
    windows 安装hadoop 3.2.1
    windows JAVA_HOME 路径有空格,执行软连接
    day01MyBatisPlus条件构造器(04)
    day01MyBatisPlus的CRUD 接口(03)
    day01MyBatisPlus入门(02)
  • 原文地址:https://www.cnblogs.com/sunny-daylk/p/8647224.html
Copyright © 2011-2022 走看看