表单提交方式由POST改为GET出现乱码的解决

简介: 组合查询功能,原先使用<html:form>缺省是以POST方式提交的,增加了分页功能后,由于要在URL里记住用户提交的查询内容(例如:http://localhost:8080/aims/client/filter.do?name=%E5%BC%A0&address=%E5%8C%97%E4%BA%AC&title=&duty=&departmentCode=10000001&categoryCode=10000002&fieldCode=10000006&genderCode=&identityCode=),所以表单的提交方式要改为GET。

组合查询功能,原先使用<html:form>缺省是以POST方式提交的,增加了分页功能后,由于要在URL里记住用户提交的查询内容(例如:http://localhost:8080/aims/client/filter.do?name=%E5%BC%A0&address=%E5%8C%97%E4%BA%AC&title=&duty=&departmentCode=10000001&categoryCode=10000002&fieldCode=10000006&genderCode=&identityCode=),所以表单的提交方式要改为GET。

只是简单的改为method="GET",但这样一改却让action无法得到正确的输入值,例如用户在姓名条件里输入“张”,在action里用theForm.getName()会得到形如“%A4”的乱码,不仅查询结果是错误的,而且在重新显示的查询表单的姓名栏里也显示出乱码。

我试了很多种转码也没转成原来的值,问了很多朋友,最后的解决方式还是通过转换编码,是把ISO8859-1转为UTF-8,即String name=new String(theForm.getName().getBytes("ISO8859-1"),"UTF-8");,注意我的应用程序里已使用了encoding为UTF-8的Filter。

虽然要加手工转码的代码很不爽,但只在这一处而已,也不碍大事。只是我现在的环境是Tomcat+Mysql,不知道换到其他服务器上会不会重新出现乱码问题,好在这个项目不需要考虑这个问题。

据说Tomcat处理POST和GET的请求时处理编码的方式不太一样,我还看到有篇帖子说要在server.xml的<Connector>里加URIEncoding="GBK"属性,但我试了不起丝毫作用。

本文转自博客园八进制的博客,原文链接:表单提交方式由POST改为GET出现乱码的解决,如需转载请自行联系原博主。

相关文章
|
15小时前
|
存储 资源调度 前端开发
JavaScript 使用axios库发送 post请求给后端, 给定base64格式的字符串数据和一些其他参数, 使用表单方式提交, 并使用onUploadProgress显示进度
使用 Axios 发送包含 Base64 数据和其他参数的 POST 请求时,可以通过 `onUploadProgress` 监听上传进度。由于整个请求体被视为一个单元,所以进度可能不够精确,但可以模拟进度反馈。前端示例代码展示如何创建一个包含 Base64 图片数据和额外参数的 `FormData` 对象,并在上传时更新进度条。后端使用如 Express 和 Multer 可处理 Base64 数据。注意,实际进度可能不如文件上传精确,显示简单加载状态可能更合适。
|
18天前
|
编解码 Java
请求参数中文乱码-POST解决方法
请求参数中文乱码-POST解决方法
|
12月前
POST请求body实现数据以记事本格式保存在服务器
POST请求body实现数据以记事本格式保存在服务器
41 0
|
JavaScript
post方式进行无刷新删除
post方式进行无刷新删除
167 0
|
Java 应用服务中间件 Spring
Get,Post请求中文乱码问题有效解决方法
对于做Java WEB项目同学来说,中文乱码问题是一个经常遇到而又非常头痛的问题,而最容易出现乱码的环节就是在浏览器向服务器发送请求的过程,至于出现乱码的原因不是本文的关注的重点,想了解的朋友可以参考 http://zhaomin819111.blog.163.com/blog/static/10659004200943112950956/ 本文主要介绍如何有效解决web请求中的乱码问题,其实解决方法有很多种,不同的请求类型解决方法也不相同。
1363 0
|
Web App开发 缓存 前端开发
Ajax请求URL后加随机数原理
原文:Ajax请求URL后加随机数原理 例如:   $.ajax({             type: "GET",       url: "login.action?ran="+getRandomNum()   }); 中url后面接了个随机数,是为了欺骗浏览器或代理服务器用的;某些代理服务器会无视 no-cache 之类的标识,对响应结果进行强行缓存;而当url请求不改变的时候,有时候会导致浏览器不向服务器发送请求,而直接取调用缓存中的数据。
1300 0