JavaWeb__Filter过滤器
Filter过滤器简介
Filter被称作过滤器或者拦截器,其基本功能就是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行响应处理前后实现一些特殊功能。
当浏览器访问服务器中的目标资源时,会被Filter拦截,在Filter中进行预处理操作,然后再将请求转发给目标资源。当服务器接收到这个请求后会对其进行响应,在服务器处理响应的过程中,也需要先将响应结果发送给拦截器,在拦截器中对响应结果进行处理后,才会发送给客户端。
在一个Web应用程序中可以注册多个Filter程序,每个Filter程序都可以针对某一个URL进行拦截。如果多个Filter程序都对同一个URL进行拦截,那么这些Filter就会组成一个Filter链(也叫过滤器链)。
FilterConfig接口
为了获取Filter程序在web.xml文件中的配置信息,Servlet API提供了一个FilterConfig接口,该接口封装了Filter程序在web.xml中的所有注册信息,并且提供了一系列获取这些配置信息的方法。
注意点
- 设置注解
@WebFilter(filterName = "",urlPatterns = "")
filterName:Filter的名字
urlPatterns:Filter拦截的对象 - 放行
使用chain.doFilter(request, response);
放行执行Servlet,但是完成Servlet操作后,还会执行doFilter后面的代码
package FilterTest; import javax.servlet.*; import javax.servlet.annotation.*; import java.io.IOException; import java.io.PrintWriter; import java.util.PrimitiveIterator; @WebFilter(filterName = "MyFilter1",urlPatterns = "/*") public class MyFilter1 implements Filter { public void init(FilterConfig config) throws ServletException { } public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { PrintWriter out=response.getWriter(); out.write("sd151"); // chain.doFilter(request, response); } }
应用
-
统一全站的编码方式。
在Web开发中,经常会遇到中文乱码问题,现在,我们可以在Filter中对获取到的请求和响应消息进行编码,从而实现。 -
使用Filter实现动态页面静态化。
在实际开发中,有时为了提高程序性能、减轻数据库访问压力以及搜索引擎的优化
当客户端首次访问页面时,Filter会自定义response输出缓存HTML源码。当客户端第二次访问页面时,就会直接访问静态页面,这样避免访问数据库。
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/16334868.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步