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

  本篇文章为你整理了学习笔记——过滤器的匹配规则(过滤器组合)的详细内容,包含有值过滤器 过滤器组合 过滤器选型的一般原则 过滤器材怎么搭配 学习笔记——过滤器的匹配规则,希望能帮助你了解 学习笔记——过滤器的匹配规则。

  一、过滤器的匹配规则

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

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

  以上就是学习笔记——过滤器的匹配规则(过滤器组合)的详细内容,想要了解更多 学习笔记——过滤器的匹配规则的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: