- 浏览: 592414 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (199)
- 纯java (22)
- 中间件 (1)
- java线程 (1)
- webwork (10)
- HTML/CSS (11)
- struts2 (10)
- mysql (14)
- Linux (8)
- 字符编码和转换 (1)
- WebService (1)
- web (21)
- javascript (33)
- ajax (5)
- 随便写写 (3)
- svn (0)
- eclipse使用技巧 (10)
- Ant (1)
- 互联网发展方向 (1)
- Jquery (12)
- 视频 (2)
- MD5 (1)
- 项目经验总结 (1)
- Oracle (2)
- Netbeans (1)
- Apache/Tomcat (4)
- springside (1)
- hibernate (6)
- SpringSecurity (0)
- java与文件 (1)
- CKEditor (4)
- JSON (3)
- 笔试题 (0)
- 应用部署 (1)
- 杂七杂八 (1)
- android (1)
- jQuery UI (1)
- XML相关技术 (1)
- HTML5 (1)
- CSS3 (0)
- 正则表达式 (1)
- http协议 (3)
- 算法 (5)
- 互联网知识 (1)
最新评论
-
hp321:
我现在遇到一个开发自定义按钮的问题,想请教下你:问题如下:举例 ...
Ckeditor 如何在源码模式下添加可以显现的按钮 -
make1828:
javascript跨域解决方案(一) -
huxianwen:
问题是, ckeditor编辑器在源码模式并不能插入任何代码呀 ...
Ckeditor 如何在源码模式下添加可以显现的按钮 -
nidonglin1986:
虽然解决了问题,但是原因说的不是很明白啊。中文跟HTML标志 ...
struts2的标签在JS中的使用 中文乱码 -
ldw1986hf123:
[*]
JVM工作原理
环境:
apache-tomcat-6.0.24.zip
jdk1.6.0_16
WindosXP 简体中文版
Netbeans6.8
目标:
解决Servlet接收到JSP传递的参数后乱码问题,乱码发生在Servlet一方。
JSP向Serlvet传递参数有两种方式,一种是GET方式,另一种是POST方式,为了解决乱码问题,必须对这两种方式工作原理有个深刻理解才行。
这里先写一个简单的JSP(工程所有的源代码文件编码均为GBK),里面有两种提交参数的方式:
<%@page contentType="text/html" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>页面提交中文测试!</h1>
<h2>GET方式</h2>
<a href="/testweb/TestServlet?param=中文">GET方式提交中文测试</a>
<h2>POST方式</h2>
<form action="/testweb/TestServlet" method="post">
<input type="text" name="param" value="中文"/>
<button type="submit" name="提交中文参数测试" value="提交中文参数测试"/>
</form>
</body>
</html>
然后定义一个Servlet接收提交的参数。
这里强调一点,在此使用的tomcat没有经过任何的修改与配置。
当页面通过两种方式请求Servlet的时候,参数的编码原本为GBK,在通过HTTP服务将请求发送出去的时候,会将参数重新按照ISO-8859-1编码后发送。因此,不管GET或POST方式,Servlet接收到的参数数据的编码均为ISO-8859-1,必须重新转码为GBK,才能正确显示中文参数。
1、GET方式的请求与接收过程
页面中参数“param=中文”的编码原本为GBK,当用GET方式发送参数的时候,参数值会被Web服务器从GBK转码为ISO-8859-1。
Servlet接收到的GET请求参数的编码当然为ISO-8859-1了,对于中文肯定显示不了,因此要将ISO-8859-1转换为GBK就可以正常显示中文了。
String param = request.getParameter("param");
String x = new String(param.getBytes("ISO-8859-1"), "GBK");
System.out.println("GET方式获取的中文参数值:" + x);
2、POST方式请求与接收过程
页面中参数“param=中文”的编码原本为GBK,当点击页面中提交按钮后,参数会以GBK编码格式发送给Servlet,因此Servlet接收参数的时候必须将请求的编码明确设定为GBK,这样才能正确接收中文。
request.setCharacterEncoding("GBK");
String param = request.getParameter("param");
System.out.println("POST方式获取的中文参数值:" + param);
或者,可以按照get方式来接收post的参数:
String param = request.getParameter("param");
String x = new String(param.getBytes("ISO-8859-1"), "GBK");
System.out.println("GET方式获取的中文参数值:" + x);
疑问:为什么在GET方式下不设定请求的编码格式呢?原因是GET方式使用的编码为ISO-8859-1,用GBK、UTF-8等接收效果都是一样的(都是一堆字母和符号),编不编都一个样,如果指定ISO-8859-1编码是多一翻手续,如果指定了非ISO-8859-1编码,是脑子还不清醒,没搞明白这个原理,因此,GET方式就不要指定请求的编码了。
下面看看Servlet的写法:
package jweb.lavasoft;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DealPageParamServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String param = request.getParameter("param");
String x = new String(param.getBytes("ISO-8859-1"), "GBK");
System.out.println("GET方式获取的中文参数值:" + x);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
String param = request.getParameter("param");
System.out.println("POST方式获取的中文参数值:" + param);
}
}
其实,只要搞明白了编码过程,遇到乱码问题就能从容应对了。
常常见到有人遇到乱码了,就开始修改Tocmat的server.xml的配置文件,或者添加过滤器等等,糊里糊涂搞,大多数情况问题都能解决掉,其实也仅仅是个瞎猫逮住个死耗子。
apache-tomcat-6.0.24.zip
jdk1.6.0_16
WindosXP 简体中文版
Netbeans6.8
目标:
解决Servlet接收到JSP传递的参数后乱码问题,乱码发生在Servlet一方。
JSP向Serlvet传递参数有两种方式,一种是GET方式,另一种是POST方式,为了解决乱码问题,必须对这两种方式工作原理有个深刻理解才行。
这里先写一个简单的JSP(工程所有的源代码文件编码均为GBK),里面有两种提交参数的方式:
<%@page contentType="text/html" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>页面提交中文测试!</h1>
<h2>GET方式</h2>
<a href="/testweb/TestServlet?param=中文">GET方式提交中文测试</a>
<h2>POST方式</h2>
<form action="/testweb/TestServlet" method="post">
<input type="text" name="param" value="中文"/>
<button type="submit" name="提交中文参数测试" value="提交中文参数测试"/>
</form>
</body>
</html>
然后定义一个Servlet接收提交的参数。
这里强调一点,在此使用的tomcat没有经过任何的修改与配置。
当页面通过两种方式请求Servlet的时候,参数的编码原本为GBK,在通过HTTP服务将请求发送出去的时候,会将参数重新按照ISO-8859-1编码后发送。因此,不管GET或POST方式,Servlet接收到的参数数据的编码均为ISO-8859-1,必须重新转码为GBK,才能正确显示中文参数。
1、GET方式的请求与接收过程
页面中参数“param=中文”的编码原本为GBK,当用GET方式发送参数的时候,参数值会被Web服务器从GBK转码为ISO-8859-1。
Servlet接收到的GET请求参数的编码当然为ISO-8859-1了,对于中文肯定显示不了,因此要将ISO-8859-1转换为GBK就可以正常显示中文了。
String param = request.getParameter("param");
String x = new String(param.getBytes("ISO-8859-1"), "GBK");
System.out.println("GET方式获取的中文参数值:" + x);
2、POST方式请求与接收过程
页面中参数“param=中文”的编码原本为GBK,当点击页面中提交按钮后,参数会以GBK编码格式发送给Servlet,因此Servlet接收参数的时候必须将请求的编码明确设定为GBK,这样才能正确接收中文。
request.setCharacterEncoding("GBK");
String param = request.getParameter("param");
System.out.println("POST方式获取的中文参数值:" + param);
或者,可以按照get方式来接收post的参数:
String param = request.getParameter("param");
String x = new String(param.getBytes("ISO-8859-1"), "GBK");
System.out.println("GET方式获取的中文参数值:" + x);
疑问:为什么在GET方式下不设定请求的编码格式呢?原因是GET方式使用的编码为ISO-8859-1,用GBK、UTF-8等接收效果都是一样的(都是一堆字母和符号),编不编都一个样,如果指定ISO-8859-1编码是多一翻手续,如果指定了非ISO-8859-1编码,是脑子还不清醒,没搞明白这个原理,因此,GET方式就不要指定请求的编码了。
下面看看Servlet的写法:
package jweb.lavasoft;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DealPageParamServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String param = request.getParameter("param");
String x = new String(param.getBytes("ISO-8859-1"), "GBK");
System.out.println("GET方式获取的中文参数值:" + x);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
String param = request.getParameter("param");
System.out.println("POST方式获取的中文参数值:" + param);
}
}
其实,只要搞明白了编码过程,遇到乱码问题就能从容应对了。
常常见到有人遇到乱码了,就开始修改Tocmat的server.xml的配置文件,或者添加过滤器等等,糊里糊涂搞,大多数情况问题都能解决掉,其实也仅仅是个瞎猫逮住个死耗子。
发表评论
-
Javascript的分层概念
2011-12-07 17:27 1265Javascript如何分层: 我们把 ... -
什么是骆驼命名法
2011-12-05 11:22 2997骆驼式命名法(又称驼峰命名法),正如它的名称Came ... -
UrlRewrite技术的用处
2011-10-18 10:49 911UrlRewrite有什么用处? 1、满足搜索引擎的要求 ... -
request.getSession()、request.getSession(false)和request.getSession(true)的区别
2011-03-24 15:23 1180request.getSession()、request.ge ... -
怎么查看80端口占用情况? 如何查看端口占用情况?
2010-10-17 10:43 1915查看端口占用情况有几种方式: 1. ... -
Jquery Validation 中使用remote做ajax验证时遇到的问题
2010-09-17 10:59 6091需要验证的页面中js代 ... -
HTTPS和HTTP的区别
2010-07-09 10:12 926HTTPS(Secure Hypertext Transf ... -
httpClient请求时乱码问题的解决
2010-07-07 15:56 2193当你使用httpClient发送一个请求时,如果你的请求连接中 ... -
如何获得web请求中的重名参数问题
2010-06-29 17:06 13691.对于一个表单中也许会有重名的参数,好比请求一个地址带了很多 ... -
超级链接,点击后改变字的颜色方法
2010-06-18 16:08 3074可以在<a>中添加: <a onclick= ... -
iframe 调用子页面的js方法
2010-04-26 22:18 3501在主页head面中添加: <script lang ... -
cookie使用工具类
2010-02-04 15:32 11821.可以将对cookie的操作封装到一个工具类,见附件。 2 ... -
cookie与session机制
2010-02-04 15:25 1066(一)cookie和session机制 首先我们来 ... -
web 取颜色的编码值的小工具
2010-01-06 13:59 1537今天发现了一个取桌面上任意颜色的编码的小软件叫Mezer To ... -
如何设定网页过期时间和缓存情况
2009-12-25 11:31 3342在开发过程中遇到一个问题,在列表页上点击修改按钮,然后点击浏览 ... -
页面缓存问题的处理
2009-11-02 15:52 1101http://shop.guoshi.com/cetv/cet ... -
linux下tomcat的的后台访问页面的设置
2009-10-19 14:10 1284在windows下tomcat是有一个后台访问的页面的,在里面 ... -
linux下tomcat的jvm虚拟机内存设置
2009-10-15 17:13 2484tomat默认的虚拟机内存是128M要想自己设置需要修改lin ... -
jsp浏览器访问全部是乱码问题的解决
2009-08-24 16:07 1915今天套用美工设计好的html页面是遇到一个问题,就是将静态ht ... -
定时器的使用
2009-06-23 13:53 1118什么情况下我们会使用 ...
相关推荐
jsp传参 servlet接收中文乱码问题的解决方法.docx
彻底解决Servlet及jsp解决中文乱码问题
下面小编就为大家带来一篇jsp传参 servlet接收中文乱码问题的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
// //解决POST表单的中文乱码问题 // request.setCharacterEncoding("utf-8"); // //接收method属性的值 // String methodName = request.getParameter("method"); // // //根据method属性的值调用相应的方法 // if...
4.7.3 实例:解决服务端程序读取中文请求消息的乱码问题 4.7.4 实例:用AJAX技术发送和接收中文信息 4.7.5 实例:在请求消息头和响应消息头中转输中文 4.8 小结 第5章 JSP技术 5.1 用MyEclipse编写第一个...
V512工作室Java web的ppt ...第18章讲解与Java Web编程有关的主要的字符集和编码方法,还讲解了如何应对Java Web编程中出现的各种乱码问题。 第19章 讲解Java Web应用的目录结构和web.xml文件中主要元素的含义。
4.7.3 实例:解决服务端程序读取中文请求消息的乱码问题 4.7.4 实例:用AJAX技术发送和接收中文信息 4.7.5 实例:在请求消息头和响应消息头中转输中文 4.8 小结 第5章 JSP技术 5.1 用MyEclipse编写第...
配置 CharacterEncodingFilter (filter 标签), 否则你会发现中文乱码. 因为我的 jsp 和 html 文件都是 UTF-8 编码的, 所以我在 param-value 标签中设置了 UTF-8. 估计你使用的是 GB2312 或者 GBK, 立即转到 UTF-8 ...
6.3.1、乱码解决 6.3.2、接收请求参数 6.3.3、显示全部的头信息 6.3.4、角色验证 6.3.5、其他操作 6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1...
6.3.1、乱码解决 6.3.2、接收请求参数 6.3.3、显示全部的头信息 6.3.4、角色验证 6.3.5、其他操作 6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得...
6.3.1、乱码解决 6.3.2、接收请求参数 6.3.3、显示全部的头信息 6.3.4、角色验证 6.3.5、其他操作 6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1...
6.3.1、乱码解决 6.3.2、接收请求参数 6.3.3、显示全部的头信息 6.3.4、角色验证 6.3.5、其他操作 6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得...
6.3.1、乱码解决 6.3.2、接收请求参数 6.3.3、显示全部的头信息 6.3.4、角色验证 6.3.5、其他操作 6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得...
6.3.1、乱码解决 6.3.2、接收请求参数 6.3.3、显示全部的头信息 6.3.4、角色验证 6.3.5、其他操作 6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1...
6.3.1、乱码解决 6.3.2、接收请求参数 6.3.3、显示全部的头信息 6.3.4、角色验证 6.3.5、其他操作 6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得...
6.3.1、乱码解决 6.3.2、接收请求参数 6.3.3、显示全部的头信息 6.3.4、角色验证 6.3.5、其他操作 6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1...
常见问题 读取Properties文件出现中文乱码 182 第9章 Java异常处理与反射机制 183 实例73 运用throws、throw、try与catch 183 实例74 throws声明异常的实例 185 实例75 自定义异常类 187 实例76 使用finally...
14、JSP乱码如何解决? 36 15、session 和 application的区别? 36 16、jsp有哪些内置对象?作用分别是什么? 36 17、Jsp有哪些动作?作用分别是什么? 37 18、JSP中动态INCLUDE与静态INCLUDE的区别? 37 19、JSP和...
先中后英,本着以解决问题为主的想法,练习英文还是先放在一边吧,首先应该在中文网页中查询,还不行的话,搜索英文的吧,最近的尚学堂课程中会带大家阅读英文的书籍。有很多东西就像一层窗户纸,远看灰蒙蒙怪唬人...