Ajax判断注册用户名重复
使用Ajax判断注册用户名重复:
1.AJAX简介
AJAX是实现web2.0服务中的核心技术,全称为“异步JavaScript和XML技术”(Asynchronous JavaScript and XML);Ajax的核心技术理念在于使用XMLHttpRequest对象发送异步请求。最初为XMLHttpRequest对象提供浏览器支持的是微软公司。AJAX技术的出现,可以说是挽救了传统的B/S结构,并赋与web应用新的生命。如果要我用简单的一句话讲AJAX是什么:我就会说是在b/s结构上给予用户c/s的界面观感。
2.AJAX与传统web的区别:(局部刷新)
传统web页面的服务是基于http协议的,所以它永远也改变不了“请求—响应”的模式。你必须“点”一下,它才能动一下,而且每次都必须刷新整个页面,这也意味着服务器要将所有页面上的数据传送下来,即使你的点击只是需要改变页面上一行十个字的内容。
AJAX代码运行在浏览器和服务器之间,通过编程,你可以让ajax代码仅从服务器上提取需要改变的数据,也只改变页面中需要改变的某一部分:某一个div层、表格中的某一个单元格。用户不会看到页面全部被刷新了。
3.需要使用到的文件(下面都有):
HTML:reg.html(界面,与AJAX代码)
java(servlet):AccountCheckServlet(验证重复)
web.xml配置
AJAX:验证重复用户名
当用户输入注册用户名后,焦点离开第一个输入框,即触发输入框的onBlur事件,这个事件将调用js编写的ajax代码,将用户输入发送给服务器验证,并将服务器返回的结果消息显示在输入框下面的div层上。这个流程将由三部分组成:
Login.html:用户界面;
AccountCheckServlet .java服务器上用来验证用户名的Servlet,返回一个字符串做为验证结果;Js编写的AJAX代码:请送请求,并更新页面;我们先从关键的AJAX代码编写开始:
下面是reg.html文件代码:
(里面使用Ajax)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> //第一步: /*XMLHTTPRequest是AJAX应用中的核心API,它被js调用以向服务器发送请求,并异步接收服务器返回的数据后,更新局部页面。使用AJAX功能时,首先要在js中创建XMLHTTPRequest对象:*/ var request;//异步请求对象 function createXMLHttpRequest() { if (window.ActiveXObject) {//IE浏览器 request = new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) {//FireFox,netscape等等浏览器 request = new XMLHttpRequest(); } else { window.alert("你的浏览器不支持XMLHTTPRequest,将无使用AJAX功能!"); } } /*现在我们有了请求对象,接下来要考虑的是,XMLHTTPRequest对象发送了请求后,服务器返回的结果应如何处理,即AJAX中的回调方法。*/ //回调函数[响应之后执行的函数] function processResult() { if ((request.readyState == 4) && (request.status == 200)) { var str = request.responseText;//获得返回数据 if(str=="true"){ //显示到指定的组件中 document.getElementById("msg").innerHTML ="<span style='color:#00cc00'>该用户名可以使用</span>" ; }else{ //显示到指定的组件中 document.getElementById("msg").innerHTML ="<span style='color:#cc0000'>该用户名已经被注册!</span>" ; } } } //发送请求,绑定回调方法 function sendRequest() { //创建XMLHTTPRequest对象 createXMLHttpRequest(); //绑定回调方法(因为是异步请求,这句代码指示了请求结果返回后,由那个js函数接收处理), request.onreadystatechange = processResult; //获得输入框中的内容 var username = document.getElementById("userName").value; //发送get请求 // request.open("GET", "AccountCheckServlet?username="+username, true); //发送Post请求 request.open("POST", "AccountCheckServlet", true); request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //将userName做为请求参数发送上去 request.send("username=" + username); //request.send(null); } </script> </head> <body> <h2>用户注册</h2> 帐号:<input type="text" id="userN ame" name="userName" onblur="sendRequest()" /> </body> </html>
---------------------------------------------------------------------
//AccountCheckServlet类,请求响应类
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 AccountCheckServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); //System.out.println("收到了请求"+username); PrintWriter out = response.getWriter(); if(username.equals("newer")){//本来要连接数据库查询,这里为了方便便直接定义。 out.write("false"); }else{ out.write("true"); } out.flush(); } }
--------------------------------------------------------------------
当然还有web.xml文件配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>PicValidate</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>AccountCheckServlet</servlet-name> <servlet-class>servlet.AccountCheckServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AccountCheckServlet</servlet-name> <url-pattern>/AccountCheckServlet</url-pattern> </servlet-mapping> </web-app>
相关推荐
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo