`
weiryoung
  • 浏览: 3450 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

js与servlet之间传值问题及中文乱码问题的解决

    博客分类:
  • Ajax
 
阅读更多
在这里,假设读者了解基本的ajax技术或更多。我仅仅阐述一个现象,一个解决方法;原因、原理,同样不清楚……

   我们先从简单的着手,servlet传值到JSP页面js脚本中,利用脚本将相关值显示在页面。解决这个方向(servlet——javascript)的中文乱码问题很简单。只需要在servlet中,添加一个编码设置:
response.setContentType("text/html;charset=UTF-8");

而且JSP页面编码方式可以随意设定,GBK、GB2312、UTF-8,当然ISO-8859-1是不行的,至少你要在页面显示中文。

  从js脚本传中文到servlet,问题因xmlHttp对象open()方法中,传值方式(GET、POST)不同,而分为两种情况:

在介绍这个问题之前,先将两种传值方式区别展示一下:

假设传递值“软件工程”,变量名为“selcol”。
1、 GET方法:
  function selectCol(){
       createXMLHttpRequest();
       var selcol = "软件工程";
       var url = "/emp/FindSpecial?selcol=" + selcol;
       xmlHttp.onreadystatechange = handleStateChange;
       xmlHttp.open("GET",url,true);
       xmlHttp.send(null);
   }
2、POST方法:  
function selectCol(){
       createXMLHttpRequest();
       var selcol = "selcol=软件工程";
       var url = "/emp/FindSpecial";
       xmlHttp.onreadystatechange = handleStateChange;
       xmlHttp.open("POST",url,true);
           xmlHttpxmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
       xmlHttp.send(selcol);
   }
   如果使用GET方式传递,那么我们在servlet拿值的时候,以如下方式转编码:
String selcol = new String(request.getParameter("selcol").getBytes("ISO-8859-1"), "GBK");

   转GBK、GB2312都行,转UTF-8不行!
   这个时候也许你会很奇怪的发现,这两个语句竟然同时出现:
   response.setContentType("text/html;charset=UTF-8");
   String selcol = new String(request.getParameter("selcol").getBytes("ISO-8859-1"), "GBK");
   个人是这样理解的:第一句仅保证,从此servlet传递出去的数据编码方式为UTF-8;而后者则是将传递进来的数据转化成GBK编码的数据。方便与辨别和处理。


如果使用POST方式传递,那么我们在servlet拿值的时候,同上,只是将编码转为UTF-8,而这个时候,GBK和GB2312不行!

   String selcol = new String(request.getParameter("selcol").getBytes ("ISO-8859-1"), "UTF-8");


分享到:
评论

相关推荐

    ajax与Servlet,传值Demo

    3. **Ajax与Servlet传值中文乱码问题** - **前端处理**:在发送Ajax请求时,设置请求头Content-Type为"application/x-www-form-urlencoded; charset=UTF-8",确保数据编码为UTF-8。 - **后端处理**:在Servlet中,...

    jQuery Ajax传值到Servlet出现乱码问题的解决方法

    总的来说,解决Ajax传值到Servlet的乱码问题需要确保每个环节的编码设置一致,从JSP页面到Ajax请求,再到Servlet的接收和响应。只有这样,才能保证数据在整个传输过程中不发生乱码。记得在排查问题时,逐步检查每个...

    js url传值中文乱码之解决之道

    在使用JavaScript进行URL传值时,中文乱码是一个常见的问题。这主要是由于JavaScript在对URL进行编码时,使用的字符集编码规则可能与服务器端的解码规则不一致,导致中文字符无法正确解析。为了解决这个问题,我们...

    j2ee中文乱码问题终极解决之道

    3. JSP与Java代码的传值:在Servlet或Bean中处理JSP提交的数据时,如果未正确处理编码,可能出现乱码。 4. 数据库读取数据:数据库的编码与Java应用的编码不匹配,读取数据时会出现乱码。 针对这些场景,有以下几种...

    jquery的ajax()函数传值中文乱码解决方法介绍

    在使用jQuery的ajax()函数进行数据传输时,中文乱码问题常常困扰着开发者。这个问题主要出现在数据发送到服务器时,由于编码格式不一致导致的字符乱码。以下是一些解决此问题的方法: 方法一:使用`encodeURI()`...

    解决url中文乱码.doc

    在Java Web开发中,URL中文乱码问题是一个常见的困扰,主要出现在传递含有中文字符的参数时。本案例中,我们将探讨如何解决这个问题,涉及到的主要知识点包括URL编码、字符集转换以及在Java Servlet、JSP和Struts2...

    java 页面url传值中文乱码的解决方法

    Java 页面URL传值中文乱码问题通常出现在前端Ajax请求中,当URL参数包含中文字符时,服务器端通过`request.getParameter()`获取参数时,可能会出现乱码现象。这是因为HTTP协议默认使用ISO-8859-1编码,而中文字符...

    java前后台(含数据库)乱码大综合

    本文将针对Struts2文件下载乱码、Ajax中文参数乱码、Servlet响应乱码、JSP页面间传值乱码以及数据库乱码等场景进行深入探讨。 首先,Struts2文件下载时的中文文件名乱码问题,可以通过以下两个步骤解决。在设置...

    上传文件fileupload+解决enctype= multipart/form-data无法传递其他参数

    确保正确设置服务器、数据库、应用程序等的字符编码(如UTF-8),以避免乱码问题。 7. **处理流程**:当用户提交包含文件的表单时,服务器端使用Commons Fileupload解析请求,获取每个部分的数据,然后对文件部分...

    利用Ajax实现在脚本里传值实例介绍

    设置字符编码为"UTF-8",防止中文乱码问题。通过`getWriter()`方法获取到`PrintWriter`对象,用来输出响应内容。最后,使用`flush()`和`close()`方法将输出内容发送给客户端并关闭流。 这个实例展示了一个基本的...

    JAVA框架面试题汇总.docx

    处理 POST 请求中文乱码问题,可以在 web.xml 中配置 CharacterEncodingFilter,设置 encoding 参数为 "utf-8"。GET 请求的乱码问题可以通过修改 Tomcat 配置文件,设置 Connector 的 URIEncoding 为 "utf-8",或者...

    javaWEB项目答辩.docx

    ,以避免中文乱码。 七、JSP 页面元素构成 JSP 页面元素构成包括静态内容、指令、代码块、Html 注释和 JSP 注释。静态内容就是 JSP 页面中的 Html 标签、Css、JavaScript 代码。指令用于控制整个 JSP 页面的信息...

Global site tag (gtag.js) - Google Analytics