jsp过滤器

本文介绍了Java Web开发中过滤器的作用,包括用户操作限制,以及Filter、FilterChain和FilterConfig接口的详细解释。重点讲解了编码过滤器和如何使用这些API来定制请求和响应的处理过程。
摘要由CSDN通过智能技术生成

什么是过滤器

interface FilenameFilter 文件名过滤器
public boolean accept(File dir, String name);

过滤出你想要的东西

JavaWEB开发中,过滤器作用,限制用户的一些操作。
JavaWEB三大组件 Servlet Filter Listener

过滤器相关的API

Servlet API(javaEE)中,与过滤器有关的API共有三个接口,分别是:

Filter;
FilterChain;
FilterConfig。

Filter接口

Filter接口是过滤器类必须实现的接口,该接口中有三个方法:

init(FilterConfig filterConfig):该方法是对filter对象进行初始化的方法,仅在容器初始化filter对象结束后被调用一次,参数FilterConfig可以获得filter的初始化参数;
doFilter(ServletRequest request,ServletResponse response,FilterChain chain):该方法是filter进行过滤操作的方法,是最重要的方法。过滤器实现类必须实现该方法,方法体中可以对request和response进行预处理。其中FilterChain可以将处理后的request和response对象传递到过滤链上的下一个资源。
destroy():该方法在容器销毁对象前被调用。
编码过滤器

FilterChain接口

该方法类型作为Filter接口中的doFilter方法的参数使用,FilterChain接口中有一个方法:

doFilter(ServletRequest request,ServletResponse response),该方法可以将当前的请求和响应传递到过滤链上的下一个资源,可能是下一个过滤器,也可能是目标资源。

FilterConfig接口

该接口类型作为Filter接口中的init方法的参数使用,FilterConfig接口中有一个常用方法:

getInitParameter(String name),该方法用来获得过滤器的初始化参数值。在web.xml中,可以为每一个filter配置需要的初始化参数,与Servlet的< init-param >类似。过滤器的初始化参数即可通过FilterConfig中的getInitParameter方法获取。

Request和Response编码集过滤器

package com.qfedu.workersystem.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

// 约束过滤的资源是以 .action结尾的资源
@WebFilter("*.action")
public class AEncodingFilter implements Filter {
    @Override
    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        System.out.println("Encoding Filter Working...");
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;

        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        chain.doFilter(request, response);
        System.out.println("Encoding Filter Ending...");
    }

    @Override
    public void init(FilterConfig config) throws ServletException {

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值