首页IT科技过滤过滤器(学习笔记——过滤器的匹配规则)

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

时间2025-05-04 10:59:29分类IT科技浏览4301
导读:2023-01-06...

2023-01-06

一            、过滤器的匹配规则

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

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

(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>      ”标签中间中如果是“后缀匹配         ”         ,不需要加“/                  ”      。其他两种匹配      ,一般请求下需要加“/         ”                  ,如果忘加的话            ,服务器会启动不起来                  。

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

声明:本站所有文章               ,如无特殊说明或标注,均为本站原创发布   。任何个人或组织               ,在未征得本站同意时                  ,禁止复制               、盗用、采集               、发布本站内容到任何网站                  、书籍等各类媒体平台                  。如若本站内容侵犯了原著者的合法权益   ,可联系我们进行处理               。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
网站域名哪个好(网站域名该怎么选择) 牛牛软件送金币(JetBrains-CLion永久激活牛牛牛牛)