解决springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题

网友投稿 314 2022-11-26


解决springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题

在spring项目中,当请求方式为post时,可能在获取数据之后会有乱码的情况,其中一种解决方法就是在拿到请求参数之前设置编码格式为utf-8,如下

request.setCharacterEncoding("utf-8");

String strId = request.getParameter("id");

String strName = request.getParameter("name");

String strSex = request.getParameter("sex");

但是当有多个处理器方法的时候每个方法中都要设置编码格式就显得过于繁琐,所以推荐第二种解决方案:使用过滤器只要在web.xml中对过滤器进行声明注册就可以了

characterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

utf-8

forceRequestEncoding

true

forceResponseEncoding

true

/*

另外,我们可以看一下CharacterEncodingFilter的实现方法的实现就知道为什么要设置后边的encoding,forceRequestEncoding,forceResponseEncoding这三个参数了,因为这三个参数是这个方法中的是三个私有属性

public class CharacterEncodingFilter extends OncePerRequestFilter {

@Nullable

private String encoding;

private boolean forceRequestEncoding;

private boolean forceResponseEncoding;

public CharacterEncodingFilter() {

this.forceRequestEncoding = false;

this.forceResponseEncoding = false;

}

public CharacterEncodingFilter(String encoding) {

this(encoding, false);

}

public CharacterEncodingFilter(String encoding, boolean forceEncoding) {

this(encoding, forceEncoding, forceEncoding);

}

public CharacterEncodingFilter(String encoding, boolean forceRequestEncoding, boolean forceResponseEncoding) {

this.forceRequestEncoding = false;

this.forceResponseEncoding = false;

Assert.hasLength(encoding, "Encoding must not be empty");

this.encoding = encoding;

this.forceRequestEncoding = forceRequestEncoding;

this.forceResponseEncoding = forceResponseEncoding;

}

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:IntelliJ IDEA Project窗口的一些设置详解
下一篇:SpringMVC拦截器运行原理及配置详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~