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
随机推荐
- web安全之渗透测试
本次渗透测试使用工具列表如下: 漏洞扫描器 (主机/Web) 绿盟RAS漏洞扫描器 商用 端口扫描器 NMAP 开源 网络抓包 Fiddler 开源 暴力破解工具 Hydra 开源 数据库注入工具 S ...
- Python装饰器几个有用又好玩的例子
装饰器是一种巧妙简洁的魔术,类似于Java中的面向切面编程,我们可以再函数执行前.执行后.抛出异常时做一些工作.利用装饰器,我们可以抽象出一些共同的逻辑,简化代码.而简化代码的同时,就是在增加代码鲁棒 ...
- Magento模型与ORM基础
参考网址:http://www.ruiwant.com/magento-for-dev-part-5-magento-models-and-orm-basics.html
- MySQL慢查询mysqlsla
转:http://www.osyunwei.com/archives/7659.html 必须在MySQL服务器上安装mysqlsla 1.mysqlsla是perl编写的脚本,运行mysqlsla需 ...
- 1 时间戳 2 C# 如何生成一个时间戳 3 js 时间加一分钟... 4 js string->date 5 js 取得当天0点 / 23:59:59 时间
var str = 'Jan 23, 2019 10:25:47 AM';var strnow = new Date(str); 时间戳(timestamp),一个能表示一份数据在某个特定时间之前已经 ...
- golang学习笔记 ---面向并发的内存模型
Go语言是基于消息并发模型的集大成者,它将基于CSP模型的并发编程内置到了语言中,通过一个go关键字就可以轻易地启动一个Goroutine,与Erlang不同的是Go语言的Goroutine之间是共享 ...
- MongoDB学习笔记(6)--find
MongoDB 查询文档 MongoDB 查询文档使用 find() 方法. find() 方法以非结构化的方式来显示所有文档. 语法 MongoDB 查询数据的语法格式如下: db.collecti ...
- .NET Core 2.0 Cookie中间件 权限验证
:在ConfigureServices添加Cookie中间件,使用自定义Scheme services.AddAuthentication(options=> { options.Default ...
- 【转】TeXmacs:一个真正“所见即所得”的排版系统
TeXmacs:一个真正“所见即所得”的排版系统 好久没有推荐过自己喜欢的软件了,现在推荐一款我在美国做数学作业的私家法宝:TeXmacs.我恐怕不可能跟以前那么有闲心写个长篇的 TeXmacs 说明 ...
- cucumber_java从入门到精通(5)使用maven创建cucumber_java项目
cucumber java从入门到精通(5)使用maven创建cucumber java项目 前几节我们已经在感性上认识了cucumber的基本功能以及BDD测试的基本流程,我们渐进重构,一步一步的向 ...