java过滤器 配置路径_Filter过滤器拦截路径配置

在Filter中拦截路径配置有四种形式

具体资源路径拦截:@WebFilter("/index.jsp") //这是指访问index.jsp的时候会经过过滤器

具体目录拦截:@WebFilter("/user/*") //这是指访问user目录下的所有资源时会经过过滤器

具体后缀名拦截:@WebFilter("*.jsp") //这时指访问后缀名为.jsp的资源时会经过过滤器

所有资源拦截:@WebFilter("/*") //这是指访问所有资源的时候都会经过过滤器

首先演示第一种,具体资源路径拦截,如果访问的不是index.jsp,则不会执行过滤器

package com.zhiying.filter;

import javax.servlet.*;

import javax.servlet.annotation.WebFilter;

import java.io.IOException;

@WebFilter("/index.jsp")

public class FilterDemo4 implements Filter {

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

System.out.println("执行了过滤器");

chain.doFilter(request,response);

}

}

893a307aed03f991a9d54a5015cd4d89.png

下面是我访问了hello.jsp,就没有执行过滤器

39bc95da6a35e5f17f7c3836f261b8d5.pngaf570c593f276fc7881b3544f576c607.png

第二种是具体目录拦截,这里演示,是通过两个servlet例子,我们去访问servlet,具体演示如下,首先我们写两个servlet

package com.zhiying.servlet;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet("/user/a1")

public class ServletDemo1 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println("servlet1...");

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGet(req, resp);

}

}

package com.zhiying.servlet;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet("/user/a2")

public class ServletDemo2 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println("servlet2...");

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGet(req, resp);

}

}

然后修改我们的Filter

package com.zhiying.filter;

import javax.servlet.*;

import javax.servlet.annotation.WebFilter;

import java.io.IOException;

@WebFilter("/user/*")

//@WebFilter("/index.jsp")

public class FilterDemo4 implements Filter {

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

System.out.println("执行了过滤器");

chain.doFilter(request,response);

}

}

当我们访问/user/a1和a2的时候,发现过滤器被执行了,而我们访问index.jsp的时候过滤器没有别执行

6db2a6965708cf3b7dd4977e5f39819b.png6c2f9f033fea65e37a7112c5406b849a.png

第三种是后缀名拦截,就是所有该后缀名的资源都会执行过滤器,这里为了演示,我又创建了一个html文件,这里给出html文件和修改该过的Java类

Title

html...

package com.zhiying.filter;

import javax.servlet.*;

import javax.servlet.annotation.WebFilter;

import java.io.IOException;

@WebFilter("*.jsp")

// @WebFilter("/user/*")

// @WebFilter("/index.jsp")

public class FilterDemo4 implements Filter {

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

System.out.println("执行了过滤器");

chain.doFilter(request,response);

}

}

从下图可以看出,我们的jsp文件都会被经过过滤器

0ea555dc55d59314860336595659f13f.png

下面是访问html资源,我们会发现,没有经过过滤器,空空如也

053c7caf513088affde18b57ebf776eb.png08c5902e99fb47336ab8e21c20ba26f0.png

最后一种就是拦截所有资源,仍然给出Java类

package com.zhiying.filter;

import javax.servlet.*;

import javax.servlet.annotation.WebFilter;

import java.io.IOException;

@WebFilter("/*")

// @WebFilter("*.jsp")

// @WebFilter("/user/*")

// @WebFilter("/index.jsp")

public class FilterDemo4 implements Filter {

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

System.out.println("执行了过滤器");

chain.doFilter(request,response);

}

}

不管是执行index.jsp还是hello.jsp还是html资源,都会经过过滤器

e17cc1c0f02968ab859591062ebb205d.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值