ajax的原理大家可以看上图
如何获得Ajax对象?
XMLHttpRequest没有标准化,要区分浏览器。
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
//非ie浏览器
xhr = new XMLHttpRequest();
}else{
//ie浏览器
xhr = new ActiveXObject('MicroSoft.XMLHttp');
}
return xhr;
}
下面我把代码贴出来:
1.注册页面regist.jsp
<%@page pageEncoding="utf-8" contentType="text/html;charset=utf-8" %>
<html>
<head>
<style>
.tips{
color:red;
}
</style>
<script type="text/javascript" src="js/my.js"></script>
<script type="text/javascript">
function check_username(){
//获得ajax对象
var xhr = getXhr();
//使用ajax对象发请求
xhr.open('get',
'check_username.do?username='
+$F('username'),true);
xhr.onreadystatechange=function(){
//只有readyState等于4,才能获得
//服务器返回的所有数据。
if(xhr.readyState == 4){
//判断服务器返回的数据是否正确
if(xhr.status == 200){
var txt = xhr.responseText;
$('username_msg').innerHTML = txt;
}else{
$('username_msg').innerHTML = '验证出错';
}
}
};
$('username_msg').innerHTML = '正在验证...';
xhr.send(null);
}
function check_number(){
var xhr = getXhr();
xhr.open('get',
'check_number.do?number='
+ $F('number'),true);
xhr.onreadystatechange=function(){
if(xhr.readyState == 4){
var txt = xhr.responseText;
$('number_msg').innerHTML = txt;
}
};
xhr.send(null);
}
</script>
</head>
<body style="font-size:30px;font-style:italic;">
<form action="regist.do" method="post">
<fieldset>
<legend>注册</legend>
用户名:<input id="username" name="username"
onblur="check_username();"/>
<span class="tips" id="username_msg"></span>
<br/>
真实姓名:<input name="name"/><br/>
验证码:<input name="number" id="number"
onblur="check_number();"/>
<span class="tips" id="number_msg"></span>
<br/>
<img src="checkcode"
onclick="this.src='checkcode?' + Math.random();"/><br/>
<input type="submit" value="提交"/>
</fieldset>
</form>
</body>
</html>
2.获得ajax对象my.js
function $(id){
return document.getElementById(id);
}
function $F(id){
return $(id).value;
}
function getXhr() {
var xhr = null;
if (window.XMLHttpRequest) {
//非ie浏览器
xhr = new XMLHttpRequest();
} else {
//ie浏览器
xhr = new ActiveXObject("MicroSoft.XMLHttp");
}
return xhr;
}
3.servlet验证页面ActionServlet.java
package web;
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;
import javax.servlet.http.HttpSession;
public class ActionServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String uri = request.getRequestURI();
String action = uri.substring(uri.lastIndexOf("/"),
uri.lastIndexOf("."));
if(action.equals("/check_username")){
if(1 == 2){
throw new ServletException("ģ��һ��ϵͳ�쳣");
}
String username =
request.getParameter("username");
if(username.equals("tom")){
out.println("用户名存在");
}else{
out.println("用户名未被注册");
}
}else if(action.equals("/check_number")){
String number1 =
request.getParameter("number");
HttpSession session =
request.getSession();
String number2 =
(String)session.getAttribute("number");
if(number1.equalsIgnoreCase(number2)){
out.println("验证码正确");
}else{
out.println("验证码错误");
}
}
out.close();
}
}
4.画验证码CheckcodeServlet.java
package web;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class CheckcodeServlet extends HttpServlet {
private int width = 80;
private int height = 30;
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 绘图
*/
//step1,创建一个内存映像对象(画布)
BufferedImage image =
new BufferedImage(width,height,
BufferedImage.TYPE_INT_RGB);
//step2,获得画笔
Graphics g = image.getGraphics();
//step3,给笔上一个颜色
Random r = new Random();
g.setColor(new Color(r.nextInt(255),
r.nextInt(255),r.nextInt(255)));
//step4,绘图,先填充背景
g.fillRect(0, 0, width, height);
//step5,绘图,给画笔再设置一个颜色,用来
//绘图
g.setColor(new Color(0,0,0));
g.setFont(new Font(null,Font.BOLD,20));
String number = r.nextInt(99999) + "";
HttpSession session =
request.getSession();
session.setAttribute("number", number);
g.drawString(number, 10, 22);
/*
* 输出
*/
//step1,设置content-type消息头,告诉浏览器
//返回的是一个图片
response.setContentType("image/jpeg");
//step2,获得一个字节输出流
OutputStream ops =
response.getOutputStream();
//step3,将原始图片压缩,然后输出
javax.imageio.ImageIO
.write(image, "jpeg", ops);
ops.close();
}
}
5.配置文件web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>ActionServlet</servlet-name>
<servlet-class>web.ActionServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>checkcodeServlet</servlet-name>
<servlet-class>web.CheckcodeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ActionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>checkcodeServlet</servlet-name>
<url-pattern>/checkcode</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
代码我都贴出来了,只是一个简单的验证,来测试一下:
ajax是一种用来改善用户体验的技术,其实质是利用浏览器提供的一个特殊的对象(XMLHttpRequest对象,一般称之为ajax对象)异步地(当ajax对象向
服务器发请求时,浏览器不会销毁当前页面,用户仍然可以对当前页面做其它的操作)向服务器发送请求。服务器返回的数据不再是一个完整的新的页面,而是部分数据,利用这些数据,更新当前页面。整个过程,页面无刷新,不打断用户的操作。
分享到:
相关推荐
在这个“Ajax的用户名异步验证案例”中,我们将深入探讨如何使用Ajax实现用户注册时的用户名实时验证。 首先,我们关注的是前端部分。在HTML页面中,通常会有一个输入框让用户输入用户名,并且有一个按钮触发验证...
Ajax,即Asynchronous JavaScript and XML,允许我们在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容,提供更流畅的用户体验。 在“jQuery-ajax-用户名异步请求”这个场景中,我们可能是在设计一个...
AJAX实现异步验证 我们在做验证码的时候往往由于要反,验证有时故意加入多的干扰因素,这时验证码显示不很清楚,用户经常输入错误。这样不但要重新刷新页面,导致用户没有看清楚验证码而重填而不是修改,而且如果...
在网页开发中,"简单的Ajax异步验证,局部刷新"是一种常见的交互技术,它使得用户在无需刷新整个页面的情况下能够实时验证输入数据的有效性。这种技术极大地提升了用户体验,因为用户可以立即看到他们的输入是否符合...
本实例中,我们将探讨如何利用Ajax实现异步验证注册用户名是否存在,以避免重复注册的情况。 首先,我们关注的是`ajax.js`文件,这是实现Ajax请求的核心。在JavaScript中,通常会使用`XMLHttpRequest`对象或更现代...
下面将详细解释AJAX异步验证注册用户名的原理、实现方法以及相关的知识点。 1. **AJAX基本概念** AJAX是一种创建动态网页的技术,它通过JavaScript在后台与服务器进行数据交换,无需用户手动刷新页面。这使得Web...
综上所述,"jsp最简单的Ajax应用 java异步验证用户"是一个利用Ajax和JSP实现的交互式用户验证示例,它展示了如何在不刷新页面的情况下,通过JavaScript与服务器通信,实时验证用户输入,从而提升网站的响应速度和...
Ajax的核心是通过JavaScript与服务器进行异步通信,无需刷新整个页面即可获取并更新数据。本篇文章将深入探讨Ajax异步请求的验证,解决初级问题,为初学者提供参考。 一、Ajax的基本概念 Ajax并非一种单一的技术,...
在用户注册场景中,为了提高用户体验,通常会采用AJAX进行异步验证,例如用户名是否已被注册等。这种方式可以在用户输入的过程中或点击按钮时立即向服务器发送请求,从而避免了整个页面的重新加载,并提供了即时反馈...
以上就是关于"Ajax异步注册登录"项目的核心知识点,包括Ajax异步验证、登录注册功能实现、前端页面布局以及后端数据库交互。这个项目为开发者提供了一个实现用户管理的模板,有助于提升Web应用的用户体验。
为了解决这个问题,我们可以利用AJAX(Asynchronous JavaScript and XML)技术实现异步验证,让用户在输入用户名时即时得到反馈,而无需等待整个页面重载。以下将详细讲解如何使用AJAX实现异步验证用户名是否重复。 ...
"php+ajax注册验证"是一个典型的示例,它展示了如何在用户输入时即时验证注册信息,而无需每次提交表单时刷新整个页面。接下来,我们将详细讨论这个主题中的关键知识点。 ### PHP(PHP: Hypertext Preprocessor) ...
**标题解析:** "AJAX实现注册验证的例子" 这个标题表明了我们要探讨的是一个使用AJAX技术来实现用户注册时的实时验证的示例。在网页应用中,AJAX(Asynchronous JavaScript and XML)允许我们在不刷新整个页面的...
综上所述,"ajax注册验证表单"是一个结合了前端JavaScript交互、Ajax技术以及可能的第三方库的综合实例,它展示了如何通过异步方式处理用户注册,实现无刷新的验证反馈,提升了用户体验。在实际开发中,我们还需要...
在本场景中,我们讨论的是利用Ajax技术进行的异步验证,这种方式无需刷新整个页面,就能实时检查用户输入的有效性。 Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,它允许在不重新加载整个...
本篇文章将深入探讨如何使用jQuery、Ajax以及PHP实现异步文件上传,以实现无刷新页面的交互效果。 首先,jQuery是一个轻量级、功能丰富的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互。在...
在这个"Ajax注册验证用户名实例"中,我们将深入探讨如何利用Ajax技术来实现用户在注册时实时验证用户名是否已存在,从而提供更优秀的用户体验。 首先,我们需要一个HTML页面作为用户界面,包含一个输入框让用户输入...
在IT领域,尤其是在Web开发中,异步验证是一种常见的技术,用于提高用户体验。...通过学习这些内容,开发者可以更好地理解和掌握如何使用Ajax进行异步验证,从而提升其Web应用的功能性和用户体验。
总结来说,Ajax实现异步用户名验证功能的核心在于创建异步请求,向服务器端发送用户输入的数据,然后由服务器端返回验证结果,并在客户端页面上显示验证结果。这种方法提高了用户体验,使得用户在填写表单时可以即时...