`
foolsheep
  • 浏览: 5118 次
  • 性别: 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
分享到:
评论

相关推荐

    HTTP 通信测试或者JAVAServlet测试

    在IT行业中,HTTP通信测试和Java Servlet测试是Web应用程序开发中的关键环节,它们确保了客户端与服务器之间的数据传输准确无误。在这个场景中,我们关注的是如何通过HTTP协议进行通信,以及如何使用Java Servlet来...

    js+jsp+servlet实现网页局部刷新

    通过以上步骤,我们可以利用JS、JSP和Servlet来实现页面的局部刷新。这种方法不仅能够提高用户的操作效率,还能有效减少网络流量消耗。在实际应用中,还需要考虑错误处理、安全性等问题,以确保系统的稳定性和可靠性...

    使用ajax和servlet实现网页局部刷新

    在网页开发中,为了提供更好的用户体验,我们常常需要实现页面的局部刷新,而Ajax(Asynchronous JavaScript and XML)和Servlet的结合使用正是实现这一功能的关键技术。本篇将详细讲解如何利用Ajax与Servlet来实现...

    ajax 动态加载 jsp 和servlet

    2. **创建XMLHttpRequest对象**:在JavaScript中创建XMLHttpRequest对象,它是Ajax通信的基础。 3. **打开连接**:使用XMLHttpRequest对象的`open()`方法,指定请求类型(GET或POST)、URL(通常是Servlet的URL)...

    Servlet利用Ajax,JQuery交互Json

    在现代Web开发中,Servlet、Ajax、JQuery和Json是不可或缺的技术组件,它们共同构建了高效、动态的用户界面。让我们深入探讨这些技术及其在实际应用中的交互。 Servlet是Java Web开发中的一个核心部分,它是一种...

    05-使用XMLHttpRequest对象发送和接收XML数据,及乱码问题的解决.pdf

    1. XMLHttpRequest对象的使用:XMLHttpRequest是JavaScript中的一个API,用于在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页。它是一种支持异步通信的互联网技术。通过创建XMLHttpRequest对象,...

    JSP&Servlet&JavaScript&Ajax&jQuery源代码

    这些文件名称列表揭示了一个关于Web开发的教程结构,主要涵盖了JSP(JavaServer Pages)、Servlet、JavaScript、Ajax和jQuery这五个关键的技术。接下来,我们将详细探讨这些技术及其在实际应用中的重要性。 **JSP...

    ajax调用servlet_test_可以运行的例子,是一个完整的工程

    分析这些文件将有助于深入理解Ajax-Servlet通信的细节,如请求参数的传递、响应数据的解析以及错误处理等。 总之,这个示例工程提供了一个实用的学习平台,帮助开发者掌握如何在JDK5.0环境中使用Ajax与Servlet进行...

    Ajax和servlet数据交互小实例

    - **工作原理**:Ajax通过XMLHttpRequest对象与服务器进行通信,发送请求获取数据,并在客户端用JavaScript处理这些数据,更新页面部分区域。 2. **jQuery与Ajax**: - **jQuery简介**:jQuery是一个轻量级的...

    Ajax+servlet实现搜索框智能提示

    在这个"Ajax+servlet实现搜索框智能提示"的主题中,我们将探讨如何利用Ajax技术和Servlet来创建一个实时、动态的搜索框,提供智能的用户输入建议。 首先,让我们了解Ajax的基本原理。Ajax的核心是XMLHttpRequest...

    Ajax+servlet实现登录和图书数据库的增删改查。

    在IT行业中,Web开发是至关重要的领域,Ajax和Servlet...在这个项目中,你将学习到如何利用Ajax进行异步通信,Servlet处理服务器端逻辑,以及如何与数据库进行交互。这将为你在Web开发领域的进一步学习打下坚实的基础。

    AjaxServlet

    这个AjaxServlet示例对于理解Web应用的异步通信和页面局部更新机制非常有帮助。开发者可以通过这个项目学习到如何整合JavaScript、Servlet和JSP,提升用户体验,同时掌握现代Web开发中的关键技能。在实际应用中,...

    Ajax + JSON + Servlet + prototype.js(实现的一个Ajax实例)

    Ajax的核心是利用JavaScript来创建XMLHttpRequest对象,这个对象是浏览器提供的API,允许JavaScript与服务器进行异步数据交换。通过这种方式,用户可以与网页进行交互,而不会打断或等待页面的重新加载。 **JSON** ...

    html+Servlet+ajax实现登录修改

    具体实现上,JavaScript(通常配合jQuery库)在前端编写,负责监听表单提交事件,阻止默认的表单提交行为,然后使用XMLHttpRequest对象或fetch API发起AJAX请求。Servlet接收到请求后,进行处理并返回JSON或其他格式...

    javaIDEA新手研究的ajax访问servlet,html获取后台数据

    在实际开发中,我们通常会使用更高级的库和框架,如jQuery、axios或Vue.js来简化Ajax操作,以及Spring MVC或Spring Boot来处理Servlet部分,提高开发效率和代码质量。 通过实践这个项目,你可以深入理解前端与后端...

    jsp/servlet/Ajax实现的猜数游戏

    Ajax的核心是JavaScript,它在浏览器端运行,通过XMLHttpRequest对象与服务器进行异步通信。当用户在页面上输入数字并点击提交按钮时,JavaScript会阻止页面的刷新,而是发送一个Ajax请求到服务器。服务器接收到请求...

    Servlet+Ajax实现智能搜索

    Servlet负责处理服务器端的业务逻辑,而Ajax则在客户端和服务器之间建立异步通信,实现了搜索结果的即时显示,提高了用户的交互体验。理解并掌握这两项技术,对于开发高效、用户体验优秀的Web应用至关重要。通过实践...

    ajax与Servlet,传值Demo

    在Web开发中,Ajax(Asynchronous JavaScript and XML)与Servlet的结合使用,是构建动态、交互性强的网页的重要技术。这个“ajax与Servlet,传值Demo”着重展示了如何利用Ajax实现页面局部更新,同时处理Servlet...

    基于jsp+servlet+Ajax异步登陆模拟web项目

    Ajax使用XMLHttpRequest对象来实现这个功能,它可以在后台与服务器进行通信,用户感知不到页面刷新,提升了交互体验。 在文件名称列表中,我们看到"TestAjax",这可能是一个包含所有Ajax测试代码的文件或者目录。在...

    servlet+ajax模拟百度搜索(含jar包)

    【Servlet+Ajax模拟百度搜索】是一项利用Web技术实现的简易搜索功能,主要涉及Servlet和Ajax技术,不依赖数据库。在本项目中,我们通过Ajax异步请求与Servlet后台交互,模拟百度搜索时用户输入关键词后实时展示建议...

Global site tag (gtag.js) - Google Analytics