`
点点与麦兜
  • 浏览: 9751 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JSP的AJAX异步交互(Servlet)

    博客分类:
  • AJAX
阅读更多
WEB应用中在表单验证时AJAX起到了很大的作用,特别是对用户名的验证。

JSP页面:


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<input type="text" id="text"/>
	<input type="button" id="ok" value="测试"/>
</body>
<script type="text/javascript">
	function ajaxFunction() {
		var xmlHttp;
		try {
			xmlHttp = new XMLHttpRequest();
		} catch (e) {
			try {
				xmlHttp = new ActiveXObject("Msxm12.XMLHTTP");

			} catch (e) {
				try {
					xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
				}
			}
		}
		return xmlHttp;
	}
	window.onload = function()
	{
		document.getElementById("ok").onclick = function()
		{	
			// 01 获取xmlhttprequest对象
			var xmlReq = ajaxFunction();
			var infor = document.getElementById("text").value;
			// 02接收服务器响应
			xmlReq.onreadystatechange = function()
			{
				if(xmlReq.readyState ==4 )
					{
						if(xmlReq.status == 200 || xmlReq.status == 304)
							{
								var data = xmlReq.responseText;
									alert(data);
							}
					}
			};
			// 03打开和服务器的连接
			xmlReq.open("post","./MyServlet?timeStamp="+new Date().getTime(),true);
			//post方法需要
			xmlReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			// 04发送数据
			xmlReq.send("inf="+infor);
		};
		
	};
	</script>
</html>

xmlReq的onreadyStateChange事件是在readyState属性发生改变时触发的,readyState的值表示了当前请求的状态,在事件处理程序中可以根据这个值来进行不同的处理。
xmlReq.readyState一共有5个值:
0 (未初始化)
           对象已建立,但是尚未初始化(尚未调用open方法)
1 (初始化)
           对象已建立,尚未调用send方法
2 (发送数据)
           send方法已调用,但是当前的状态及http头未知
3 (数据传送中)
           已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,
4 (完成)
           数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据

xmlReq.status == 200表示执行成功
xmlReq.status == 304表示文件没有变化
一般指判断是否等于200就OK了

在这里表单提交的方式是post
以post方式提交的话,必须加上一句代码
xmlReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

一共有4步:

     1.获取xmlhttprequest对象
function ajaxFunction() {
		var xmlHttp;
		try {
			xmlHttp = new XMLHttpRequest();
		} catch (e) {
			try {
				xmlHttp = new ActiveXObject("Msxm12.XMLHTTP");

			} catch (e) {
				try {
					xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
				}
			}
		}
		return xmlHttp;
	}

2.接收服务器响应
    
xmlReq.onreadystatechange = function()
			{
				if(xmlReq.readyState ==4 )
					{
						if(xmlReq.status == 200 || xmlReq.status == 304)
							{
								var data = xmlReq.responseText;
									alert(data);
							}
					}
			};

3.打开和服务器连接,open方法一个有三个值,第一个值表示提交的方式是get还是post.
第二个值表示,提交给谁处理,是一个路径。第三个值表示是否异步请求,true为异步。
    
xmlReq.open("post","./MyServlet?timeStamp="+new Date().getTime(),true);

4.发送数据
 
xmlReq.send("inf="+infor);


Servlet:
  
package com.lxf.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request,
	    HttpServletResponse response) throws ServletException, IOException {
	PrintWriter out = response.getWriter();
	String text = request.getParameter("inf");
	if (text.equals("admin")) {
	    out.println("error");
	    
	} else {
	    out.println(text);
	}
    }

}

  • 大小: 16.3 KB
  • 大小: 15.9 KB
6
2
分享到:
评论
6 楼 点点与麦兜 2013-04-19  
archy123 写道
如果只是少部分使用ajax,写原生ajax也不是不可以。
但是要是大量使用,这还不累死!!

是啊,用JQ写代码就少许多了。
5 楼 archy123 2013-04-19  
如果只是少部分使用ajax,写原生ajax也不是不可以。
但是要是大量使用,这还不累死!!
4 楼 田梦桦 2013-04-18  
我没有作者那样的钻技术劲,自从会有了jquery的ajax,在看原生的就感觉头晕眼花!
3 楼 77tt77 2013-04-18  
最原始的ajax
2 楼 点点与麦兜 2013-04-17  
z276356445t 写道
写得不错,了解了原生态的ajax, 可以再去学习jquery的ajax,可以减少你的很多代码.

多谢提醒!!
1 楼 z276356445t 2013-04-17  
写得不错,了解了原生态的ajax, 可以再去学习jquery的ajax,可以减少你的很多代码.

相关推荐

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

    【基于jsp+servlet+Ajax异步登陆模拟web项目】是一个典型的Web开发实例,它整合了三种核心技术:JavaServer Pages(JSP)、Servlet以及Asynchronous JavaScript and XML(Ajax)。这个项目的核心目的是实现用户登录...

    jsp+ajax+servlet+jdbc案例

    通过这个案例,开发者可以深入理解JSP、AJAX、Servlet和JDBC之间的协同工作原理,为后续学习更高级的Web框架如Spring MVC或Struts打下坚实基础。同时,这也是一个实际操作的练习,帮助开发者提高动手能力和问题解决...

    JSP+Ajax+Servlet 自动完成类似谷歌百度搜索

    **正文** 本项目是关于构建一个使用JSP、Ajax和Servlet技术实现的自动完成搜索功能,类似于谷歌或百度搜索引擎...这个项目不仅展示了JSP、Ajax和Servlet的综合应用,还强调了与数据库的交互以及前端与后端的通信方式。

    JSP+Servlet+AJAX的dao设计模式

    **JSP+Servlet+AJAX DAO设计模式详解** 在Web开发中,DAO(Data Access Object)...通过分析和学习这些代码,你可以更好地理解JSP、Servlet、AJAX和DAO设计模式如何协同工作,为Web应用程序提供高效的数据交互功能。

    jsp ajax servlet 分页制作

    本示例主要展示了如何使用JSP、AJAX以及Servlet实现动态的分页功能。在Web开发中,分页是一种常见的用户界面设计,它能够帮助用户更有效地浏览大量数据,而不会一次性加载所有内容导致页面加载缓慢或资源消耗过大。...

    基于JSP+JavaBean+Servlet+Ajax+Mysql的验证码 增删查改完整例子

    在IT领域,构建Web应用程序是常见的任务之一,而本示例提供了一个基于JSP、JavaBean、Servlet、Ajax以及Mysql的完整应用实例,主要涵盖了数据的增删查改(CRUD)操作,并且利用Ajax实现了异步的验证码验证功能。...

    AJAX+servlet+jsp用户注册

    AJAX通过JavaScript异步地向服务器发送请求,并在后台处理响应,使得用户界面保持交互性,提高用户体验。在这个项目中,当用户填写完注册信息并点击注册按钮时,AJAX会发送一个包含这些信息的HTTP请求到Servlet,而...

    servlet+mysql+jsp+ajax 注册 登陆 查询 修改 的简单demo

    Ajax,即Asynchronous JavaScript and XML,是一种创建异步Web应用的技术,允许后台与服务器进行通信而不影响用户对页面的交互。在登录或注册过程中,Ajax可以实现无刷新验证,提高用户体验。例如,当用户输入用户名...

    Servlet+jsp+AJax的分页及增删改查

    总结来说,Servlet处理业务逻辑和数据库交互,JSP用于生成动态页面,而Ajax则实现了页面的无刷新更新,提高了用户体验。这个示例项目"Servlet+jsp+AJax的分页及增删改查"提供了一个学习和实践这些技术的平台,有助于...

    ajax在jsp、struts、servlet、webwork中的应用

    ### AJAX在JSP、Struts、Servlet、WebWork中的应用 #### 一、引言 随着Web技术的发展,用户对网站交互性和响应速度的要求越来越高。AJAX(Asynchronous JavaScript and XML)作为一种新兴的技术,能够在不重新加载...

    jsp+servlet+ajax实现登录

    在IT行业中,构建Web应用程序是常见的任务之一,而"jsp+servlet+ajax实现登录"的案例则是一个典型的前后端交互示例。这个案例利用了JavaServer Pages (JSP)、Servlet和Asynchronous JavaScript and XML (AJAX)的技术...

    简单的Ajax聊天室样例(servlet+jsp)

    【Ajax聊天室】是一个基于Java Web技术实现的简单交互式应用,主要利用了Servlet、JSP和Ajax技术。这个小例子展示了如何通过Ajax实现在不刷新整个页面的情况下更新内容,提供了一个基本的在线聊天功能。 1. **...

    AJAX+servlet实例入门

    AJAX+servlet实例入门 AJAX+servlet实例入门是指通过结合AJAX技术和Servlet实现的Web应用程序。...通过这个实例,开发者可以学习如何使用AJAX和Servlet来实现异步交互、响应速度快、复杂UI的成功处理等功能。

    使用jsp+servlet+ajax技术

    在IT行业中,Web开发是至关重要的领域,而`jsp`(JavaServer Pages)、`servlet`和`ajax`(Asynchronous JavaScript and XML)是构建动态交互式Web应用的关键技术。以下是对这些技术的详细说明: 1. **JSP(Java...

    Ajax+Jsp+mysql+servlet实现验证注册以及省市联动

    在本文中,我们将深入探讨如何使用Ajax、JSP、MySQL和Servlet技术来实现一个功能完善的用户注册验证系统,以及在该系统中实现省市联动的效果。这对于JavaWeb开发初学者和Ajax爱好者来说,是一个非常实用的学习案例。...

    Java+servlet+jsp页面ajax请求

    通过以上步骤,我们可以在Java Servlet和JSP页面中有效地实现AJAX请求,实现页面的无刷新更新,提升用户的交互体验。在实际开发中,还可以结合现代前端框架如Vue.js、React.js等,进一步优化AJAX请求的处理和页面...

    Mysql + jsp +javabean+ jquery +ajax+servlet等的例子综合

    【标题】"Mysql + jsp +javabean+ jquery +ajax+servlet等的例子综合"是一个涵盖多种技术的Web开发实战项目,旨在帮助开发者理解如何将这些技术有效地整合在一起,以构建动态、交互性强的Web应用程序。在这个项目中...

    ajax 动态加载 jsp 和servlet

    总结来说,Ajax动态加载结合JSP和Servlet,可以实现高效、流畅的用户交互,减少页面刷新带来的延迟感,提升Web应用的性能和用户体验。在实际开发中,理解并掌握这一技术对提升Web应用的质量至关重要。

    jsp+servlet+Ajax 购物车

    在整个过程中,JSP负责用户界面展示,Servlet处理业务逻辑和数据交互,Ajax确保了交互的流畅性。这种架构使得用户在添加或修改购物车内容时能立即看到反馈,提高了系统的响应速度和用户体验。 此外,购物车系统还...

Global site tag (gtag.js) - Google Analytics