JSP 资源请求拦截器

我们过滤器 就是对用户请求进行过滤
在这里插入图片描述
那么 话不多说 直接看代码 理论看多了真的头疼

我们在项目 java目录中 创建一个包 叫 Filter
下面创建一个类 也叫 Filterst
参考代码如下

package com.example.dom.Filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter("/1cginServlet")
public class Filterst implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("Filter init");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("Filter doFilter");
    }

    @Override
    public void destroy() {
        System.out.println("Filter destroy");
    }
}

这里 我们实现了 拦截器Filter 接口 重写了 它的三个方法
然后 WebFilter 声明我们对路径中包含/1cginServlet的资源进行拦截
就是 只要有地方访问 /1cginServlet 就会被我们的拦截器拦截
/1cginServlet 代码是这样的
在这里插入图片描述
就是一个普通的 WebServlet
然后 我们在最开始输出一下 System.out.println(“1cginServlet”); 让大家更明显的看到它有没有执行

然后我们启动项目
在这里插入图片描述
运行之后 控制台 最后的输出 明显是停在拦截器的doFilter中了
因为 我在xml中配置 项目一启动 直接去访问 1cginServlet
然后 我们拦截器 匹配到 /1cginServlet 进行了拦截
但是我们并没有放行 所以 1cginServlet 并没有执行 内容也就没有输出在控制台上

这里 我们在拦截器的 doFilter 函数中 放行一下

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    System.out.println("Filter doFilter");
    filterChain.doFilter(servletRequest,servletResponse);
}

在这里插入图片描述
这次 明显就进到 1cginServlet 里面了 所有 如果你需要判断 环境 再确定 放不放行的话 可以把逻辑写在doFilter中
在这里插入图片描述
然后 在同时有多个过滤器时 他们执行的优先级就是 按文件顺序
就是名字 例如 你两个过滤器 分别是 aaa 和 bbb aaa先
test01和test02 01先执行

如果 将资源设为 /* 斜杠星号 就会对全局资源 进行拦截 这个可以用来限制用户身份校验 未登录用户不允许访问
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值