首页 > 其他分享 >812~813 Filter的web.xml配置方式、执行流程&声明周期

812~813 Filter的web.xml配置方式、执行流程&声明周期

时间:2023-02-20 10:25:00浏览次数:41  
标签:xml web ServletException void public Filter 过滤器 throws

3、过滤器细节:

  1、web.xml配置

    <filter>

      <filter-name>test1</filter-name>

      <filter-class>com.example.web.filter.FilterDemo1</filter-class>

    </filter>

    <filter-mapping>

      <filter-name>test1</filter-name>
      <!--拦截路径-->

      <url-pattern>/*</url-pattern>

     </filter-mapping>

  2、过滤器执行流程

    1. 执行过滤器

    2. 执行放行后的资源

    3. 回来执行过滤器放行代码下边的代码

  3、过滤器声明周期方法

    1. init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源

    2. doFilter:每一次请求被拦截资源时,会执行。执行多次

    3. destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源

  4、过滤器配置详解

  5、过滤器链(配置多个过滤器)

 

1.web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <filter>
        <filter-name>test1</filter-name>
        <filter-class>com.example.web.filter.FilterDemo1</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>test1</filter-name>
    <!--拦截路径--> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
实现
/**
* 过滤器快熟入门
*/
public class FilterDemo1 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { Filter.super.init(filterConfig); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("被执行了。。。"); //放行 filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { Filter.super.destroy(); } }

 

2.过滤器执行流程
@WebFilter("/*")
public class FilterDemo2 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 {
        System.out.println("FilterDemo2跑了...");
        //放行
        chain.doFilter(request, response);

        System.out.println("FilterDemo2又回来了");
    }
}
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>

index.jsp...
<%
    System.out.println("index.jsp...");
%>

</body>
</html>

 

3.过滤器声明周期方法
@WebFilter("/*")
public class FilterDemo3 implements Filter {
    /**
     * 在服务器启动后,创建Filter对象,然后用init方法,只执行一次
     * @param config
     * @throws ServletException
     */
    public void init(FilterConfig config) throws ServletException {
        System.out.println("init...");
    }

    /**
     * 在服务器关闭后,filter对象被销毁,如果服务器是正常关闭,则会执行destroy方法,只执行一次,用于释放资源
     */
    public void destroy() {
        System.out.println("destroy...");

    }

    /**
     * 每一次被请求拦截资源时,会执行多次
     * @param request
     * @param response
     * @param chain
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        System.out.println("doFilter...");
        //放行
        chain.doFilter(request, response);
    }
}

 

标签:xml,web,ServletException,void,public,Filter,过滤器,throws
From: https://www.cnblogs.com/agzq/p/17136426.html

相关文章

  • CSS背景过滤器-毛玻璃属性(backdrop-filter)
    例如做一个边框特效@keyframeshuerotate{0%{filter:hue-rotate(0deg);}100%{filter:hue-rorate(360deg);}}.border{border-bottom:1p......
  • 使用充血模型构建类时,Web API无法获取前端传过来的参数
    问题:构建充血模型Item类,在前端明明传入了Amount对象参数,后端却无法获取 以下是Item类中的Amount属性及构造函数1publicAmount?Amount{get;privateset;}2......
  • 【Spring AOP】【二】Spring AOP源码解析-XML方式加载解析过程
    1 前言这篇我们看一下,我们的AOP代码是怎么被Spring加载的进去的,那么分两种一种是XML配置的,一种就是我们常用的注解,我们从源码先看下XML方式的都是怎么被加载解析的。2......
  • VNCTF 2023-Web&Misc 部分题解
    WebBabyGo各个路由:r.GET("/",func(c*gin.Context){userDir:="/tmp/"+cryptor.Md5String(c.ClientIP()+"VNCTF2023GoGoGo~")+"/"ses......
  • Java Web(七)Request&Response
    Request&ResponseRequest:获取请求数据Response:设置响应数据一.Request对象1.Request继承体系Tomcat需要解析请求数据,封装为requestx对象并且创建requestx对象传递到servic......
  • 第一篇:Web框架推导
    纯手工撸web框架importsocketserver=socket.socket()server.bind(('127.0.0.1',8080))server.listen(5)whileTrue:conn,addr=server.accept()dat......
  • IDEA如何使用Maven不通过模板创建javaWeb项目
    IDEA如何使用Maven不通过模板创建javaWeb项目1.创建项目进入IDEA,点击“项目”>“新建项目”,填写项目信息,最后点击“创建”。点击“创建”后,自动进入新创建的项目。......
  • JavaWeb开发过程中小问题记录
    今天想复习一下开学考试的内容上手做的时候很顺利的连接了数据库写了封装建立了servlet写了第一个add界面但是在servlet中却出现了问题具体如下图  而下方我在......
  • LabVIEW|知识点:XML文件格式
      XML(eXtensibleMarkupLanguage)是一种目前广泛使用的数据传输和存储的格式,其本质上是一种文本文件,可以使用任何一个文本编辑工具打开和修改。类似于HTML,XML被设计为具......
  • Websocket 和 http 的区别
    1.含义不同websocket是一种在单个TCP连接上进行全双工通信的协议http:超文本传输协议,是一个简单的请求-响应协议,它通常运行在TCP上,是单向的通信协议2.连接方式......