encodingfilter.java_通过spring-web包的CharacterEncodingFilter字节编码过滤器实现服务端请求字符集编码强制转换处理过滤...

本文介绍了如何使用Spring的CharacterEncodingFilter在Web应用中强制转换请求和响应的字符编码为UTF-8,确保中文参数正确处理。详细阐述了过滤器的配置和内部工作机制。
摘要由CSDN通过智能技术生成

一、前言

通过在项目的web.xml配置springframework的spring-web包中的org.springframework.web.filter.CharacterEncodingFilter类,将中文请求入参强制转换为指定的字符集编码如UTF-8,参见配置详情。

二、配置说明

1. 项目web.xml配置增加如下filter、filter-mapping项@b@Set Character Encoding@b@org.springframework.web.filter.CharacterEncodingFilter@b@@b@encoding@b@UTF-8@b@@b@@b@@b@Set Character Encoding@b@/*@b@

2. CharacterEncodingFilter类源码package org.springframework.web.filter;@b@@b@import java.io.IOException;@b@import javax.servlet.FilterChain;@b@import javax.servlet.ServletException;@b@import javax.servlet.http.HttpServletRequest;@b@import javax.servlet.http.HttpServletResponse;@b@import org.springframework.util.Assert;@b@@b@public class CharacterEncodingFilter extends OncePerRequestFilter@b@{@b@  private String encoding;@b@  private boolean forceRequestEncoding;@b@  private boolean forceResponseEncoding;@b@@b@  public CharacterEncodingFilter()@b@  {@b@    this.forceRequestEncoding = false;@b@@b@    this.forceResponseEncoding = false;@b@  }@b@@b@  public CharacterEncodingFilter(String encoding)@b@  {@b@    this(encoding, false);@b@  }@b@@b@  public CharacterEncodingFilter(String encoding, boolean forceEncoding)@b@  {@b@    this(encoding, forceEncoding, forceEncoding);@b@  }@b@@b@  public CharacterEncodingFilter(String encoding, boolean forceRequestEncoding, boolean forceResponseEncoding)@b@  {@b@    this.forceRequestEncoding = false;@b@@b@    this.forceResponseEncoding = false;@b@@b@    Assert.hasLength(encoding, "Encoding must not be empty");@b@    this.encoding = encoding;@b@    this.forceRequestEncoding = forceRequestEncoding;@b@    this.forceResponseEncoding = forceResponseEncoding;@b@  }@b@@b@  public void setEncoding(String encoding)@b@  {@b@    this.encoding = encoding;@b@  }@b@@b@  public String getEncoding()@b@  {@b@    return this.encoding;@b@  }@b@@b@  public void setForceEncoding(boolean forceEncoding)@b@  {@b@    this.forceRequestEncoding = forceEncoding;@b@    this.forceResponseEncoding = forceEncoding;@b@  }@b@@b@  public void setForceRequestEncoding(boolean forceRequestEncoding)@b@  {@b@    this.forceRequestEncoding = forceRequestEncoding;@b@  }@b@@b@  public boolean isForceRequestEncoding()@b@  {@b@    return this.forceRequestEncoding;@b@  }@b@@b@  public void setForceResponseEncoding(boolean forceResponseEncoding)@b@  {@b@    this.forceResponseEncoding = forceResponseEncoding;@b@  }@b@@b@  public boolean isForceResponseEncoding()@b@  {@b@    return this.forceResponseEncoding;@b@  }@b@@b@  protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)@b@    throws ServletException, IOException@b@  {@b@    String encoding = getEncoding();@b@    if (encoding != null) {@b@      if ((isForceRequestEncoding()) || (request.getCharacterEncoding() == null))@b@        request.setCharacterEncoding(encoding);@b@@b@      if (isForceResponseEncoding())@b@        response.setCharacterEncoding(encoding);@b@    }@b@@b@    filterChain.doFilter(request, response);@b@  }@b@}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值