设为首页 加入收藏

TOP

学习笔记——过滤器的匹配规则(一)
2023-07-25 21:41:06 】 浏览:58
Tags:习笔记

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-na
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇基于SpringBoot 使用 Flink 收发K.. 下一篇学习笔记——过滤器链;监听器;S..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目