解决【Spring MVC 表单提交数据乱码】 问题

版权声明:本文为博主【十甫寸木南】原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37164975/article/details/82498559

今天在练习一个SSM的CRUD项目时,发现前端页面通过表单提交过来的数据保存到数据库后是乱码的!

于是,开始查找问题原因!

经过测试查找,发现数据库是可以保存中文的,不会发生乱码,不是问题所在;

同时,前端页面可以正常显示中文,问题同样不在这儿;

真正的问题在于:前端的中文数据通过Spring MVC提交到Controller后,数据变为了乱码!

那么,知道了问题所在,接下来就是解决问题了:↓ ↓ ↓ 

通过搜索查找,成功找到了解决乱码的办法:

首先,确保各个地方的编码格式是【UTF-8】格式,如:HTML页面、JSP页面等,还有如数据库的连接参数等地方(当然,这里我的数据库连接是没有问题的)

[注意:]
在设置数据库的连接参数时,如果是使用配置文件的方式,而配置文件又是XML文件的话,需要注意一个问题:
【 & 】字符需要进行转义!!!
详情,参考我的另一篇博客:https://blog.csdn.net/qq_37164975/article/details/82496826

然后,就是重点了,也是我解决项目中乱码的办法:↓ ↓ ↓ 

在 web.xml 文件中添加 Spring 编码过滤器配置[注意:form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果]

<!-- 编码过滤器配置 -->
<filter>
    <filter-name>characterEncodingFilter</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
	<init-param>
		<param-name>forceEncoding</param-name>
		<param-value>true</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>characterEncodingFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

需要注意的是:匹配原则必须为【 /* 】,不能为【 / 】因为我们本来就是对【 .html 】或【 .jsp 】页面进行编码过滤!!!

在这里再提一句:【 /* 】和【 / 】 /的区别:

<url-pattern>/</url-pattern>

会匹配到如:【 /springmvc 】这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url。

<url-pattern>/*</url-pattern>

会匹配到所有的url:不管是如【 /springmvc 】这样的路径型url,还是如【 .jsp 】、【 *.html 】这样的后缀型url

猜你喜欢

转载自blog.csdn.net/qq_37164975/article/details/82498559