最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

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

来源:博客园

2023-01-06

一、过滤器的匹配规则

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


(资料图片仅供参考)

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

    AServlet    /a
    BServlet    /b

(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”页面,设置两个超链接

        Title    点击访问AServlet    点击访问BServlet

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

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

        AFilter        com.hh.filter.AFilter                AFilter        /a                BFilter        com.hh.filter.BFilter                BFilter        /b    

二、匹配类型

1、精确匹配

/a/b

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

2、目录匹配

/user/*

作用:过滤项目下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中)设置为:

        AServlet        com.hh.Servlet.AServlet                BServlet        com.hh.Servlet.BServlet                AServlet        /a.action                BServlet        /b.action    

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

点击访问AServlet点击访问BServlet

这样也可以访问到。

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

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

关键词: