EL表达式取值中文再发送请求时会乱码
问题描述:
在网站底部进行评论,点击提交按钮时,后台tomcat报错,通过火狐浏览器的firebug看到发送的POST请求体中,有一个title参数是乱码,
导致该字段超长违反了数据库字段的长度约束:

这个title字段的应该是文章的标题(中文):

tomcat报错信息:
2017-06-15 16:15:50,448 DEBUG [modules.cms.dao.CommentDao.findList] - <== Total: 1
============乱码部分内容===========中央第åä¸å·¡è§
ç»åé西çå§åé¦å·¡
è§&ldquo;å头ç&rdquo;æ åµ
2017-06-15 16:17:12,911 DEBUG [modules.cms.dao.CommentDao.get] - ==> Preparing:
SELECT a.id AS "id", a.category_id AS "category.id", a.content_id AS "contentId", a.title AS "title", a.content AS "content", a.name AS "name",
a.ip AS "ip", a.create_date AS "createDate", a.audit_user_id AS "auditUser.id", a.audit_date AS "auditDate", a.del_flag AS "delFlag"
FROM cms_comment a WHERE a.id = ?
2017-06-15 16:17:12,912 DEBUG [modules.cms.dao.CommentDao.get] - ==> Parameters: 0(String)
2017-06-15 16:17:12,913 DEBUG [modules.cms.dao.CommentDao.get] - <== Total: 0
2017-06-15 16:17:12,917 DEBUG [modules.cms.dao.CommentDao.insert] - ==> Preparing:
INSERT INTO cms_comment( id, category_id, content_id, title, content, name, ip, create_date, audit_user_id, audit_date, del_flag )
VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
2017-06-15 16:17:12,924 DEBUG [modules.cms.dao.CommentDao.insert] - ==>
Parameters: dd82abcfbd4d4176b8400dce7b8a0dd0(String),
106c3f5a9d354d69946304ba1003e85e(String),
9948c62c9ab4491daadccfe23032534b(String), 中央第åä¸å·¡è§
ç»åé西çå§åé¦å·
¡è§&ldquo;å头ç&rdquo;æ åµ(String), 测试评论(String),
小李(String),
0:0:0:0:0:0:0:1(String),
2017-06-15 16:17:12.916(Timestamp),
null,
null,
2(String)
2017-06-15 16:17:13,035 ERROR [500.jsp] -
### Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'title' at row 1
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: INSERT INTO cms_comment( id, category_id, content_id, title, content, name, ip, create_date,
audit_user_id, audit_date, del_flag ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
### Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'title' at row 1
; SQL []; Data truncation: Data too long for column 'title' at row 1; nested exception is com.mysql.jdbc.MysqlDataTruncation:
Data truncation: Data too long for column 'title' at row 1
org.springframework.dao.DataIntegrityViolationException:
### Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'title' at row 1
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL:
INSERT INTO cms_comment(id, category_id, content_id, title, content, name, ip, create_date,
audit_user_id, audit_date, del_flag )
VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
### Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'title' at row 1
; SQL []; Data truncation: Data too long for column 'title' at row 1; nested exception is com.mysql.jdbc.MysqlDataTruncation:
Data truncation: Data too long for column 'title' at row 1
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:102)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:74)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:399)
at com.sun.proxy.$Proxy27.insert(Unknown Source)
通过提示可以看出,执行SQL语句时报字段超长的错误,文章的中文标题在乱码之后,超出了title字段所允许的长度,因为数据库中title字段的长度为255:

解决办法:
打开tomcat的conf目录下的server.xml文件,在Connector标签中添加 URIEncoding="utf-8" 即可:

重启tomcat,再次测试,评论提交成功,也不再乱码了:

附jsp页面中EL表达式取值部分代码:

如果觉得本文对您有帮助,不妨扫描下方微信二维码打赏点,您的鼓励是我前进最大的动力:

