`
Willam2004
  • 浏览: 88007 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jquery与Jetty交互中关于Get和Post的Ajax提交对于中文参数的处理(

 
阅读更多
在Web开发中,对于js与服务器的操作一般就是Get和Post两种操作。使用JQuery的ajax请求,我们一般会用到两种Get和Post,对于中文参数乱码的问题,之前网上大部分的解决都是JQuery的content-type设置为:application/x-www-form-urlencoded; charset=UTF-8,新版的jquery1.8.2已经默认就是这个,所以不需要再进行更改。
关于content-type的参数的解释:
When sending data to the server, use this content type. Default is "application/x-www-form-urlencoded; charset=UTF-8", which is fine for most cases. If you explicitly pass in a content-type to $.ajax(), then it'll always be sent to the server (even if no data is sent). If no charset is specified, data will be transmitted to the server using the server's default charset; you must decode this appropriately on the server side.

那么会将数据按照UTF-8的编码传给Server端。那么对于jetty是如何进行处理的呢?

引用

Jetty 7 get URI queryString 编码默认使用 UTF-8 编码,可以通过 request.setAttribute(“org.eclipse.jetty.server.Request.queryEncoding”,”GBK”) 设定查询参数的编码,如果不设定则默认读取系统属性 -Dorg.eclipse.jetty.util.URI.charset=GBK 的编码,如果系统属性也没有设定,则默认为 UTF-8 。
       POST 参数默认使用 Content-type 中的 Charset 编码,如果 Charset 没有,则默认使用 UTF-8 编码,当然可以在使用之前使用 request.set CharacterEncoding 设定编码。


对于Post请求,会使用Servlet的request.setCharsetEncoding的进行解码处理; 而如果是Get请求,那么将使用服务器的URI.Encoding指定的编码进行处理。

举例:产生中文乱码的情况:
代码:

$.ajax({
   url:"some.php",
   data:{"param":param},
   dataType:"json",
   type:"Get"
});


服务器:Jetty,-Dorg.eclipse.jetty.util.URI.charset=GBK
结果:产生中文参数乱码
原因:
js的ajax请求中,data参数会使用utf-8编码,而get请求又会使用GBK进行解码,导致乱码存在。
改进方案:
1.一种是js提交使用Post方式,在servlet端增加request.setCharsetEncoding("UTF-8"),让传入和编码的参数保持一致。
2. 使用url的queryString的方式进行传递,即更改前台的转码:

$.ajax({
   url:"some.php?param="+param,
   dataType:"json",
   type:"Get"
});

这样的请求也都会使用jetty服务器的org.eclipse.jetty.util.URI.charset的编码来处理。因为都是GBK编码和解码,所以就不存在乱码的问题。
分享到:
评论

相关推荐

    ajax异步提交、无刷新验证转json需要用到的jar的集合

    在现代Web开发中,AJAX(Asynchronous JavaScript and XML)技术扮演着至关重要的角色,它使得网页可以在不刷新整个页面的情况下与服务器进行交互,提升了用户体验。JSON(JavaScript Object Notation)是数据交换的...

    jquery和servlet-api jar包

    Ajax允许在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容,这对于创建动态和交互性强的Web应用至关重要。使用jQuery的`.ajax()`或`.getJSON()`方法,我们可以轻松地发起异步请求到Servlet,Servlet接收...

    springboot+ajax示例

    SpringBoot与Ajax是现代Web开发中的两个重要技术,它们结合使用可以实现前后端的高效协作。SpringBoot简化了Spring框架的配置,提供了快速构建独立应用的能力,而Ajax则实现了页面的无刷新更新,提升了用户体验。 ...

    利Android AQuery中ajax访问SSH搭建的后台Java Web服务器

    在Android开发中,为了实现应用程序与远程服务器的交互,开发者经常使用异步技术来更新UI,提高用户体验。本文将深入探讨如何利用Android的AQuery库结合Ajax技术来访问由SSH搭建的后台Java Web服务器,从而实现数据...

    demojQueryAjax.zip

    在本示例中,"demojQueryAjax.zip" 文件聚焦于使用 jQuery、Ajax 技术与 Spring Boot 后端进行基本的数据交互。这是一个常见的前端与后端通信场景,用于实现 CURD(创建、读取、更新、删除)操作。以下是关于这些...

    基于JSP+Servlet+BootStrap+Jquery的图书管理系统.zip

    在图书管理系统中,Jquery用于优化用户交互,如使用AJAX实现无刷新页面更新,提高用户体验。例如,用户在搜索框输入关键词时,可以使用Jquery异步发送请求,实时获取匹配的图书信息,而无需刷新整个页面。 **项目...

    jquery访问servlet并返回数据到页面的方法

    在POST请求中,该Servlet会调用doGet()方法,这意味着GET和POST请求的处理逻辑是一样的。文章中还提到了如何解决中文乱码问题的两种方法。第一种方法是通过客户端对数据进行两次encodeURI编码,服务端则通过new ...

    基于springboot+ajax创建小区物业管理系统.zip

    - **jQuery库**:虽然可以使用原生JavaScript实现Ajax,但使用jQuery可以简化代码,提供更丰富的API,如$.ajax()、$.get()、$.post()等。 3. **数据库设计** - **关系型数据库**:在物业管理系统中,可能使用...

    java web开发实战经典源码(1-17)

    5. **会话管理与安全**:在Web应用中,会话管理对于跟踪用户状态至关重要。源码可能涵盖HttpSession的使用,以及如何实现基于cookie的身份验证和授权。 6. **Ajax与前端交互**:Ajax(Asynchronous JavaScript and ...

    web Java开发示例

    在本示例中,你可能会看到一个或多个Servlet类,它们处理HTTP请求,如GET和POST,并返回相应的HTTP响应。 接着,我们有JavaServer Pages (JSP)技术,它是Java Web应用中的视图层。JSP允许开发者将HTML、CSS和...

    java_bs笔试大全集锦

    前端技术中,JavaScript用于实现页面动态效果和用户交互,而Ajax(异步JavaScript和XML)使页面能在不刷新的情况下与服务器交换数据。熟悉DOM操作、jQuery库和XMLHttpRequest对象是基本技能。 **10. CSS与HTML** ...

    java后台+easyui完整curd

    在CURD操作中,EasyUI的表格组件可以用于显示数据库中的数据,表单组件用于输入和编辑数据,而按钮则触发AJAX请求,与后台进行交互。 3. **数据库操作**:Java后台通常使用JDBC或者ORM框架如Hibernate、MyBatis来...

    WebQQ.zip_54M_java webqq

    4. **HTTP协议**:理解HTTP请求和响应的流程,包括GET和POST方法,请求头和响应头的构造,这对于排查网络通信错误非常重要。 5. **Ajax异步通信**:现代Web应用常常使用Ajax进行页面局部更新,如果WebQQ的登录过程...

    用servlet的商品购物系统

    在这个项目中,Model代表数据模型,负责存储和处理商品信息;View是视图,展示给用户看到的页面;Controller是控制器,即Servlet,它接收请求,调用Model进行处理,然后更新View。 3. **前端界面**:描述提到有...

    网络硬盘java源码

    12. **前端界面**:如果包含Web界面,那么HTML、CSS和JavaScript(可能使用jQuery或React等库)将用于构建用户友好的交互界面,与后端通过Ajax进行通信。 通过深入研究这个"网络硬盘java源码",我们可以学习到如何...

    JSP 聊天室

    4. **JavaScript/jQuery**:前端交互通常由JavaScript或jQuery库来处理,用于处理用户输入、发送AJAX请求、动态更新DOM等。 5. **Servlet**:JSP与服务器的交互可能通过Servlet进行,Servlet负责处理请求、存储和...

    JavaWeb学习资料

    JavaWeb是Java技术在Web应用开发中的应用,涵盖了从服务器端编程到客户端交互的各种技术和工具。这份"JavaWeb学习资料"包含的文件很可能是为了帮助初学者或进阶者全面理解这一领域的核心概念和实践技能。以下是根据...

    Java Web程序开发范例宝典(源码)(下集)

    在这些源码中,你可能会看到如何创建和配置Servlet,处理GET和POST请求,以及如何使用doGet和doPost方法。 2. **JSP(JavaServer Pages)**:JSP是Servlet的另一种形式,它允许开发者在HTML页面中嵌入Java代码,...

    web网站文档

    JQuery是一个轻量级、高性能的JavaScript库,简化了DOM操作、事件处理、动画制作和Ajax交互。主要特点有: 1. 简化的DOM操作:如$("#id")选择元素,$.fn.extend()扩展插件等,使得JavaScript代码更加简洁。 2. 事件...

Global site tag (gtag.js) - Google Analytics