JavaWeb过滤器详解如何实现?

2026-05-26 01:121阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计836个文字,预计阅读时间需要4分钟。

JavaWeb过滤器详解如何实现?

目录 + 基本概念 + 1. 过滤器概述 + 2. 使用过滤器解决中文编码异常问题 + 3. 使用过滤器实现用户登录权限拦截 + 基本概念 + 1. Filter + 过滤器是JavaWeb的三大组件之一。 + 三大组件分别是:Servlet、Filter、Listener。

目录
  • 基本概念
  • 1.过滤器概述
  • 2.使用过滤器解决中文编码异常问题
  • 3.使用过滤器实现用户登录权限拦截

基本概念

1、 Filter 过滤器它是 JavaWeb 的三大组件之一。 三大组件分别是: Servlet 程序、 Listener 监听器、 Filter 过滤器
2、 Filter 过滤器它是 JavaEE 的规范。 也就是接口
3、 Filter 过滤器它的作用是: 拦截请求, 过滤响应
过滤器的三要素:

①拦截

JavaWeb过滤器详解如何实现?

过滤器之所以能够对请求进行预处理,关键是对请求进行拦截,把请求拦截下来才能够做后续的操作。而且对于一个具体的过滤器,它必须明确它要拦截的请求,而不是所有请求都拦截。

②过滤

根据业务功能实际的需求,看看在把请求拦截到之后,需要做什么检查或什么操作,写对应的代码即可。

③放行

过滤器完成自己的任务或者是检测到当前请求符合过滤规则,那么可以将请求放行。所谓放行,就是让请求继续去访问它原本要访问的资源。

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>

如上即可解决乱码问题

本文共计836个文字,预计阅读时间需要4分钟。

JavaWeb过滤器详解如何实现?

目录 + 基本概念 + 1. 过滤器概述 + 2. 使用过滤器解决中文编码异常问题 + 3. 使用过滤器实现用户登录权限拦截 + 基本概念 + 1. Filter + 过滤器是JavaWeb的三大组件之一。 + 三大组件分别是:Servlet、Filter、Listener。

目录
  • 基本概念
  • 1.过滤器概述
  • 2.使用过滤器解决中文编码异常问题
  • 3.使用过滤器实现用户登录权限拦截

基本概念

1、 Filter 过滤器它是 JavaWeb 的三大组件之一。 三大组件分别是: Servlet 程序、 Listener 监听器、 Filter 过滤器
2、 Filter 过滤器它是 JavaEE 的规范。 也就是接口
3、 Filter 过滤器它的作用是: 拦截请求, 过滤响应
过滤器的三要素:

①拦截

JavaWeb过滤器详解如何实现?

过滤器之所以能够对请求进行预处理,关键是对请求进行拦截,把请求拦截下来才能够做后续的操作。而且对于一个具体的过滤器,它必须明确它要拦截的请求,而不是所有请求都拦截。

②过滤

根据业务功能实际的需求,看看在把请求拦截到之后,需要做什么检查或什么操作,写对应的代码即可。

③放行

过滤器完成自己的任务或者是检测到当前请求符合过滤规则,那么可以将请求放行。所谓放行,就是让请求继续去访问它原本要访问的资源。

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>

如上即可解决乱码问题