springmvc字符编码过滤器CharacterEncodingFilter的使用

网友投稿 331 2022-10-05


springmvc字符编码过滤器CharacterEncodingFilter的使用

字符编码过滤器CQhdLneKharacterEncodingFilter

一、在web.xml中的配置

characterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceRequestEncoding

false

forceResponseEncoding

true

characterEncodingFilter

/*

二、CharacterEncodingFilter过滤器类浅析

打开该类源码,可以看到该类有三个类属性

private String encoding; //要使用的字符集,一般我们使用UTF-8(保险起见UTF-8最好)

private boolean forceRequestEncoding = false; //是否强制设置request的编码为encoding

private boolean forceResponseEncoding = false; //是否强制设置response的编码为encoding

主要方法只有一个,也就是下面这个,代码逻辑很简单,如注释所解释

@Override

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

String encoding = getEncoding();

if (encoding != null) { //如果设置了encoding的值,则根据情况设置request和response的编码

//若设置request强制编码或request本身就没有设置编码

//则设置编码为encoding表示的值

if (isForceRequestEncoding() || request.getCharacterEncoding() == null) {

request.setCharacterEncoding(encoding);

}

//若设置response强制编码,则设置编码为encoding表示的值

if (isForceResponseEncoding()) { //请注意这行代码,下面有额外提醒

response.setCharacterEncoding(encoding);

}

}

filterChain.doFilter(request, response);

}

# 额外提醒

if (isForceResponseEncoding()) {

response.setCharacterEncoding(encoding);

}

是在

filterChain.doFilter(request, response);

之前执行的,这也就是说这段代码的作用是设置response的默认编码方式,在之后的代码里是可以根据需求设置为其他编码的,即这里设置的编码可能不是最终的编码,网上很多文档说这里设置的是最终的编码方式,这是错的。

SpringMVC配置字符编码过滤器CharacterEncodingFilter来解决表单乱码问题

1、GET请求

针对GET请求,可以配置服务器Tomcat的conf\server.xml文件,在其第一个标签中,添加URIEncoding="UTF-8"即可,如下所示:

QhdLneK

2、POST请求

但是,针对POST请求,仅配置Tomcat的server.xml文件中的

org.springframework.web.filter.CharacterEncodingFilter

步骤:配置所开发项目的web.xml文件,添加以下内容至文件开头处即可:

characterEncoding

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

characterEncoding

/*

org.springframework.web.filter.CharacterEncodingFilter

步骤:配置所开发项目的web.xml文件,添加以下内容至文件开头处即可:

characterEncoding

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

characterEncoding

/*


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

上一篇:网络安全风险评估流程包括哪些步骤?小白入门必看(网络安全风险评估的方法和流程)
下一篇:【网络安全入门】你知道防范XSS漏洞攻击的原则有哪些吗?
相关文章

 发表评论

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