Java CharacterEncodingFilter案例详解

 更新时间:2021年08月26日 11:33:47   作者:NicoJ  
这篇文章主要介绍了Java CharacterEncodingFilter案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

一、什么是CharacterEncodingFilter

官方解释如下

在这里插入图片描述

是spring内置过滤器的一种,用来指定请求或者响应的编码格式。在web开发中经常被从来使用

二、CharacterEncodingFilter的用法

在web.xml中的配置

  <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

其中encoding用来指定编码格式,forceEncoding表示是否强制response的编码格式也是encoding格式

三、CharacterEncodingFilter 原理

服务器启动的时候就会创建Filter,将init-param中的参数加载,注入到CharacterEncodingFilter 类中,浏览器每次发送请求都会经过这个过滤器,然后调用doFilterInternal

CharacterEncodingFilter 类图

在这里插入图片描述

可以看到CharacterEncodingFilter继承OncePerRequestFilter,OncePerRequestFilter是个抽象类,其中的抽象方法doFilterInternal被CharacterEncodingFilter实现,同时OncePerRequestFilter实现了doFilter方法,调用了doFilterInternal方法。

doFilterInternal方法

@Override
	protected void doFilterInternal(
			HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
			throws ServletException, IOException {

		if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {
			request.setCharacterEncoding(this.encoding);
			if (this.forceEncoding) {
				response.setCharacterEncoding(this.encoding);
			}
		}
		filterChain.doFilter(request, response);
	}

到此这篇关于Java CharacterEncodingFilter案例详解的文章就介绍到这了,更多相关Java CharacterEncodingFilter内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java 如何解决跨域问题

    Java 如何解决跨域问题

    这篇文章主要介绍了Java 如何解决跨域问题,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-03-03
  • spring中前端明明传了值后端却接收不到问题解决办法

    spring中前端明明传了值后端却接收不到问题解决办法

    在学习Spring的时候遇到了一个问题,后台一直接收不到前台传递过来的参数,耽误了好长时间终于找到了原因,这篇文章主要给大家介绍了关于spring中前端明明传了值后端却接收不到问题的解决办法,需要的朋友可以参考下
    2024-05-05
  • 深入理解Netty核心类及其作用

    深入理解Netty核心类及其作用

    本文介绍了Netty框架中的核心类及其作用,包括Channel、EventLoop、ChannelPipeline、ByteBuf等,通过对这些类的深入理解,可以更好地使用Netty进行网络编程开发
    2023-04-04
  • 在SpringBoot项目中实现给所有请求加固定前缀

    在SpringBoot项目中实现给所有请求加固定前缀

    这篇文章主要介绍了在SpringBoot项目中实现给所有请求加固定前缀,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 一篇文章教你如何用多种迭代写法实现二叉树遍历

    一篇文章教你如何用多种迭代写法实现二叉树遍历

    这篇文章主要介绍了C语言实现二叉树遍历的迭代算法,包括二叉树的中序遍历、先序遍历及后序遍历等,是非常经典的算法,需要的朋友可以参考下
    2021-08-08
  • Java中初始化List集合的6种方式详解

    Java中初始化List集合的6种方式详解

    这篇文章主要介绍了Java中初始化List集合的6种方式详解,List 是 Java 开发中经常会使用的集合,在使用List时需要进行初始化操作,今天我们就来看一下常用的几种list集合初始化方式,需要的朋友可以参考下
    2023-10-10
  • 详解Spring学习总结——Spring实现AOP的多种方式

    详解Spring学习总结——Spring实现AOP的多种方式

    这篇文章主要介绍了详解Spring学习总结——Spring实现AOP的多种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • JAVA发送HTTP请求的多种方式详细总结

    JAVA发送HTTP请求的多种方式详细总结

    目前做项目中有一个需求是这样的,需要通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断,下面这篇文章主要给大家介绍了关于JAVA发送HTTP请求的多种方式总结的相关资料,需要的朋友可以参考下
    2023-01-01
  • 基于IDEA 的远程调试 Weblogic的操作过程

    基于IDEA 的远程调试 Weblogic的操作过程

    这篇文章主要介绍了基于IDEA 的远程调试 Weblogic的操作过程,本文通过图文实例相结合给大家介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • java用arraycopy实现多击事件

    java用arraycopy实现多击事件

    这篇文章主要介绍了java用arraycopy实现多击事件的多种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11

最新评论