使用Ajax的异步登陆

使用Ajax的异步登陆

1.其实大家也经常遇到这样的情况,进行注册时,当光标放到第二个输入框时,会出现已被注册或使用,或者是可以注册的字样。页面不用跳转,直接可以返回数据。

2.当点击免费发送短信的按钮,发送到手机上的验证码。页面也不用跳转。

以上两种功能,均可以用Ajax来完成

下面就用Ajax来实现这个功能

1.Ajax的原理: Ajax的原理就是:通过javascript的方式,将前台数据通过xmlhttp对象传递到后台,

后台在接收到请求后,将需要的结果,再传回到前台,这样就可以实现不需要页面的转发,

数据实现来回传递,从而实现页面无刷新。 基于这个原理,我想到使用Ajax传输登录的信息,包括错误信息,功能很强大,保证绝对的用户友好型。

2.使用Ajax异步提交登录可以实现功能:可以提示用户名错误,可以提示用户名正确但是密码不正确...等等一切错误信息。

项目简介:

 jsp+mysql+servlet

DAO层(数据库连接层)

CustomerDaoImo.java

package com.ajax.dao;

import java.sql.SQLException;

import com.ajax.entity.Customer;

public class CustomerDaoImo  extends JdbcConnection {
	public Customer selectByName(String custname){
		Customer cust=null;
		String sql="select * from customer where custname= ?";
		try {
			getconnection();
			psmt=conn.prepareStatement(sql);
			psmt.setString(1, custname);
			rs=psmt.executeQuery();
			if(rs.next()){
			cust=new Customer(rs.getString(1), rs.getString(2), rs.getInt(3), rs.getString(4));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("发生错误");
			e.printStackTrace();
		}finally{
			closeAll();
		}
		return cust;
	}

}

JdbcConnection.java

package com.ajax.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class JdbcConnection {
	private final static String  CLS="com.mysql.jdbc.Driver";
	private final static String  URL="jdbc:mysql://localhost:3306/books";
	private final static String USER="root";
	private final static String PWD="122198";
	public static Connection conn=null;
	public static PreparedStatement psmt=null;
	public static ResultSet rs=null;
	public static void getconnection(){
		try {
			Class.forName(CLS);
			conn=DriverManager.getConnection(URL,USER,PWD);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
	public static void closeAll(){

			try {
				if(rs!=null){
				rs.close();
				}
				if(psmt!=null){
					psmt.close();
				}
				if(conn!=null){
					conn.close();
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

	}

}

Bean层(实体类)

package com.ajax.entity;

public class Customer {
	private String custname;
	private String pwd;
	private int age;
	private String address;
	public String getCustname() {
		return custname;
	}
	public void setCustname(String custname) {
		this.custname = custname;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public Customer(String custname, String pwd, int age, String address) {
		super();
		this.custname = custname;
		this.pwd = pwd;
		this.age = age;
		this.address = address;
	}

<span style="color:#ff0000;">}
</span>

servlet层(控制层)

AJax提交的页面

package com.ajax.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;

import com.ajax.dao.CustomerDaoImo;
import com.ajax.entity.Customer;

public class RegisterServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {

		System.out.println("nihjao");
		PrintWriter out=response.getWriter();
		CustomerDaoImo dao=new CustomerDaoImo();
		System.out.println("值"+request.getParameter("custname"));
		String a=	request.getParameter("custname");
		Customer c=dao.selectByName(a);
		System.out.println("cuowu");
		boolean passed=(c==null);
		response.setContentType("text/xml");
		response.setHeader("Cache-Control", "no-cache");
		<span style="color:#ff0000;">//账号已被注册,请重新输入</span>
		String message="The custname already be registered";
		if(passed){
			<span style="color:#ff0000;">//可以注册</span>
			message="You have entered a valid custname.";
		}
		out.write("<response>");
		out.write("<passed>"+Boolean.toString(passed)+"</passed>");
		out.write("<message>"+message+"</message>");
		out.write("</response>");
		out.close();
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {

	}

}

View层(视图)

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>My JSP 'index.jsp' starting page</title>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
		<script type="text/javascript"> <span style="color:#ff0000;"> <!--异步登陆!--></span>
	var xmlHttp;
	function createXMLHttpRequest(){
		if(window.ActiveXObject){
		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}else if(window.XMLHttpRequest){
		xmlHttp=new XMLHttpRequest();
	}
}
	function validate(){
	 createXMLHttpRequest();
	 var name=document.getElementById("custname");
	 var url="registerajax?custname="+escape(name.value);
	// alert("地址"+url);
	 xmlHttp.open("GET",url,true);
	 xmlHttp.onreadystatechange=callback;
	 xmlHttp.send(null);
	}
	function callback(){
		if(xmlHttp.readyState==4){
		//	alert(xmlHttp.status);
			if(xmlHttp.status==200){
		   var mes=xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;
		    alert(mes);
		   var val=xmlHttp.responseXML.getElementsByTagName("passed")[0].firstChild.data;
		 setMessage(mes,val);
			}
		}
	}
	function setMessage(message,isValid){
	//alert(message);
	var messageArea=document.getElementById("custnameerror");
	var fontColor="red";
	  if(isValid=="true"){
	   fontColor="green";
	  }
	  messageArea.innerHTML="<font  color="+fontColor+">"+message+"</font>";
	}
</script>
	</head>

	<body>
		<form action="registera" method="post">
			<table>
			   <tr>
			     <td> Your custname:</td>
			     <td>
			      <input type="text" name="custname" onchange="validate()">
			    <font id="custnameerror"> </font>
			      </td>

			   </tr>
			  <tr>
			    <td>  Your password:</td>
			    <td><input type="password" name="pwd"></td>
			  </tr>
			   <tr>
			    <td>  Your age:</td>
			    <td><input type="text" name="address"></td>
			  </tr>
			  <tr>
			  <td > <input type="submit" value="Register"></td>

			  </tr>
			</table>

		</form>
	</body>
</html>

最后别忘了配置参数web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>RegisterServlet</servlet-name>
    <servlet-class>com.ajax.servlet.RegisterServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>RegisterServlet</servlet-name>
    <url-pattern>/registerajax</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

最后项目运行结果图展示:

                               
 可以被注册

                   该账号已被注册

下面是项目源码,附带数据库。http://pan.baidu.com/s/1i5yHzBf

时间: 2024-11-10 12:59:22

使用Ajax的异步登陆的相关文章

Ajax+PHP+MySQL 登陆示例

PHP是一门很好的语言,可以很方便的开发web应用程序,下面介绍一下PHP如何通过AJAX方式实现登录功能: 1 login.php 登录界面中,javascript脚本用ajax方式异步请求dologin.php,dologin.php负责用户信息验证(包括验证码,php生成验证码可以自行搜索).登录界面的代码如下: 1 <?php session_start();?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi

用AJAX实现页面登陆以及注册用户名验证

AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX 是一种用于创建快速动态网页的技术.其核心是 JavaScript 对象 XMLHttpRequest.该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请求的技术.简而言之,XMLHttpRequest使您可以使用 JavaScript 向服务器提出请求并处理响应,而不阻塞用户. 通过在后台与

.net mvc Ajax.BeginForm 异步提交表单

Ajax.BeginForm异步表单用validform验证插件...... 之前找了一个jquery的验证插件validform,对此插件很满意,但是这个插件对<input type="button">按钮不感冒(检测不到这个按钮的onclick事件),只检测<input type="submit">的提交事件. 于是乎想到mvc 有一个异步表单Ajax.BeginForm,经测试可用.记录下来以便查阅 <script src=&qu

struts2+ajax实现异步验证

由于老师布置作业的需要,在添加管理员的时候,要实现验证添加的管理员的用户名是否在数据库中已经存在,然后再客户端给用户一个提示.我首先想到的就是利用ajax实现异步验证技术,由于利用的ssh框架,所以在这要对struts2和ajax进行整合,由于我还没把ajax的一些知识总结出来,所以在这也不提了,有关ajax的详细内容将会在以后的博客中写出来.现在我们就以我做的这个添加管理员,验证管理员的用户名是否存在来说一下这个struts2+ajax实现异步验证技术. 首先我们来看一下我们的form表单:

AJAX的来龙去脉(由来)-如果被封装出来的--ajax发送异步请求(四步操作)

<黑马程序员_超全面的JavaWeb视频教程vedio\JavaWeb视频教程_day23_ajax> \JavaWeb视频教程_day23_ajax\day23ajax_avi\14.打包ajax生成小工具.avi;  有介绍: 个人理解:就是封装了 XMLHttpRequest 的请求方法:演变而成我们常用的 ajax: =====原始的请求方式: ajax发送异步请求(四步操作) 1. 第一步(得到XMLHttpRequest) * ajax其实只需要学习一个对象:XMLHttpRequ

MVC 5.0(or5.0↓) Ajax.BeginForm 异步上传附件问题,答案是不能的!

MVC 5.0(or5.0↓)  Ajax.BeginForm 异步上传附件问题,答案是不能的! (请注意我这里说的异步!) 来看一下下面这段一步提交file的代码 //前台 .cshtml 文件 <script src="~/jquery.unobtrusive-ajax.js"></script>@using (Ajax.BeginForm("upLoadAsync", "UploadFile", new AjaxOp

ecshop ajax无刷新登陆

<!-- 正文开始 --> < !--{if $user_info}--> <div class="lef_tit_bj">会员登陆</div> < div class="left_conn_bj"> < table width="100%" border="0" cellspacing="0" cellpadding="0&quo

jQuery Ajax(异步改同步)

在实际使用中,我们经常会用的Ajax(异步加载,在不刷新整个网页的前提下对网页部分内容进行更新) 使用时,偶尔会遇上需要从一个接口中得到一个数组和数据对应的id,在另一个接口上再得到数据,最初写法如下: $.get(url_1, function (data) { var dom = []; for (var i = 0; i < data.length; i++) { var item = data[i]; //两个url不一致,根据id查找另一个表 $.get(url_2, function

Ajax 的异步调用和批量修改

AJAX的异步调用的分层 有四个jsp页面,在index.jsp页面上 要在dataDiv出显示调用的的数据回显到此处,可以让showStudent2.jsp页面的数据回调到此处,$("#dataDiv").load(url)加载,注 var data=$("f").serialize()表单数据序列化 1 <script> 2 function go(page) 3 { 4 $("#current").val(page); 5 va