EL表达式取值中文再发送请求时会乱码的更多相关文章
- JSP中EL表达式取值问题记录(已解决)
***************************2015-10-28 22:21************************* 问题描述如下: 在当前的jsp页面已经有了如下代码: < ...
- 关于EL表达式取值的问题
EL表达式取值时,如果没有指定作用域,EL表达式会自动按照作用域的大小,从小到大依次去找;比如${s},会自动按照"pageContext,request,session,applicati ...
- 独立的js文件中不能使用EL表达式取值
在独立的js文件中写了一个EL表达式取值,发现没有取到值,原因在于不能在独立的js文件中使用EL表达式,可以在jsp页面定义全局变量,然后在js文件中引用
- EL 表达式 取值将 < 转成 &1t 问题
因为用JeeCMS,JeeCMS后台会存入<p></p> 内容到数据库中 用play框架取后台值的时候 用的EL表达式在前台展示 出现将< 转成 &1t HTML ...
- hibernate查询之后用el表达式取值时遇到的问题
String juniorApprovalUserHql = "select c.id,c.username from UserInfo c left join c.userRole whe ...
- Struts2中EL表达式取值
http://blog.csdn.net/cuihaiyang/article/details/41950141 (写的不错,可以知道为什么struts2可以用El取属性值的问题.正常el从reque ...
- springmvc el表达式取值顺序问题
最近遇到一个问题,两次访问同一个controler, 第二次根据判断条件,明明没有设置model的值,在jsp中通过${data}还是能取到值,最后找到原因是 我为了能够加快响应速度,在session ...
- 在jsp的js和css里面使用EL表达式取值|style里面用$取值
众所周知,如果直接在jsp的js或者css语句块里面写${***}取值的话,程序会不识别这玩意,但是,我们有时候确实需要动态取值,比如,js为了获得对象的某一个值,不方便用js的getElementB ...
- el表达式取值优先级
不同容器中存在同名值时,从作用范围小到大的顺序依次尝试取值:pageContext->request->session->application
随机推荐
- LVS负载均衡之持久性连接介绍(session篇)
在实际生产环境中,往往需要根据业务应用场景来设置lvs的会话超时时间以及防session连接丢失的问题提,如在业务支付环节,如若session丢失会导致重复扣款问题,严重影响到安全性,本小节解将会讲到 ...
- 树莓派进阶之路 (031) -字符问题(1) - GBK汉字编码表(转)
转载:http://blog.sina.com.cn/s/blog_8184e033010109ug.html 基本简介 GB码,全称是GB2312-80<信息交换用汉字编码字符集基本集&g ...
- React(0.13) 组件的组合使用
<html> <head> <title>组件的组合调用</title> <script src="build_0.13/react.m ...
- Android APP通用型拒绝服务、漏洞分析报告
点评:记得曾经有段时间很多SRC平台被刷了大量APP本地拒绝服务漏洞(目前腾讯金刚审计系统已经可检测此类漏洞),移动安全团队发现了一个安卓客户端的通用型拒绝服务漏洞,来看看他们的详细分析吧. 0xr0 ...
- C# WinForm开发系列 - 文章索引
该系列主要整理收集在使用C#开发WinForm应用文章及相关代码, 平时看到大家主要使用C#来开发Asp.Net应用,这方面的文章也特别多,而关于WinForm的文章相对少很多,而自己对WinForm ...
- jQuery.ajax发送image请求格式
1\请求端 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head run ...
- 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密
你真的了解字典(Dictionary)吗? 从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...
- php,perl计算crc
PHP版: <?php echo getCrc32("/var/www/html/resource/koc_data/2013_03/01/1ck65e.koc") ; # ...
- Android lrucache 实现与使用(Android内存优化)
什么是LruCache? LruCache实现原理是什么? 这两个问题其实可以作为一个问题来回答,知道了什么是 LruCache,就只然而然的知道 LruCache 的实现原理:Lru的全称是Leas ...
- Delphi GDI对象之剪切区域
原文链接: http://www.cnblogs.com/pchmonster/archive/2012/07/05/2577627.html 剪切区域(Clipping Regions) Regio ...