javaweb中利用ajax实现用户登录时的注册查询

javaweb中利用ajax实现用户登录时的注册查询


使用jar包:commons-lang3-3.3.2.jar;standard.jar,有什么classnotfound应该就是这两个jar包出了问题;

  • 编程中遇到的问题:
  • 1.xmlHttp.readyState中的S没有大写,导致程序没有反应,因为数据判断时始终不对,因此一直输出为空;
  • 2.xmlHttp.status中的t写了三个,导致的结果同上;
    总结顺序:
    1.window加载引发function;2.建立xmlHttp;3;打开POST连接;3.设置请求头和请求体并发送;4.post进行参数判断,并返回判断结果给页面;5.页面得到返回结果进行判断,根据判断设置span的参数值。
    直接上代码:
    ajax3.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function createXmlHttpRequest()
{
	try{
		return new XMLHttpRequest();//大多数浏览器
	}catch (e){
		try{
			return ActvieXObject("Microsoft.XMLHTTP");//5.5及更早版本
		}catch (e){
			try{
				return ActvieXObject("Msxm12.XMLHTTP");//5.5及更早版本
			}catch (e){
				alert("哥们儿,您用的什么浏览器啊?");
				throw e;
			}
		}
	}
}
	window.onload = function() {
		//获取文本框,给它的失去焦点事件注册监听
		var userEle = document.getElementById("usernameEle");
		userEle.oninput =function() {//onblur是文本框失去焦点改变;onchange事件在内容改变(两次内容有可能还是相等的)且失去焦点时触发;
		//onpropertychange事件却是实时触发,即每增加或删除一个字符就会触发,通过js改变也会触发该事件,但是该事件IE专有。 
		//oninput事件是IE之外的大多数浏览器支持的事件,在value改变时触发,实时的,即每增加或删除一个字符就会触发,然而通过js改变value时,却不会触发;
		//1.得到异步对象
		var xmlHttp = createXmlHttpRequest();
		//2.打开连接
		xmlHttp.open("POST","<c:url value='/ValidateUsernameServlet'/>",true);
		//3.设置请求头:Content-Type
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		//4.发送请求,给出请求体
		xmlHttp.send("username="+userEle.value);
		//5.给xmlHttp的onreadystatechange事件注册监听
		xmlHttp.onreadystatechange = function(){
			if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
				//1.获取服务器的响应,判断是否为1
				//是,则获取span,添加内容;“用户名已被注册”
				var span = document.getElementById("errorSpan");
				var text = xmlHttp.responseText;
				
				if(text == "1"){
					//得到span元素
					span.innerHTML = "用户名已被注册";
				}else{
					span.innerHTML = "用户名未被注册";
				}
			}
		};
		};
    };
</script>
</head>
<body>
<h1>演示用户名是否被注册</h1>
<form action = "" method="post">
用户名:<input type="text" name="username" id="usernameEle"/><span id = "errorSpan"></span><br/>
密	码:<input type="password" name="password" /><br/>
<input type = "submit" value = "注册"/>
</form>
</body>
</html>

在这里插入图片描述
ValidateUsernameServlet:

package cn.itcast.web.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/ValidateUsernameServlet")
public class ValidateUsernameServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public ValidateUsernameServlet() {
        super();
    }
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		/*
		 * 1.获取参数username
		 * 2.判断是不是itcast
		 * 3.如果是,响应1
		 * 4.如果不是,响应0
		 */
		System.out.println("已经在运行");
		String username = request.getParameter("username");
		if(username.equalsIgnoreCase("tony")) {
			response.getWriter().print("1");
			System.out.println("1");
		}else {
			response.getWriter().print("0");
			System.out.println("0");
		}
	}
}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值