get请求乱码情况

编写一个RegistServlet处理用户的Get请求数据

View Code

运行结果发现输入中文提交后显示结果为乱码:

jsp页面中    <meta http-equiv="content-type" content="text/html; charset=UTF-8">通知浏览器以utf-8解码

get请求编码方式和post请求提交编码方式不同,get是把数据直接放到url中,例如以上的uname,IE浏览器先对中文进行utf-8编码(一个中文3个字符表示 太长),继而为了缩短字符又用ISO8859-1编码后传递给服务器。服务器的doGet方法中要先进行ISO8859-1解码再utf-8解码才能看到中文。

而post请求则在浏览器端把数据以utf-8的形式存储到http的请求体中,不用通过url传输,继而只要    request.setCharacterEncoding("utf-8");通知request以utf-8形式解码就行,因为request默认以ISO8859-1进行解码的。

使用代码解决乱码问题

 1     public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {2         // 处理响应数据的格式和编码,通知浏览器数据的显示方式3         response.setCharacterEncoding("utf-8");4         response.setContentType("text/html;charset=utf-8");5         // 获取字符输出流对象6         PrintWriter out = response.getWriter();7         // 获取请求参数8         String name = request.getParameter("uname");9         String address = request.getParameter("address");
10         // 获取ISO8859-1的原始数据
11         byte [] bs = name.getBytes("ISO8859-1");      //内部编码字节流,其实中文字符经过utf-8编码后的字节 都是英文可以表示的,只是                                           //ISO8859-1显示数据以一个字节一个字节显示,而utf-8以几个字节一起表示
12         name = new String(bs,"UTF-8");
13         bs = address.getBytes("ISO8859-1");
14         address = new String(bs,"UTF-8");
15         // 输出数据
16         out.println("name="+name);
17         out.println("<br/>");
18         out.println("address="+address);
19     }

如果使用以上的代码解决GET乱码每一个请求参数都需要重新的解码太繁琐,因此可以直接使用服务器通知浏览器以指定的方式进行编码字符数据。

使用URIEnoding方式解决GET乱码问题

1 <Connector port="8080" protocol="HTTP/1.1"
2                connectionTimeout="20000"
3                redirectPort="8443"
4                URIEncoding="utf-8"/>

URIEncoding主要指定的是%E5%8D%A1%E5%8D%A1的数据的解码方式,如果没有指定那么默认是ISO8859-1,如果指定那么采用指定的码表进行解码。因此服务器端就没有必要使用两个中编码方式进行转码了。

注意:在实际的生产环境中我们代码的乱码问题不可能以来服务器帮助我们解决,因此推荐使用第一个转码方式。后期可以直接实现一个乱码的过滤器实现处理乱码的问题。

spring mvc学习(28):get乱码解决相关推荐

  1. Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)...

    Spring MVC 学习总结(九)--Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务) 目录 一.JSON 1.1.概要 1.2.使用ModelAndView ...

  2. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解

    Spring MVC 学习总结(二)--控制器定义与@RequestMapping详解 目录 一.控制器定义 1.1.实现接口Controller定义控制器 1.2.使用注解@Controller定义 ...

  3. Spring MVC 学习总结(一)——MVC概要与环境配置 转载自【张果】博客

    Spring MVC 学习总结(一)--MVC概要与环境配置 目录 一.MVC概要 二.Spring MVC介绍 三.第一个Spring MVC 项目:Hello World 3.1.通过Maven新 ...

  4. Spring MVC学习(8)—HandlerInterceptor处理器拦截器机制全解

    基于最新Spring 5.x,详细介绍了Spring MVC的HandlerInterceptor处理器拦截器机制,以及它的一系列拦截方法. 本次我们来学习Sring MVC的HandlerInter ...

  5. Spring MVC 学习笔记 对locale和theme的支持

    Spring MVC 学习笔记 对locale和theme的支持 Locale Spring MVC缺省使用AcceptHeaderLocaleResolver来根据request header中的 ...

  6. Spring MVC 学习笔记一 HelloWorld

    Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...

  7. 关于spring mvc时间类型绑定失败解决方法

    关于spring mvc时间类型绑定失败解决方法 前端页面用的easyui,有个日期字段: <input name="sdt" class="easyui-date ...

  8. Spring MVC 学习总结(五)——校验与文件上传 转自 张果 博客;已经编程校验;正确无误;...

    Spring MVC 学习总结(五)--校验与文件上传 目录 一.Spring MVC验证器Validator 1.1.定义验证器 1.2.执行校验 1.3.在UI中添加错误标签 1.4.测试运行 二 ...

  9. Spring MVC学习指南(11-12章总结)

    11:上传文件 将介绍如何在SpringMVC中使用Commons FileUpload和Servlet 3上传文件. 在填写表单的html中,必须将html的enctype属性值设置为multipa ...

  10. spring mvc学习(4):第一个spring mvc项目

    一个Spring MVC的项目如何创建?请看这里. 代码编辑器:Intellij IDEA 请提前在电脑上配置好自己的tomcat! 该文属于小白教程,适合初学者. 1 创建Spring MVC项目 ...

最新文章

  1. 【重磅】谷歌2021博士奖研金完整名单出炉,13个方向共75人获奖
  2. JavaEE 的基本实现
  3. 新品发布、降价普惠、拥抱开源、出海全球化 | 杭州云栖企业数字化转型峰会上的那些关键词
  4. golang编译工具LiteIDE的调试使用方法(F5)
  5. 去除android或者iOS系统默认的一些样式总结
  6. Xpath定位方法深入探讨及元素定位失败常见情况
  7. android项目中导入actionbarsherlock 需要注意的地方
  8. Ubuntu 14.04 配置iptables防火墙
  9. diskgenius分区linux选哪项,DiskGenius和和傲梅分区助手哪个好 无损C盘扩容选谁
  10. 图像检索代码python_图像检索系列——利用深度学习实现以图搜图
  11. 大道至简,CAN 诊断的本质,脱离cdd 和dbc ,纯手造轮子
  12. Win Server 2003搭建Sql注入环境
  13. android8 fat分区,MTK 6577+Android EMMC分区布局
  14. 九存支持 2018全球存储半导体大会暨全球闪存技术峰会
  15. Uniapp微信小程序视频全屏播放功能极简实现法
  16. netstat -ano|findstr
  17. 【C++编程语言】之string容器 基本概念 构造函数 赋值 拼接 查找 替换比较 插入 删除 子串获取
  18. 香港服务器 微信支付,如何给微信开通香港钱包(WeChat Pay HK)
  19. SpringBoot学习之路---简单记录整合SpringSecurity实现登录认证授权
  20. Elasticsearch专栏-1.为什么引入es

热门文章

  1. 项目中通用的顶部标题和返回的TitleBar
  2. C++中,引用作为函数参数
  3. 判断浏览器版本语句大全
  4. 学习,学习javascript
  5. 微信开发者工具 wxmi修改模版颜色_十款高效好用的在线网页工具,提升你的办公效率...
  6. java customerservlet_顾客管理系统java+servlet
  7. mybatis 多租户saas_彻底理解微商城多租户Saas架构设计
  8. vscode 默认初始化_Visual Studio Code(vscode)使用介绍
  9. 12306订票助手java_12306订票助手
  10. Android 基础—— 对Context的理解与使用技巧