浅谈一下filter


filter就是一种过滤器,对于我们的请求进行一次过滤,当客户端向服务器发请求的时候,如果在服务端配置了filter过滤器,过滤器可以在请求目标资源之前或者在响应给客户端之前做一些操作

我们来测试下filter 

import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

public class LoggingFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest)servletRequest;
        HttpServletResponse httpServletResponse = (HttpServletResponse)servletResponse;
        System.out.println("在请求之前运行");//请求之前做的操作
        filterChain.doFilter(httpServletRequest,httpServletResponse);//将请求放行
        System.out.println("响应之前运行"); //响应之前的操作
    }
}

再部署一下filter的配置 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
         version="6.0">
    <filter>
        <filter-name>loggingFilter</filter-name>
        <filter-class>com.atguigu.filter.LoggingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>loggingFilter</filter-name>
       <servlet-name>servletA</servlet-name> //请求资源的别名
    </filter-mapping>
</web-app>

 我们部署了一个filter过滤器,然后再将建立一个servlet对象

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet(
        urlPatterns = "/servletA",
        name = "servletA"
)
public class ServletA extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("请求成功");
        resp.setCharacterEncoding("GBK");
//        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("响应成功");
    }
}

测试结果

测试成功

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值