IT兄弟连 JavaWeb教程 Servlet表单乱码问题
在使用原生的Servlet进行Web应用开发时经常会遇到一些中文乱码问题,造成乱码问题的原因只有一个:即客户端与服务端的字符编码不一致所导致的。
请求参数乱码问题
服务器端获取客户端传递过来的数据出现乱码的问题(即使用get获取post向服务器发送请求时出现乱码):
get与post请求的乱码处理时不一致的,当get请求时,其传递给服务器的数据时附加在URL地址之后的;而post的请求时,其传递给服务器的数据是作为请求正文传递给服务器。
● post请求的乱码处理:
用户在表单中填写的内容在请求正文中被提交给Servlet。当我们在表单中输入中文是,Servlet的request的编码与客户端不一致,则服务器无法解析,就会出现乱码。解决方法是改变请求正文中的字符编码(对于get请求无效,因为get提交表单的数据在URL中),方法如下:
request.setCharacterEncoding("UTF-8");
● get请求的乱码处理:
在服务器端获取get请求的参数时,可以使用String类的另外一个构造函数,这个构造函数可以指定字符串的编码形式。方法如下:
String username = request.getParameter("username");
username = new String(username.getBytes("ISO-8859-1"),"UTF-8");
get请求乱码问题还可以使用另外一种方法来解决,就是修改Tomcat默认的编码方式,方法如下:
在Tomcat的安装目录下,找到conf文件夹下的server.xml文件并打开,找到其中如下的代码:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
在Connector元素中添加URIEncoding属性,并将属性值修改为UTF-8,详情如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
响应数据乱码问题
在Servlet编程中,经常需要通过response对象将一些信息返回给浏览器给我们的客户端,而我们在服务器端显示的中文,但是响应给客户端浏览器却是乱码。这主要是由于response对象中的方法返回到浏览器的字符串默认使用"ISO-8859-1"字符集进行Unicode字符串到字节数组的转换,由于ISO8859-1字符集中根本就没有包含中文字符,所以Java在进行转换的时候会将无效的字符编码输出给客户端,于是便出现了乱码,为此ServletResponse接口中便定义了setCharaterEncoding、setContentType等方法来指定getWriter方法返回的PrintWriter对象所使用的字符集编码,所以我们在写Servlet程序中,在调用getWriter方法之前设置这些方法的值。我们为了防止乱码,经常将以下两条语句一起写上:
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("UTF-8");
只要编写Servlet文件中含有响应给客户端的信息,那么就要写上这两句话。最好写上第二句话,因为它的优先级高,它的设置结果将覆盖setContentType等方法设置的字符编码集。
IT兄弟连 JavaWeb教程 Servlet表单乱码问题的更多相关文章
- IT兄弟连 JavaWeb教程 Servlet表单数据
很多情况下,需要传递一些信息,从浏览器到Web服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到Web服务器,分别为GET方法和POST方法. 1.GET方法 GET 方法向页面请求发送已编 ...
- IT兄弟连 JavaWeb教程 Servlet
Servlet的定义 Java Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层. 使用Ser ...
- IT兄弟连 HTML5教程 HTML5表单 小结及习题
小结 HTML表单提交的方法有get方法和post方法,get方法的作用是从指定的资源请求数据,post方法的作用是向指定的资源提交要被处理的数据.HTML表单一直都是Web的核心技术之一,有了它我们 ...
- IT兄弟连 HTML5教程 HTML5表单 H5表单提交综合实例
这里我们创建一个填写个人基本信息的表单,使用了表单元素有<input>输入框.<datalist>选项列表.<textarea>文本框,通用的表单输入类型有text ...
- IT兄弟连 HTML5教程 HTML5表单 新增的表单属性3
9 novalidate novalidate是属性规定在提交表单时不应该验证form和input域.novalidate属性适用于的<input>类型有:text.search.url ...
- IT兄弟连 HTML5教程 HTML5表单 新增的表单属性1
HTML5 Input表单为<form>和<input>标签添加了几个新属性,属性如表1. 1 autocomplete属性 autocomplete属性规定form或inp ...
- IT兄弟连 HTML5教程 HTML5表单 多样的输入类型1
HTML5拥有多个新的表单输入类型,这些新特性提供了更好的输入控制和验证.并不是所有的主浏览器都支持新的input类型,不过我们可以在所有的主浏览器中使用它们,即使不被支持,仍然可以显示为常规的文本域 ...
- IT兄弟连 HTML5教程 HTML5表单 HTML5新增表单元素
HTML5有一些新的表单元素:<datalist>.<keygen>.<output>.不是所有的浏览器都支持HTML5新的表单元素,但即使浏览器不支持该表单属性, ...
- IT兄弟连 HTML5教程 HTML5表单 HTML表单设计2
5 隐藏域 隐藏域不会在表单中显示.如果需要在页面之间传递重要数据,则在<input>标签中设置type属性值为“hidden”建立一个隐藏域.name和value属性是必需的,用来表示 ...
随机推荐
- Adobe Flash builder破解方法
Flash Builder 4 有许多新的特性,可以结合新的功能使用新的Flex 4框架创建出更炫的应用.基于用户的反馈,对以数据中心的开发也进行了优化:对类如配置从服务器返回的数据类型这样的任务,也 ...
- BIOS维修技术
BIOS是电脑中最基础且最重要的程序,为电脑提供最低级且最直接的硬件控制,电脑的原始操作都是依照固化在BIOS里的程序来完成的.因此如果BIOS出现故障将会导致影响电脑的正常工作.BIOS故障有很多, ...
- Alert提示框之后跳转指定页面
<li onclick="closes();">BTC</li> alert跳转到指定页面 <script type="text/javas ...
- CGI的知识点
CGI(Common Gateway Interface)是能让webserver和CGI脚本共同处理客户的请求的协议. 它的协议定义文档是http://www.ietf.org/rfc/rfc387 ...
- MapReduce算法形式四:mapjoin
案例四:mapjoin(对个map共同输入,一个reduce) 这个方法主要解决的是,几个表之间的比较,类似于数据库的内外连接,还有一些左右连接之类的,简而言之就是,A表没有的B表有,B表有的A没有或 ...
- 使用 fetch 代替 ajax(在不支持的浏览器上使用 XHR); This kind of functionality was previously achieved using XMLHttpRequest.
原生 JS Ajax,GET和POST 请求实例代码_javascript技巧_脚本之家 https://www.jb51.net/article/86157.htm 更新时间:2016年06月08日 ...
- gcc 头文件是用户应用程序和函数库之间的桥梁和纽带 功能的真正逻辑实现是以硬件层为基础
gcc GCC, the GNU Compiler Collection - GNU Project - Free Software Foundation (FSF) http://gcc.gnu.o ...
- 创建Material Design风格的Android应用--应用主题
本人全部文章首先公布于个人博客,欢迎关注,地址:http://blog.isming.me 昨天正式公布了android 5,同一时候android developer站点也更新了,添加了创建Mate ...
- 使用a标签下载文件,而不是直接打开,使用属性 download
有的时候,下载的链接文件如果是普通文件类型,如txt,我们下载文件的时候,有的浏览器不会弹出下载框,.而是直接打开了该文件. 针对这种情况,我们只需要在a标签上加上download属性即可显示下载框. ...
- ios很好的开源库
Tim9Liu9/TimLiu-iOS 自己总结的iOS.mac开源项目及库,持续更新.. 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD ...