Servlet过滤器-日志记录

一,什么是servlet过滤器?java

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

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

二,sevlet过滤器的做用webapp

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

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

        2,根据须要检查HttpServletRequest,也能够修改HttpServletRequest头和数据。post

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

        4,根据须要检查HttpServletResponse,也能够修改HttpServletResponse头和数据。加密

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

三,使用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

最后的实验结果以下:

相关文章
相关标签/搜索