开发者社区> dahezhiquan> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

详解JavaWeb过滤器 Filter

简介: 1.过滤器概述 过滤器,顾名思义就是对事物进行过滤的,在Web中的过滤器,当然就是对请求进行过滤,我们使用过滤器,就可以对请求进行拦截,然后做相应的处理,实现许多特殊功能。如登录控制,权限管理,过滤敏感词汇等 要在Javaweb项目中使用过滤器,实现Java - Servlet - Filter接口即可: 以下是一个模板,需要实现三个方法:
+关注继续查看


1.过滤器概述


过滤器,顾名思义就是对事物进行过滤的,在Web中的过滤器,当然就是对请求进行过滤,我们使用过滤器,就可以对请求进行拦截,然后做相应的处理,实现许多特殊功能。如登录控制,权限管理,过滤敏感词汇等

要在Javaweb项目中使用过滤器,实现Java - Servlet - Filter接口即可:

以下是一个模板,需要实现三个方法:


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

public class CharacterEncodingFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }
}


2.使用过滤器解决中文编码异常问题


Javaweb默认网页内输出中文会发生乱码,我们可以通过如下两行来设置请求和响应编码,以解决这个问题:


servletResponse.setContentType("text/html;charset=utf-8");


但是当存在多个Servlet时势必会发生不便(产生大量冗余代码),此时可以通过过滤器解决:

重写doFilter方法:


@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    servletResponse.setContentType("text/html;charset=utf-8");
    // 必须要让过滤器继续通行
    filterChain.doFilter(servletRequest, servletResponse);
}


同时,在web.xml文件中也要进行配置:


<filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>CharacterEncodingFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <!-- 过滤整个网站的请求 -->
    <url-pattern>/*</url-pattern>
</filter-mapping>


如上即可解决乱码问题🧨


3.使用过滤器实现用户登录权限拦截


如下的doFilter过滤判断,如果用户的登录SESSION为null,则跳转登录页面:


@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    // 强转为HttpServletRequest格式
    HttpServletRequest request = (HttpServletRequest) servletRequest;
    HttpServletResponse response = (HttpServletResponse) servletResponse;

    if (request.getSession().getAttribute("USER_LOGIN_SESSION") == null) {
        response.sendRedirect("/login.jsp");
    }

    filterChain.doFilter(request, response);
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【JavaWeb】Java Web三大组件之Filter过滤器
JavaWeb中的过滤器:当浏览器访问服务器资源时,过滤器就会拦截浏览器发过来的请求,实现一些特别的功能。 作用:一般用于完成通用的操作,如登录验证,身份验证,统一字符编码和敏感字过滤等。
0 0
JavaWeb过滤器(Filter)详解
Filter:过滤器 1.概念: web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能 过滤器的作用:一般用于完成通用的操作,如登录验证、统一编码处理、敏感字符过滤等等。
0 0
【JavaWeb】之过滤器
【JavaWeb】之过滤器
0 0
【JavaWeb】【学习】【过滤器】Filter 的简单应用
【JavaWeb】【学习】【过滤器】Filter 的简单应用
0 0
Java Web——Servlet的过滤器接口(Filter)
Java Web——Servlet的过滤器接口(Filter)
0 0
JavaWeb - Filter 之 SessionExpireFilter
JavaWeb - Filter 之 SessionExpireFilter
0 0
JavaWeb--快速入门Filter过滤器
JavaWeb--快速入门Filter过滤器
0 0
JavaWeb-过滤器Filter学习(一)Filter知识点
JavaWeb-过滤器Filter学习(一)Filter知识点
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
杜万-Java reactive programming - Reactor 3 and Spring WebFlux
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载