java中的接口是类吗
331
2022-10-05
springmvc字符编码过滤器CharacterEncodingFilter的使用
字符编码过滤器CQhdLneKharacterEncodingFilter
一、在web.xml中的配置
二、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文件,在其第一个
QhdLneK
2、POST请求
但是,针对POST请求,仅配置Tomcat的server.xml文件中的 org.springframework.web.filter.CharacterEncodingFilter 步骤:配置所开发项目的web.xml文件,添加以下内容至文件开头处即可:
org.springframework.web.filter.CharacterEncodingFilter
步骤:配置所开发项目的web.xml文件,添加以下内容至文件开头处即可:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~