网站建设
  简约型网页设计套餐998
  实惠型网站建设套餐2580
  综合型网站制作套餐4980
  网站改版与网站维护
  行业网站建设方案
  大型网站建设解决方案
  企业网站建设流程
  帝网科技网站设计与网站制作
建站FAQ
·网站空间问题解答
·企业邮箱问题解答
 
酷站欣赏
·房产酷站(379)
·综合门户(8 9)
·建筑装饰(603)
·手机通讯(354)
·生活购物(376)
·医疗保健(199)
·文化摄影(602)
·休闲体育(399)
>>更多酷站欣赏
网站优化
·Google(谷歌)优化   ·百度(BaiDu)优化
·雅虎(Yahoo)优化    ·Alexa排名优化   
·Google AdSense   ·DMOZ目录提交  
建站知识
·网站建设知识·网站名词解释·网站运营知识
·网络营销知识·搜索引擎知识·实用技术文摘
网站推广
百度网站推广 google网站推广
搜狐网站推广 网易网站推广
新浪网站推广   雅虎网站推广
  您当前位置: 当前位置:帝网科技 >> web开发 >> JSP专栏 >> 浏览文章
 
 
jsp教程:深入浅出URL编码
作者:佚名 来源:帝网科技 日期:2010年01月07日 点击数:


  虽然是一个老鸟了,在论坛里看到这个关于编码的帖子时,还是会学习到很多知识,俗语云:温故而知新,所以转贴过来以飨读者。

  一、问题:

  编码问题是JAVA初学者在web开发过程中经常会遇到问题,网上也有大量相关的文章介绍,但其中很多文章并没有对URL中使用了中文等非ASCII的字符造成服务器后台程序解析出现乱码的问题作出准确的解释和说明。本文将详细介绍由于在URL中使用了中文等非ASCII的字符造成乱码的问题。

  1、在URL中中文字符通常出现在以下两个地方:

  (1)、Query String中的参数值,比如http://search.china.alibaba.com/search/offer_search.htm?keywords =中国

  (2)、servlet path,比如:http://search.china.alibaba.com/selloffer/ 中国.html

  2、出现乱码问题的原因主要是以下几方面:

  (1)、浏览器:我们的客户端(浏览器)本身并没有遵循URI编码的规范(http://www.w3.org/International/O-URL-code.html )。

  (2)、Servlet服务器:Servlet服务器的没有正确配置。

  (3)、开发人员并不了解Servlet的规范和API的含义。

  二、基础知识:

  1、一个http请求经过的几个环节:

  浏览器(ie firefox)【get/post】------------>Servlet服务器------------------------------->浏览器显示

  编码 解码成unicode,然后将显示的内容编码 解码

  (1) 浏览器把URL(以及post提交的内容)经过编码后发送给服务器。

  (2) 这里的Servlet服务器实际上指的是由Servlet服务器提供的servlet实现ServletRequestWrapper,不同应用服务器的 servlet实现不同,这些servlet的实现把这些内容解码转换为unicode,处理完毕后,然后再把结果(即网页)编码返回给浏览器。

  (3) 浏览器按照指定的编码显示该网页。

  当对字符串进行编码和解码的时候都涉及到字符集,通常使用的字符集为ISO8859-1、GBK、UTF-8、UNICODE。

  2、URL的组成:

  域名:端口/contextPath/servletPath/pathInfo?queryString

  说明:

  1、ContextPath是在Servlet服务器的配置文件中指定的。

  对于weblogic:

  contextPath是在应用的weblogic.xml中配置。

  /

  对于tomcat:

  contextPath是在server.xml中配置。

  

  对于jboos:

  contextPath是在应用的jboss-web.xml中配置。

  

  /

  

  2、ServletPath是在应用的web.xml中配置。

  

  Example

  /example/*

  

  2、Servlet API

  我们使用以下servlet API获得URL的值及参数。

  request.getParameter("name"); // 获得queryString的参数值(来自于get和post),其值经过Servlet服务器URL Decode过的

  request.getPathInfo(); // 注意:pathinfo返回的字符串是经过Servlet服务器URL Decode过的。

  requestURI = request.getRequestURI(); // 内容为:contextPath/servletPath/pathinfo 浏览器提交过来的原始数据,未被Servlet服务器URL Decode过。

  3、开发人员必须清楚的servlet规范:

  (1) HttpServletRequest.setCharacterEncoding()方法 仅仅只适用于设置post提交的request body的编码而不是设置get方法提交的queryString的编码。该方法告诉应用服务器应该采用什么编码解析post传过来的内容。很多文章并没有说明这一点。

  (2) HttpServletRequest.getPathInfo()返回的结果是由Servlet服务器解码(decode)过的。

  (3) HttpServletRequest.getRequestURI()返回的字符串没有被Servlet服务器decoded过。

  (4) POST提交的数据是作为request body的一部分。

  (5) 网页的Http头中ContentType("text/html; charset=GBK")的作用:

  (a) 告诉浏览器网页中数据是什么编码;

  (b) 表单提交时,通常浏览器会根据ContentType指定的charset对表单中的数据编码,然后发送给服务器的。

  这里需要注意的是:这里所说的ContentType是指http头的ContentType,而不是在网页中meta中的ContentType。

  相关文章
 
·如何建立JSP操作以提高数据库访问效率
·servlet 生成静态HTML的方法
·使用JSP实现简易的SQL报表
·浅析Servlet和Jsp中的多国语言显示
·JSP/Servlet/JSF:自定义标签的另类体
·使用JSP+javascript打造二级级联下
·实例:JSP结合XML+XSLT将输出转换HTML
·JSP教程:JSP页面跳转的实战规则
·关于JSP中的offsetparent
·JSP中errorPage设置方法
·JSP用bean获取各种参数
·JSP基础知识教程
·在Eclipse中部署Tomcat,并运行JSP
·jsp教程:深入浅出URL编码
·JSP技术优缺点深入分析(2)
·Jsp环境下ajax乱码问题的解决方法
·JSP技术优缺点深入分析(1)
·jsp上传组件smartupload介绍
·JSP中文字符乱码处理的2种方法
·jsp入门:Jsp运行原理
 
 

公司环境 | 合作伙伴 | 人才招聘 | 付款方式 | 关于我们

地址:广州市天河区中山大道中120号D805 电话:020-82529556 传真:020-82529556
广州帝网网络科技有限公司 版权所有 粤ICP备08119341号