当前位置:首页 > CN2资讯 > 正文内容

我的世界java版拷贝世界

6分钟前CN2资讯


Filter:过滤器

概念:当访问服务器的资源是,过滤器可以将请求拦截下来,完成一些特殊的功能

快速入门:

  • 步骤:
    • 定义一个类,实现接口Filter
    • 复写方法
    • 配置拦截路径
    package com.data.web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; @WebFilter("/*")//访问所有资源之前,都会执行该过滤器 public class FilterDemo1 implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("Filter被执行了");//当访问资源是,过滤器就会被执行 //放行 filterChain.doFilter(servletRequest,servletResponse);//放行之后才可以访问资源 } @Override public void destroy() { } } package com.data.web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; @WebFilter("/*")//访问所有资源之前,都会执行该过滤器 public class FilterDemo1 implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("Filter被执行了");//当访问资源是,过滤器就会被执行 //放行 filterChain.doFilter(servletRequest,servletResponse);//放行之后才可以访问资源 } @Override public void destroy() { } }
    过滤器的执行流程
    <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <% System.out.println("执行index.jsp....."); %> </body> </html>package com.data.web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; @WebFilter("/*") public class FilterDemo2 implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //放行前可以对请求数据增强 System.out.println("filterDemo2执行了...."); filterChain.doFilter(servletRequest,servletResponse); //放行后可以对响应的数据增强 System.out.println("filterDemo2回来了...."); } @Override public void destroy() { } } package com.data.web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; @WebFilter("/*") public class FilterDemo2 implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //放行前可以对请求数据增强 System.out.println("filterDemo2执行了...."); filterChain.doFilter(servletRequest,servletResponse); //放行后可以对响应的数据增强 System.out.println("filterDemo2回来了...."); } @Override public void destroy() { } }filterDemo2执行了.... 执行index.jsp..... filterDemo2回来了.... filterDemo2执行了.... 执行index.jsp..... filterDemo2回来了....
    过滤器的生命周期

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

    doFilter方法:每一次请求被拦截资源时,会执行,执行多次

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

    过滤器配置详解
    • 拦截路径配置

    具体资源路径:/index.jsp 只有访问index.jsp资源时,过滤器才会执行

    拦截目录:/user/* 访问/user下的所有资源时,过滤器都会被执行

    后缀名拦截: *.jsp 访问所有后缀名为jsp资源时,过滤器都会被执行

    拦截所有资源: /* 访问所有资源时,过滤器都会被执行

    • 拦截方式配置:

    注解配置:过滤器会根据设置dispatcherTypes属性的值来决定要不要执行

    REQUEST:默认值。浏览器直接请求资源

    FORWARD:只有是转发访问的资源,过滤器才会执行

    INCLUDE:包含访问资源

    ERROR:错误跳转资源

    ASYNC:异步访问资源

    web.xml配置:设置标签即可

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

    执行顺序:如果有两个过滤器:过滤器1和过滤器2

    1.过滤器1

    2.过滤器2

    3.资源执行

    4.过滤器2

    5.过滤器1

    过滤器先后顺序问题:

    1.注解配置:按照类名的字符串比较规则比较,值小的先执行

    2.web.xml配置:谁定义在上边,谁先执行


      你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/21394.html

      分享给朋友:

      “我的世界java版拷贝世界” 的相关文章

      虚拟主机选择指南:如何根据需求找到合适的虚拟主机

      虚拟主机是一种将一台物理服务器划分为多个独立主机的技术,允许每个虚拟主机像独立的实体一样运行。每个主机都有自己的域名和IP地址,这样用户就可以在网络上拥有相对独立的空间。使用虚拟主机的好处是显而易见的,用户可以享受完整的Internet服务器功能,如网页服务(WWW)、文件传输协议(FTP)、电子邮...

      全面了解扩容:定义、分类及最佳实践

      扩容的定义与重要性 扩容这个词听起来似乎很简单,但它其实蕴含了很多技术细节和实际应用。简单来说,扩容就是对已有系统或设备的能力进行增强,尤其是在存储或处理能力上。想象一下,当你的业务正在快速增长,客户数量激增,原本的系统可能会面临压力,这时扩容就显得尤为重要。通过扩容,我可以在需要的时候增加更多的存...

      如何使用NameSilo优惠码享受域名注册折扣

      在寻找域名注册服务时,NameSilo可能是你一个不错的选择。它以其友好的价格和高质量的服务以及多样化的优惠活动而受到用户青睐。尤其当我第一次尝试注册域名时,NameSilo给我的第一印象便是其简单易用的注册流程和丰厚的折扣方式。 使用NameSilo的最大的优势之一,就是能够享受到各种折扣码。许多...

      DMIT测试IP详解及VPS选择指南

      DMIT VPS服务概述 我对DMIT的了解始于他们在2017年的成立,作为一家海外VPS厂商,他们在市场上取得了显著的地位。DMIT提供的VPS服务覆盖多个地区,如中国香港、美国洛杉矶和日本东京。这些服务以对国内用户友好的优化路线而受到好评,尤其是CN2 GIA和CMIN2线路,这些线路减少了延迟...

      HostYun:高性价比VPS服务的理想选择

      HostYun,最早被称作主机分享,成立于2008年,专注于提供性价比极高的VPS服务。在众多IDC品牌中,HostYun凭借其低价策略迅速占领了一席之地。作为一个以KVM和XEN虚拟化技术为基础的平台,HostYun不仅满足了用户对低成本服务的需求,也为学习、测试和小型项目的部署提供了理想的选择。...

      阿里云香港轻量服务器:高性价比云计算解决方案

      阿里云香港轻量服务器是我在寻找云计算解决方案时发现的一个非常实用的选择。它不仅具备高性价比,还有灵活的配置和便捷的管理体验,适合各种用户需求。让我带你深入了解一下这个产品的特点和优势。 首先,香港轻量服务器的价格设置比较合理。我看到它提供多个配置供用户选择,无论是新手还是有经验的开发者都能在这里找到...