filter-mapping如何使用?几个步骤轻松搞定配置!

吉云

说到这个 Filter-Mapping,可真是折腾我好一阵子。一开始没搞明白,走不少弯路,今天就来跟大家分享一下我的实践过程,希望能帮到大家。

最开始的迷茫

我对这玩意儿完全没概念,就知道好像是用来过滤请求的。然后我就去网上搜教程,看一堆,感觉都说得云里雾里的,什么<filter>、<filter-mapping>标签,看得我头都大。

filter-mapping如何使用?几个步骤轻松搞定配置!

磕磕绊绊的尝试

我记得我第一次尝试的时候,是照着一个教程,在 * 文件里写一堆配置:

<filter>

<!-- ... -->

</filter>

filter-mapping如何使用?几个步骤轻松搞定配置!

<filter-mapping>

<!-- ... -->

</filter-mapping>

具体写我现在也记不清,反正就是一通乱写。结果当然是没跑起来,各种报错,当时真是想砸电脑的心都有。

逐渐摸清门路

filter-mapping如何使用?几个步骤轻松搞定配置!

后来我静下心来,仔细研究一下,才发现这玩意儿没那么复杂。主要就是两步:

  • 第一步:先得有个“过滤器”本身。这就像一个筛子,你得先有这个筛子,才能去筛东西。这个“筛子”就是一个 Java 类,它要实现一个叫 Filter 的接口,然后在这个类里面写上你想要过滤的逻辑。
  • 第二步:有“筛子”,还得告诉程序,这个“筛子”要筛哪些东西。这就是 <filter-mapping> 的作用。它就像一个说明书,告诉程序,哪个“筛子”对应哪个 URL。

我记得我当时还发现 <filter-mapping> 是有顺序的,按照配置顺序来。网上有个例子,说对于同一个 url,比如 .do,在 * 里的配置顺序决定哪个 Filter 先执行。

filter-mapping如何使用?几个步骤轻松搞定配置!

实战演练

搞明白原理,我就开始动手实践。我先写一个简单的 Filter 类:

public class MyFilter implements Filter {

filter-mapping如何使用?几个步骤轻松搞定配置!

然后,在 * 文件里,我这样配置它:

<filter>

<filter-name>myFilter</filter-name>

<filter-class>*</filter-class>

filter-mapping如何使用?几个步骤轻松搞定配置!

<!--这里是类路径-->

</filter>

<filter-mapping>

<filter-name>myFilter</filter-name>

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

<!--所有请求都会经过这个-->

filter-mapping如何使用?几个步骤轻松搞定配置!

</filter-mapping>

这回程序终于跑起来!虽然功能很简单,但看到结果的那一刻,我真是太激动。

一些小坑

实践过程中也遇到一些小坑。比如说,我一开始没搞清楚 <url-pattern> 的写法,写个 “/xxx”,结果发现只有完全匹配 “/xxx” 的请求才会被过滤,而 “/xxx/yyy” 这种就不行。后来才知道,要用 “/” 才能匹配所有请求。

还有,我发现除可以用 <url-pattern>,还可以用 <servlet-name> 来指定要过滤的 Servlet。这两种方式可以根据实际需要来选择。

filter-mapping如何使用?几个步骤轻松搞定配置!

最终的成果

经过一番折腾,我总算是把 Filter-Mapping 搞明白。我可以熟练地使用它来过滤各种请求,实现各种各样的功能。感觉自己又进步一点点!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]