过滤器入门小案例

一个入门案例:

将会在服务器请求myServlet.do,但是中间会加上过滤器。加上后请求流程为,发送请求->过滤器处理->服务器处理并响应->过滤器处理->响应回网页

 

 我们先创建一个servlet

import java.io.*;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.*;

public class MyServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        System.out.println("myServlet 执行了sevice方法");
        resp.setContentType("text/html;charset=UTF-8");
        resp.setCharacterEncoding("UTF-8");
        resp.getWriter().print("myServlet响应数据");
    }
}

配置web.xml让浏览器可以访问

<servlet>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>com.example.servlet.MyServlet</servlet-class>
</servlet>
    
<servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>/myServlet.do</url-pattern>
</servlet-mapping>

此时浏览器里访问myServlet.do可以访问得到资源

 现在开始创建一个过滤器

import jakarta.servlet.*;
import java.io.IOException;

public class MyFilter implements Filter {
    //初始化方法
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    //销毁方法
    @Override
    public void destroy() {
        Filter.super.destroy();
    }

    //做出过滤方法
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("Filter doFilter 对请求做出过滤");

        //处理完后需要放行请求,不然是不会到达服务器的
        //将放行请求交给过滤器链继续进行过滤
        filterChain.doFilter(servletRequest,servletResponse);

        System.out.println("Filter doFilter 对响应做出过滤");
        //过滤器也是可以往响应里追加数据的
        servletResponse.getWriter().print("  filter 追加一些数据");
    }
}

 继续配置web.xml,让访问资源前要经过过滤器

<filter>
    <filter-name>filter</filter-name>
    <filter-class>com.example.filter.MyFilter</filter-class>
</filter>
    
<filter-mapping>
    <filter-name>filter</filter-name>
    <!--对那个资源的请求和响应进行过滤-->
    <!--方式1-->
    <!--<url-pattern>/myServlet.do</url-pattern>-->
    <!--方式2-->
    <!--<servlet-name>myServlet</servlet-name>
    <!--方式3-->
    <!--/表示除了jsp的资源,/*表示所有资源-->
    <url-pattern>/*</url-pattern>
</filter-mapping>

运行结果:

服务器端:

 浏览器端:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值