问题:在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项目表单数据提交到数据库乱码问题的更多相关文章

  1. 【ASP.NET 问题】System.InvalidOperationException: 对象的当前状态使该操作无效 【大量表单数据提交】错误解决

    出现的问题描述: 当页面的数据量比较大时,出现异常,详细信息: System.InvalidOperationException: 对象的当前状态使该操作无效 问题的原因:出现这个异常的原因是因为微软 ...

  2. Java中上传文件和表单数据提交如何保持数据的一致性?

    学生申请学科竞赛活动,表单中有学科竞赛的申报信息和部分附件,需要做到将上传文件和表单数据提交保持一致性. 将上传文件和插入表单数据放到事务汇总去处理,由于表单的数据我们可以控制,但是上传的文档不好控制 ...

  3. SSM获取表单数据插入数据库并返回插入记录的ID值

    以下指示插入操作以及获取记录值的ID的部分操作代码!!! 首先是简单的表单实现 <%@ page language="java" contentType="text ...

  4. 多个表单数据提交下的serialize()应用

    在实际开发场景中,难免遇到需要多个表单的数据传递问题. 之所以要进行多表单的数据传递是因为可以进行数据分组,便于数据的维护. 这个时候,出于不依赖jquery的考虑,有一个原生js函数来解决这个问题无 ...

  5. django(7)modelform操作及验证、ajax操作普通表单数据提交、文件上传、富文本框基本使用

    一.modelForm操作及验证 1.获取数据库数据,界面展示数据并且获取前端提交的数据,并动态显示select框中的数据 views.py from django.shortcuts import ...

  6. SSM项目实现连接两个mysql数据库

    最近做项目需要用到另一个数据库的内容,多方查找终于实现了功能. 我们都知道,在SSM框架中,我们在applicationContext.xml配置文件中添加数据源就可以实现数据库增删改查,但是只能连接 ...

  7. PHP的两种表单数据提交方式

    1 通过隐藏表单提交 //通过隐藏表单提交 if ($_POST['action'] == 'register'){ echo '你提交了数据'; exit(); } ?> <!DOCTY ...

  8. asp.net 表单数据提交,常见方式与错误总结

    在ASP中,我们通常把表单提交到另外一个页面(接受数据页面).但是在ASP.NET中,服务端表单通常都是提交到本页面的,如果我设置 form1.action="test.aspx" ...

  9. 解决表单GET提交后台数据乱码问题

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/ForeverCjl/article/details/36180933     ​在页面上提交数据到s ...

随机推荐

  1. 为什么说DOM操作很慢

    转自http://www.cnblogs.com/yuzhongwusan/articles/5275933.html   一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大 ...

  2. Android线上Bug热修复分析

    针对app线上修复技术,目前有好几种解决方案,开源界往往一个方案会有好几种实现.重复的实现会有造轮子之嫌,但分析解决方案在技术上的探索和衍变,这轮子还是值得去推动的 关于Hot Fix技术 Hot F ...

  3. 小说接入UC浏览器内核技术对话(一)

    质辛@灿岩 质辛跟我们说一下那个删除文件的逻辑吧质辛@灿岩  应该不是删除cache下所有文件吧?质辛@智鹰  提供一下我们的临时文件完整路径给 灿岩吧质辛@智鹰  是负责我们ucsdk的 技术对接灿 ...

  4. FusionCharts 2D环饼图

    1.静态页面 Doughnut.html: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ...

  5. dojo之dojox/data/CsvStore初始化

    dojo之dojox/data/CsvStore初始化 1.var csvStore = new dojox.data.CsvStore({url:"student.csv"}); ...

  6. EDKII Build Process:EDKII项目源码的配置、编译流程[三]

    <EDKII Build Process:EDKII项目源码的配置.编译流程[3]>博文目录: 3. EDKII Build Process(EDKII项目源码的配置.编译流程) -> ...

  7. HighCharts之2D圆环图

    HighCharts之2D圆环图 1.实例源码 Donut.html: <!DOCTYPE html> <html> <head> <meta charset ...

  8. Java生成文件夹

    Java生成文件夹 1.说明 判断文件夹是否存在,如果不存在就创建该文件夹,并打印其路径:如果存在,打印其路径 2.实现源码 /** * @Title:BuildFolder.java * @Pack ...

  9. firewall服务配置

    /* Border styles */ #table-2 thead, #table-2 tr { border-top-width: 1px; border-top-style: solid; bo ...

  10. Web原理

    在日常学代码的过程中,总会多多少少遇到点瓶颈.但是别人又听得懂,这是为什么? 我觉得,就是在原理上都不去思考,为什么这样写?为什么一定要这样写?那到底该怎么写?写完了是怎么运行的? 就以上几个问题,只 ...