Filter过滤器拦截方式
Filter过滤器有五种拦截方式,用注解配置dispatcherTypes属性
REQUEST:默认值,浏览器直接请求的资源会被过滤器拦截
FORWARD:转发访问资源会被过滤器拦截
INCLUDE:包含访问资源
ERROR:错误跳转资源
ASYNC:异步访问资源
如果是web.xml配置,就是配置其<dispatcher></dispatcher>标签
这里用注解着重讲解REQUEST和FORWARD,也是常用的两个,这里我们通过一个Filter类和一个Servlet类进行演示,Filter类控制拦截方式,Servlet控制访问方式,也就是请求转发
package com.zhiying.filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter(urlPatterns = "/index.jsp", dispatcherTypes = DispatcherType.REQUEST)
public class FilterDemo5 implements Filter {public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("执行了过滤器");chain.doFilter(request,response);}
}
package com.zhiying.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("/user/a1")
public class ServletDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("servlet1...");req.getRequestDispatcher("/index.jsp").forward(req,resp); //请求转发的形式访问index.jsp}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
可以看出,直接访问index.jsp是通过了过滤器
从下图可以看出如果我们是通过请求转发的形式访问index.jsp,就不经过过滤器
当然了,我们还可以演示如果是FORWARD:转发访问资源会被过滤器拦截,修改Filter类如下
package com.zhiying.filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter(urlPatterns = "/index.jsp", dispatcherTypes = DispatcherType.FORWARD)
// @WebFilter(urlPatterns = "/index.jsp", dispatcherTypes = DispatcherType.REQUEST)
public class FilterDemo5 implements Filter {public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("执行了过滤器");chain.doFilter(request,response);}
}
下面可以看出,直接访问是没有经过过滤器的
下面可以看出,通过请求转发经过了过滤器
下面看一下二者的结合体,就是在注解上配置,既可以通过直接访问,也可以通过转发访问,修改Filter类即可
package com.zhiying.filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter(urlPatterns = "/index.jsp", dispatcherTypes = {DispatcherType.FORWARD,DispatcherType.FORWARD})
// @WebFilter(urlPatterns = "/index.jsp", dispatcherTypes = DispatcherType.FORWARD)
// @WebFilter(urlPatterns = "/index.jsp", dispatcherTypes = DispatcherType.REQUEST)
public class FilterDemo5 implements Filter {public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("执行了过滤器");chain.doFilter(request,response);}
}
Filter过滤器拦截方式相关推荐
- Filter_细节_过滤器拦截方式配置
* 拦截方式配置:资源被访问的方式 * 注解配置: * 设置dispatcherTypes属性 1. REQUEST:默认值.浏览器直接请求资源 ...
- (29) JavaWeb中使用filter过滤器拦截请求、权限检查,过滤响应。
Filter 过滤器 一.Filter 什么是过滤器 二.Filter 过滤器的使用步骤: 三.Filter 的生命周期 四.FilterConfig 类 五.FilterChain 过滤器链 六.F ...
- Filter过滤器拦截路径配置
在Filter中拦截路径配置有四种形式 具体资源路径拦截:@WebFilter("/index.jsp") //这是指访问index.jsp的时候会经过过滤器 具体目录拦截:@We ...
- Filter过滤器注解方式过滤的优先级
对于一个web工程的filter过滤器,一般有两种方式放入项目中 1.在web.xml里面配置 2.注解 对于第一种,在web.xml里面配置,对于filter的优先级,就很简单,按照配置的顺序来,先 ...
- Filter 过滤器拦截路径配置
具体资源拦截: /index.jsp 只有访问/index.jsp资源时, 过滤器才会被执行 @WebFilter("/index.jsp") public class Filte ...
- Filter过滤器讲解
Filter过滤器 一.Filter什么是过滤器 Filter过滤器它是JavaWeb的三大组件之一,三大组件分别是:Servlet程序.Listener监听器.Filter过滤器 Filter过滤器 ...
- Filter过滤器的例子与注解配置
概念 作用 创建 创建web项目 定义类实现Servlet接口,实现其抽象方法 配置Filter 原理 注解配置 过滤器放行 Filter的生命周期 Filter的拦截路径 Filter的拦截方式 F ...
- 【全面详解】Filter过滤器的使用
一.什么是过滤器 Filter称之为过滤器,是SerlvetAPI提供的一个Filter接口,A类实现了这个接口,那么A类称之为过滤器Filter.主要用户的请求(HttpServletRequest ...
- java过滤器的执行顺序_Java Filter过滤器(拦截路径的配置+拦截方式的配置+生命周期+多个过滤器的先后执行顺序)...
Java Filter过滤器+Listen监听器 啥是过滤器 顾名思义即过滤掉一些东西,比如我们经历的高考中考都是过滤器,他过滤掉一些在学习这一方面不是很好的人,而那些成绩好的人则升入高中,大学. 但 ...
最新文章
- 关于自动化网络监控的真相
- C++知识点58——类模板(3、类模板的成员模板)
- 【小米校招笔试】给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次
- AJAX与SQL Server(一)
- 欧姆龙cp1hum读保护解密步骤_欧姆龙PLC的NJ系列NJ产品功能介绍
- spring学习(11):使用配置类
- Mendix:云原生应用是软件的未来
- 为什么阿里巴巴要求 POJO 中不能使用基本数据类型?
- 学python要多久-python入门要学多久
- 【渝粤教育】电大中专金融与税收_1作业 题库
- 基于Tesseract的OCR识别--身份证
- 搜索引擎自动提交连接php文件,死链检测工具(自动提交给百度,逆天了)
- java100道逻辑题及答案_100道Java面试题收集整理及参考答案
- VMware虚拟机扩展硬盘内存
- 8.21: Hackday、慈善x快速迭代
- 天才作文-不知道有没有人发过 很有才
- Java播放语音包 亲测
- 解决报错:The Module Root specified is not a module according to Intellij
- php仿阿里巴巴,php实现的仿阿里巴巴实现同类产品翻页
- 小程序容器技术加持下,企业自主打造小程序生态
热门文章
- 【转】Unix系统的心脏-Unix文件系统
- Intellij IDEA IDE 运行Sphinx-4 DEMO helloworld出现空...
- Kafka 详解(二)------集群搭建
- Mac系统使用VS Code编译Bootstrap 4
- Building an FTP Test Plan
- 【推荐】SQL Server 2008 R2 中英文 开发版/企业版/标准版 下载
- [hbase]Hbase 在HDFS上的目录树结构
- MySQL之增删改查(以查为主)
- Spring MVC JSON数据交互(附带实例)
- c语言知5个学生的4门成绩,用C 语言数组解题 :已知5个学生的4门课的成绩,要求求出全部学生的门成绩并分别求出每门课的平均成绩...