`
foolsheep
  • 浏览: 5054 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

利用 XMLHttpRequest 在 JS 和 Servlet 间通信

阅读更多

在我的理解中,Ajax 就是在不刷新整个页面的情况下,将从服务器端的数据(从数据库,从xml文件,或者是自己Hard

Code在程序中的字符串等)拿到前端,在html页面上展现出来的一种技术。

那么在整个通讯过程中,会涉及到几点:

 

1.  JS

 

在js中如何去写代码并提交一个请求呢?一般来说,html页面如果有需要提交的数据都会定义一个form,然后

submit这个form, form所对应的action 就是需要采取action的某个页面可以是jsp,可以是asp,当然也可以是servlet. 但

是form并不是唯一的方法。

 

XMLHttpReqeust 对象是用来在后台与服务器交换数据的,所有的现代浏览器(IE7+、Firefox、Chrome、Safari

以及 Opera)都内建了这个对象。

 

 

var xmlHttpRequest = new XMLHttpRequest();

 

在 JS 中,可以用以下代码来发送一个请求(Post 或者 Get )

 

function sendAjaxRequest(url,callback){
	url = "index.do";
	xmlHttpRequest.onreadystatechange = callback;  
  	xmlHttpRequest.open("POST", url, true);  
  	xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
        xmlHttpRequest.send("param=test");
}

 

或者 

 

function sendAjaxRequest(url,callback){
	url = "index.do";
	xmlHttpRequest.onreadystatechange = callback;  
  	xmlHttpRequest.open("GET", url + "?param=test", true);  
  	xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
        xmlHttpRequest.send(null);
}
 

url = "index.do" 在这里,是后台处理请求的一个servlet。

 

open 在这里只是初始化一些参数,比如Method(POST or GET),比如上面提到的url, 最后一个参数是async 参数, 表明是否要异步执行,设为true或者省略都是默认异步处理,这种情况下,通常要指定onreadystatechange的回调函数。

 

send 就是发送一个http请求了,如果是post,那么必须将想要传送的参数或者其它内容放在这里,而如果是Get请

求的话,这里一般就是忽略了的,可以直接设置为null。

 

而 callback就是一个回调函数,当XMLHttpRequest对象的state变化的时候,都会调用这个函数,并根据其实现

的逻辑去处理。

 

回调函数

function callback() {
	if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
		var rt = xmlHttpRequest.responseText;
		// do something with rt
	}
}

 

至于XMLHttpRequest.readyState 和 status 有多少种,可自行google,一般来说,只有当readyState == 4

并且status == 200 的时候才说明整个请求都处理好了,可以去处理返回来的数据(xmlHttpRequest.responseText)。

 

2.  Servlet 

 

我比较笨,所以一直想知道整个过程是怎么处理的,比如xmlHttpRequest.responseText是在哪里写进去的,我

知道是在Servlet写的,但是我又想知道是怎么写进去的,写进去之后又是怎么传回到前台的。

 

       当js发送了一个请求到一个servlet,如index.do(其实这些.do都是自己定义的,在每个web容器都可以自己定义并

进行拦截和解析),那么index.do所对应的servlet就会被触发,每一个请求都会被包装成含有HttpServletRequest 和

HttpServletResponse的对象,那么Request中就包含了你的参数,如上面在js所传的param参数了,而response则

可以写入你打算传回到前端的数据了

 

获取Param参数

 

String param = URLDecoder.decode(request.getParameter("param"),"UTF-8"); 

 

在中间可以做很多你想做的事情,然后再想想什么是你想传回前台的。

 

   设置response的返回值,就是上面xmlHttpRequest中的responseText

 

 

response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("UTF-8");	
String responseText = “返回的值”;
response.getWriter().write(responseText);

 

 

其实整个过程大概就是这样,至于在前端跟后台服务器传送的responseText就可以是多种形式了,可以是纯文本,可以是xml,可以是JSON格式的,各种各样,就看自己想怎么用了

 

 

0
0
分享到:
评论

相关推荐

    Ajax详解.rar

    Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。本系列的作者是一位 Ajax 专家,他演示了这些技术如何协同工作 —— 从总体概述到细节的...

    java面试宝典

    180、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 42 181、四种会话跟踪技术 42 182、Request对象的主要方法 43 183、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出...

    在Ajax应用程序中实现数据交换

    此种方法在性能和可用性方面均体现出了独有的优势,因为这将降低网络通信量,而且WebUI的使用几乎与桌面GUI一样。但是,开发这种用户界面并不简单,因为您必须在客户端上使用JavaScript、在服务器端上使用Java(或

    Ajax基础教程(扫描版)

    本书重点介绍ajax及相关的工具和技术,主要内容包括xmlhttprequest对象及其属性和方法、发送请求和处理响应、构建完备的ajax开发工具、使用jsunit测试javascript、分析javascript调试工具和技术,以及ajax开发模式和...

    千方百计笔试题大全

    180、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 42 181、四种会话跟踪技术 42 182、Request对象的主要方法 43 183、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出...

    整理后java开发全套达内学习笔记(含练习)

    在 printf 里面,输出有5个部分 %[argument_index$][flags][width][.precision]conversion 以“%”开头,[第几个数值$][flags][宽度][.精确度][格式] printf()的引入是为了照顾c语言程序员的感情需要 格式化输出...

    于笑扬java综合知识点总结-必背.pdf

    这些对象可以在 JSP 页面中使用,以访问和操作 servlet 组件。 Forword(请求转发)与 Redirect(重定向) 在 Servlet 中,有两种方式可以实现页面跳转:请求转发和重定向。请求转发是指服务器端将请求转发到另一个...

    java技术架构图汇总.docx

    Ajax架构:Ajax(Asynchronous JavaScript and XML)是一个基于JavaScript的异步通信技术,旨在简化web应用程序的用户体验。Ajax架构主要包括XMLHttpRequest、JavaScript、DOM等几个部分。 Oracle架构:Oracle是一...

    jquery中ajax学习笔记一

    通过 AJAX,JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信。通过这个对象,您JavaScript 可在不重载页面的情况与 Web 服务器交换数据。 jQuery是一种javascript框架,是对javascript...

    ScriptJava-开源

    如果您熟悉 XMLHTTPRequest 对象或 AJAX,那么您可以大致认为这是 AJAX 框架的 Java 实现。 第 1 阶段启用客户端 javascript 和服务器端 Java 程序(Servlet、JSP 等)之间的通信。

Global site tag (gtag.js) - Google Analytics