欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > springMVC-11 中文乱码处理

springMVC-11 中文乱码处理

2026/4/29 12:45:00 来源:https://blog.csdn.net/weixin_49764008/article/details/148483999  浏览:    关键词:springMVC-11 中文乱码处理

前言        

        本文介绍了springMVC中文乱码的解决方案,同时也贴出了本人遇到过的其他乱码情况,可以根据自身情况选择合适的解决方案。

其他-jdbc、前端、后端、jsp乱码的解决

Tomcat导致的乱码解决


自定义中文乱码过滤器

老方法,通过javaWeb-Filter解决

准备工作

1.把上一章中的取消数据绑定的设置注释掉:

    //恢复注解@NotEmpty(message="不能为空")private String name;
//MonsterHandler中注释掉取消数据绑定
//webDataBinder.setDisallowedFields("name");

2.输入中文:

3.后台显示中文乱码:name='佩恩'

Filter回顾

Filter的生命周期图解

自定义实例

1.创建com/stein/springMVC/filter/MyCharacterFilter.java

import javax.servlet.*;
//注意Filter接口不要引用错了
public class MyCharacterFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {}@Overridepublic void destroy() {}
}

2.在doFilter()中执行

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {//设置utf-8编码servletRequest.setCharacterEncoding("utf-8");//放行过滤器filterChain.doFilter(servletRequest,servletResponse);}

3.在web.xml中配置Filter

        建议放在最前面

    <!--配置自定义的中文乱码过滤器--><filter><filter-name>MyCharacterFilter</filter-name><filter-class>com.stein.springMVC.filter.MyCharacterFilter</filter-class></filter><filter-mapping><filter-name>MyCharacterFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

4.重新测试

        后台输出:name='佩恩'。乱码解决

Spring提供的过滤器 

        通过上面的自定义的方法,在代码中写死了字符集是"uft-8",属于硬编码的方式,不够灵活;自己灵活处理的话,又比较麻烦。于是有了spring给我们提供的字符过滤器。

1.在web.xmlx中注释掉刚刚自己定义的MyCharacterFilter

2.重新配置spring的过滤器

        1)utf-8 或者 UTF-8都一样

        2)encoding这个参数名,可以在CharacterEncodingFilter这个类名,按Ctrl+B进入查看到

    <!--使用spring提供的过滤器处理中文,放在其它Servlet前--><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><!--大小写都可以 utf-8--><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

3.重新测试

        中文正常显示!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词