javaWeb过滤器——Filter
一、定义
应用场景
自动登录
统一设置编码格式
访问权限控制
敏感字符过滤等
二、创建Filter
1、配置web.xml
<filter><filter-name>first</filter-name><filter-class>net.pp.Filter.FirstFilter</filter-class><init-param><param-name>param</param-name><param-value>value</param-value></init-param></filter><filter-mapping><filter-name>first</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher></filter-mapping>
2、实现Filter接口
FirstFilter.java
package net.pp.Filter;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;public class FirstFilter implements Filter{@Overridepublic void init(FilterConfig filterConfig) throws ServletException {String filterName = filterConfig.getFilterName();String initParameter = filterConfig.getInitParameter("param");ServletContext servletContext = filterConfig.getServletContext();System.out.println(filterName+"--"+initParameter);}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("FirstFilter已经执行拦截!");//解除拦截filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {}
}
3、在Servlet中测试
TestFilter
package net.pp.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet(name = "TestServlet" ,urlPatterns = "/testFilter")
public class TestServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("test/html;charset=utf-8");response.getWriter().write("testFilter已经被访问了!");}
}
结果:
三、配置Filter
1)url-Pattern配置
配置要拦截的资源
- 以指定资源匹配。例如
"/index.jsp"
- 以目录匹配。例如
"/servlet/*"
- 以后缀名匹配,例如
"*.jsp"
- 通配符,拦截所有web资源。
"/*"
<filter-mapping><filter-name>first</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher></filter-mapping>
2)dispatcherTypes **
配置拦截的类型,可配置多个。
FORWARD,//转发的INCLUDE,//包含在页面的REQUEST,//请求的ASYNC,//异步的ERROR;//出错的
3)注解方式配置
package filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import java.io.IOException;@WebFilter(filterName = "CharsetFilter",urlPatterns = "/*",/*通配符(*)表示对所有的web资源进行拦截*/initParams = {@WebInitParam(name = "charset", value = "utf-8")/*这里可以放一些初始化的参数*/})
public class CharsetFilter implements Filter {private String filterName;private String charset;public void destroy() {/*销毁时调用*/System.out.println(filterName + "销毁");}public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {/*过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理*/System.out.println(filterName + "doFilter()");req.setCharacterEncoding(charset);resp.setCharacterEncoding(charset);chain.doFilter(req, resp);}public void init(FilterConfig config) throws ServletException {/*初始化方法 接收一个FilterConfig类型的参数 该参数是对Filter的一些配置*/filterName = config.getFilterName();charset = config.getInitParameter("charset");System.out.println("过滤器名称:" + filterName);System.out.println("字符集编码:" + charset);}}
多个Filter的执行顺序
在我们的请求到达Servle之间是可以经过多个Filter的,一般来说,建议Filter之间不要有关联,各自处理各自的逻辑即可。
如果一定要确保执行顺序,就要对配置进行修改了,执行顺序如下
在web.xml中,filter执行顺序跟<filter-mapping>的顺序有关,先声明的先执行
使用注解配置的话,filter的执行顺序跟名称的字母顺序有关,例如AFilter会比BFilter先执行
如果既有在web.xml中声明的Filter,也有通过注解配置的Filter,那么会优先执行web.xml中配置的Filter
javaWeb过滤器——Filter相关推荐
- JavaWeb过滤器(Filter)详解,是时候该把过滤器彻底搞懂了(万字说明)
注意:这篇文章很长,学习完后将会解决你对于过滤器(Filter)的所有疑惑,下面将通过理论和代码的结合来进行讲解演示..... 目录 基本介绍 过滤器原理 过滤器(Filter)接口 ...
- JavaWeb中监听器Listener+过滤器filter+拦截器interceptor区别
JavaWeb中监听器Listener+过滤器filter+拦截器interceptor区别 如果从整个项目中看,一个servlet请求的执行过程就变成了这样context-param–>lis ...
- JavaWeb过滤器(Filter)
开发工具与关键技术:javaWeb,过滤器(Filter) 撰写时间:2019-05-26 总结下述所有表达 第一点:过滤器是什么 第二点:客户端到服务端的流程 第三点:过滤器如何编写 第四点:Fil ...
- Javaweb核心之servlet规范过滤器-----Filter
2 Servlet规范中的过滤器-Filter 2.1 过滤器入门 2.1.1 过滤器概念及作用 过滤器--Filter,它是JavaWeb三大组件之一.另外两个是Servlet和Listener. ...
- (JavaWeb)Filter过滤器
Filter过滤器 Filter:过滤器,用来过滤网站的数据. 自动登录 统一设置编码格式 访问权限控制 敏感字符过滤等 过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或serv ...
- ⑧javaWeb之在例子中学习(过滤器Filter)
前言 本系列 Servlet & JSP 学习系列[传送门]逐渐到了中期了,希望大家喜欢我写的,总结的点点滴滴- 今天我们来讲讲过滤器 你们的支持是我写博客的动力哦. 最近买了两本书,觉得大二 ...
- java脏字过滤_分享JavaWeb中filter过滤器的案例妙用 - 脏话过滤/编码过滤/代码过滤...
案例1. 利用Servlet的过滤器Filter进行完成脏话过滤 package cn.javabs.filter; import java.io.IOException; import javax. ...
- java脏话模糊对比_分享JavaWeb中filter过滤器的案例妙用 - 脏话过滤/编码过滤/代码过滤...
案例1. 利用Servlet的过滤器Filter进行完成脏话过滤 package cn.javabs.filter; import java.io.IOException; import javax. ...
- javaweb项目Filter过滤器详解
Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 ht ...
- JavaWEB过滤器和监听器技术
过滤器介绍 什么是过滤器 生活中的例子: 滤水器,口罩,杯子上滤网,渔网 生活中的过滤器:留下我们想要的,排除,我们不想要的. 高考: 只有分数够高的同学才能进入理想的大学.有一部分同学被拦截在大学之 ...
最新文章
- 约瑟夫环形链表问题、丢手帕问题、剑指offer圆圈中最后一个数问题
- Unity5x编辑器的视图二
- [YTU]_2633( P3 数钱是件愉快的事)
- vSphere开发指南1——vSphere Automation API
- C语言循环遍历文件夹查找文件内容(搜素/proc文件夹下的内容获取进程pid)
- BZOJ3743 : [Coci2014]Kamp
- 作者:鲍玉斌(1968-),男,博士,东北大学计算机科学系教授
- php 缩略图增加水印,PHP生成缩略图加图片水印代码
- django-如何让首页不要报错
- 百度智能云“云+AI”新战略年终答卷,PaddlePaddle累计开发者数量265万人
- linux 加密文件,如何运用OpenSSL 对文件进行加密和解密
- 如何优雅的使用iBatis
- [置顶] ios 360度旋转效果demo
- eclipse安装ADT插件
- 大量思科设备存在IPv6死亡之Ping漏洞
- QQ空间内容批量删除脚本
- 多台linux服务器ssh相互无密码访问
- Win32病毒入门 -- ring3篇
- 网络广播mms直播地址
- 【ArangoDB 介绍】