首页 > 其他分享 >学习笔记——过滤器的匹配规则

学习笔记——过滤器的匹配规则

时间:2023-01-06 12:55:05浏览次数:38  
标签:匹配 BServlet 笔记 访问 AServlet user 过滤器

2023-01-06

一、过滤器的匹配规则

主要研究的就是“filter-mapping”中“url-pattern”的值的编写方式的个数。

(1)在创建的模块中的src文件夹下的Servlet文件夹下创建“AServlet”、“BServlet”,去掉注解。之后设置访问路径。

<servlet-mapping>
    <servlet-name>AServlet</servlet-name>
    <url-pattern>/a</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>BServlet</servlet-name>
<url-pattern>/b</url-pattern>
</servlet-mapping>

(2)设置“AServlet”和“BServlet”中的函数

public class AServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("访问到了AServlet...");
    }
public class BServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("访问到了BServlet");
    }
}

(3)在web文件夹下创建一个“index.html”页面,设置两个超链接

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <a href="a">点击访问AServlet</a>
    <a href="b">点击访问BServlet</a>
</body>
</html>

(4)在src文件夹下的com.hh.filter文件夹下创建“AFilter”、“BFilter”类,实现“Filter”(包是javax.servlet)。

(5)在web.xml中设置访问路径

<filter>
        <filter-name>AFilter</filter-name>
        <filter-class>com.hh.filter.AFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>AFilter</filter-name>
        <url-pattern>/a</url-pattern>
    </filter-mapping>
    <filter>
        <filter-name>BFilter</filter-name>
        <filter-class>com.hh.filter.BFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>BFilter</filter-name>
        <url-pattern>/b</url-pattern>
    </filter-mapping>

二、匹配类型

1、精确匹配

<url-pattern>/a</url-pattern>
<url-pattern>/b</url-pattern>

作用:过滤项目下的a/b请求

2、目录匹配

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

作用:过滤项目下user请求下的所有

这个使用时,可以将超链接中的href设置为:“user/a”、“user/b”,此时只使用一个过滤器就行。可将AServlet、BServlet的访问路径也改为“user/a”、“user/b”(在web.xml中)

如果此时只使用“BFilter”过滤器,那么在此类中的“doFilter”添加代码

 @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("访问到user/的过滤器");
        //过滤器放行
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("过滤器放行后的代码");
    }

运行结果:

3、后缀匹配

如:此时将AServlet、BServlet的访问路径(在web.xml中)设置为:

  <servlet>
        <servlet-name>AServlet</servlet-name>
        <servlet-class>com.hh.Servlet.AServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>BServlet</servlet-name>
        <servlet-class>com.hh.Servlet.BServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AServlet</servlet-name>
        <url-pattern>/a.action</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>BServlet</servlet-name>
        <url-pattern>/b.action</url-pattern>
    </servlet-mapping>

之后将“index.html”中的“href”也改变:

<a href="a.action">点击访问AServlet</a>
<a href="b.action">点击访问BServlet</a>

这样也可以访问到。

注意:“<url-pattern>”标签中间中如果是“后缀匹配”,不需要加“/”。其他两种匹配,一般请求下需要加“/”,如果忘加的话,服务器会启动不起来。

 总结:如果过滤器只过滤一个请求,就是用精确匹配;如果过滤器过滤过个请求,就使用目录匹配或者后缀匹配。

标签:匹配,BServlet,笔记,访问,AServlet,user,过滤器
From: https://www.cnblogs.com/isDaHua/p/17029999.html

相关文章

  • 算法笔记——泰勒展开
    泰勒展开在\(x_0=0\)处的泰勒展开泰勒展开是对一个\(n\)次多项式\(f(x)=\sum\limits_{i=0}^{n}a_ix^i\)变换,这里\(n\)可以趋向于\(\infty\)。考虑这个多项式的......
  • 应用笔记 | TSMaster使用教程—UDS刷写流程
    今天给大家介绍基于TSMaster的UDS诊断刷写流程。基本流程主要分为基本参数配置、刷写流程两部分。一、基本参数配置1、新建工程打开TSMaster软件,选择创建新工程-诊断-UDS诊......
  • Arch Linux安装笔记
    ​ 最近有些厌倦Windows,所以想尝试一下Linux,选择Arch的原因不再赘述,建议以ArchLinux官方安装指南为主,这篇笔记只是方便我自己安装而写的,仅供参考。1.安装前的准备1.1腾......
  • 学习笔记——过滤器、过滤器的HelloWord、过滤器生命周期
    2023-01-06一、过滤器(Filter)1、概念:Filter是一个实现了特殊接口(Filter)的java类,实现对请求资源(jsp,servlet,html)的过滤的功能。过滤器是一个运行在服务器的程序,优先于请求......
  • 雅思阅读笔记
    雅思阅读概况3篇文章,每篇800-1200词,合计3300词左右,需要在1j内做完,完成40题雅思阅读有5种题型,Part1-2分别对应13题,Part3有14题雅思的阅读需要在60min内完成,但是没......
  • 408笔记--树基础
    树的定义:树是n个节点(n≥0)的有限集,n=0称为空树。在任意一个非空树中,有且只有一个根节点,其余节点可以分为m个互不相交的有限集,并且每一个集合本身又是一棵树称为根的子树。......
  • SpringBoot过滤器/拦截器
    不同点项过滤器拦截器使用场景对请求/响应进行修改、判断等。一般用于过滤参数、登录权限验证、资源访问权限控制、敏感词汇过滤、字符编码转换。在service或者一个方法前......
  • 奇哥 借代!究竟是啥手法?和借喻有啥区别?学习笔记
    明喻暗喻借喻的定义1、本体(被比喻的事物)和喻体(用来作比喻的事务)之间用“像”“好像”“仿佛”“如同”“。。。似的”等比喻词连接,是明喻2、本体和喻体之间用:“是”......
  • 关于DoTween的使用方法笔记
    一、Unity常用组件拓展方法(1)Transform拓展方法1)Position1)改变世界坐标移动方法,第一个参数是要移动到的目标点,不是移动这个向量的距离transform.DOMove(newVector3(1......
  • 数据结构:ST表 学习笔记
    ST表RMQ问题RMQ是英文RangeMaximum/MinimumQuery的缩写,表示区间最大(最小)值。ST表是用于解决离线RMQ问题的一种线性数据结构,在全国青少年信息学奥林匹克系列竞......