解决ssm项目表单数据提交到数据库乱码问题
问题:在ssm整合的项目里,从前台页面获取表单数据存到数据库中乱码
先说解决办法然后分析:问题出在form表单的提交方式上,我的web.xml配置过滤器都已经指定了编码集,为什么没有生效?原因是,对于在web.xml中配置的过滤器指定编码集只是对表单的post提交方式有效,而我的jsp页面form表单没有指定method,而对于表单没有指定提交方式,默认是get方式,也就是在浏览器的地址栏可以看到你提交的表单数据,指定form表单的提交方式为post就好了,不会出现乱码。不过在这之前要保证数据库编码集和连接数据库的url后面加上指定的编码集。
之前没有遇到这个问题,正常的在jsp页面的表单中添加数据,点击提交,ssm项目中form表单的action配置的是controller中的mapping路径,ssm项目的流程是用户提交数据会根据用户的action中的路径找到controller中的mapping配置对应的方法,注意,这时候controller中的方法中的形参(一般是一个对象)就已经有值了,这里是spring mvc强大之处了,只要你的表单中的name属性和对象中的属性名一致,spring
mvc就会将这些数据自动装入对象中,也就是在controller中方法的形参(一个对象)在从jsp页面跳转过来的时候就已经有值了。说了这么多看下图,当你从jsp页面过来的时候,在方法中输出对象的信息,是可以输出对象的属性值的。
在web.xml中都已经配置了过滤器用来指定编码集,jsp页面也指定了编码集。
问题就出现在了这里,在逐步的排查中,根据浏览器的调试页面查看表单传过来的数据发现没有乱码,怀疑是数据库那里乱码,但是所有的字段包括数据库都是utf-8的编码集,不可能有错,怀疑是在controller的addUser方法中调用了service中的方法的时候,在spring注入的时候乱码,但是当我写下上图中的代码(在方法的第一句输出对象的属性值)的时候,控制台输出的信息就是乱码的(一堆问号),问题的位置确定了,也就是在spring mvc装入属性值的时候就已经乱码,导致后来存入数据库的数据乱码。
在我们配置的web.xml文件中的过滤器只对post方式提交有效,如果是get方式是不起作用的,如果想用get方式就需要到Tomcat根目录下找到conf中的server.xml文件,在Connector标签中加入URIEncoding="UTF-8",如下
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
其实在表单提交上还是用post提交好些,像表单参数没有展示出来,还有就是没有url长度的限制,在以前看到的get请求的长度限制是255个字节,其实远远比这个长,不同的浏览器还有不同的长度限制,所以还不如指定post方式提交。
解决ssm项目表单数据提交到数据库乱码问题的更多相关文章
- 【ASP.NET 问题】System.InvalidOperationException: 对象的当前状态使该操作无效 【大量表单数据提交】错误解决
出现的问题描述: 当页面的数据量比较大时,出现异常,详细信息: System.InvalidOperationException: 对象的当前状态使该操作无效 问题的原因:出现这个异常的原因是因为微软 ...
- Java中上传文件和表单数据提交如何保持数据的一致性?
学生申请学科竞赛活动,表单中有学科竞赛的申报信息和部分附件,需要做到将上传文件和表单数据提交保持一致性. 将上传文件和插入表单数据放到事务汇总去处理,由于表单的数据我们可以控制,但是上传的文档不好控制 ...
- SSM获取表单数据插入数据库并返回插入记录的ID值
以下指示插入操作以及获取记录值的ID的部分操作代码!!! 首先是简单的表单实现 <%@ page language="java" contentType="text ...
- 多个表单数据提交下的serialize()应用
在实际开发场景中,难免遇到需要多个表单的数据传递问题. 之所以要进行多表单的数据传递是因为可以进行数据分组,便于数据的维护. 这个时候,出于不依赖jquery的考虑,有一个原生js函数来解决这个问题无 ...
- django(7)modelform操作及验证、ajax操作普通表单数据提交、文件上传、富文本框基本使用
一.modelForm操作及验证 1.获取数据库数据,界面展示数据并且获取前端提交的数据,并动态显示select框中的数据 views.py from django.shortcuts import ...
- SSM项目实现连接两个mysql数据库
最近做项目需要用到另一个数据库的内容,多方查找终于实现了功能. 我们都知道,在SSM框架中,我们在applicationContext.xml配置文件中添加数据源就可以实现数据库增删改查,但是只能连接 ...
- PHP的两种表单数据提交方式
1 通过隐藏表单提交 //通过隐藏表单提交 if ($_POST['action'] == 'register'){ echo '你提交了数据'; exit(); } ?> <!DOCTY ...
- asp.net 表单数据提交,常见方式与错误总结
在ASP中,我们通常把表单提交到另外一个页面(接受数据页面).但是在ASP.NET中,服务端表单通常都是提交到本页面的,如果我设置 form1.action="test.aspx" ...
- 解决表单GET提交后台数据乱码问题
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/ForeverCjl/article/details/36180933 在页面上提交数据到s ...
随机推荐
- ui设计未来前景怎么样?ui设计这个行业怎么样?
千锋UI设计师培训不仅有正常的培训课程,还为学员提供了UI+产品经理周末提升班,目的是为了给那些有基础的UI设计师提高能力.今天要为大家说的是一位千锋UI设计师的故事. 大家好,我是千锋UI设计培训部 ...
- linux web服务器及LAMP动态网站平台搭建
(vim补:)vim另存为:x,x w 目标文件路径vim批量删除x:x,x d Web服务:基于B/S架构的web通信服务端:支持HTTP协议的网页提供程序客户端:按标记规范显示网页的浏览器程序客户 ...
- 嵌入式Linux引导过程之1.2——Xloader的XLOADER_ENTRY
根据上文中获得的线索,本文分析init.S中的XLOADER_ENTRY. 在init.S中,定义了好多与平台相关的寄存器地址宏以及好多其他函数,我们在用到的时候再回过头来分析,这里,我们只看其中的一 ...
- VS2005 添加onTimer定时器
SetTimer(1,300,NULL); void CchangeDisplayDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调 ...
- cmder默认的命令提示符λ改成$
新版的cmder(2016.11.3测试)单纯修改init.bat或以前的方法都试过了不行,下面是我自己找到的方法.亲测可行. cmder\vendor\clink.lua文件中第41行中{lamb} ...
- R语言︱文件读入、读出一些方法罗列(批量xlsx文件、数据库、文本txt、文件夹)
笔者寄语:小规模的读取数据的方法较为简单并且多样,但是,批量读取目前看到有以下几种方法:xlsx包.RODBC包.批量转化成csv后读入. R语言中还有一些其他较为普遍的读入,比如代码包,R文件,工作 ...
- freemarker报错之十五
1.错误描述 六月 04, 2014 11:04:03 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...
- linux下自动加载设备驱动程序模块
假设你的设备驱动程序为:yourdrivername.ko 1 cp yourdrivername.ko /lib/modules/"version"/kernel/driver ...
- Struts 有哪些常用标签库
Struts 有哪些常用标签库 1.html标签库 2.bean标签库 3.logic标签库
- 配置WebLogic的详细步骤
配置WebLogic的详细步骤 1.安装好WebLogic后,进入配置阶段,点击"Getting started with WebLogic Server 10.3.6" 2.进入 ...