解决springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题
在spring项目中,当请求方式为post时,可能在获取数据之后会有乱码的情况,其中一种解决方法就是在拿到请求参数之前设置编码格式为utf-8,如下
request.setCharacterEncoding("utf-8"); StringstrId=request.getParameter("id"); StringstrName=request.getParameter("name"); StringstrSex=request.getParameter("sex");
但是当有多个处理器方法的时候每个方法中都要设置编码格式就显得过于繁琐,所以推荐第二种解决方案:使用过滤器只要在web.xml中对过滤器进行声明注册就可以了
characterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 forceRequestEncoding true forceResponseEncoding true characterEncodingFilter /*
另外,我们可以看一下CharacterEncodingFilter的实现方法的实现就知道为什么要设置后边的encoding,forceRequestEncoding,forceResponseEncoding这三个参数了,因为这三个参数是这个方法中的是三个私有属性
publicclassCharacterEncodingFilterextendsOncePerRequestFilter{ @Nullable privateStringencoding; privatebooleanforceRequestEncoding; privatebooleanforceResponseEncoding; publicCharacterEncodingFilter(){ this.forceRequestEncoding=false; this.forceResponseEncoding=false; } publicCharacterEncodingFilter(Stringencoding){ this(encoding,false); } publicCharacterEncodingFilter(Stringencoding,booleanforceEncoding){ this(encoding,forceEncoding,forceEncoding); } publicCharacterEncodingFilter(Stringencoding,booleanforceRequestEncoding,booleanforceResponseEncoding){ this.forceRequestEncoding=false; this.forceResponseEncoding=false; Assert.hasLength(encoding,"Encodingmustnotbeempty"); this.encoding=encoding; this.forceRequestEncoding=forceRequestEncoding; this.forceResponseEncoding=forceResponseEncoding; }
总结
到此这篇关于springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题的文章就介绍到这了,更多相关springmvcpost请求乱码内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。