关于AJAX
现用传统的代码实现ajax
JSP页面 register.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 'register.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">
-->
</head>
<script type="text/javascript">
var xmlHttpRequest;
//创建 xmlHttpRequest对象
function createXmlHttpRequest(){
if(window.XMLHttpRequest){
//非 IE
xmlHttpRequest=new XMLHttpRequest();
}else{
xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
}
}
function showMsg(){
// 取得 输入的 用户名值
var username=document.getElementById("username").value;
createXmlHttpRequest();
//传参数 初始化xmlHttpRequest组件
xmlHttpRequest.open("POST","registerAction?username="+username);
//设置回调函数
xmlHttpRequest.onreadystatechange=showMsgCallback;
//发送请求
xmlHttpRequest.send(null);
}
//回调函数 每次状态改变都会调这个函数
function showMsgCallback(){
if(xmlHttpRequest.readyState==4){
if(xmlHttpRequest.status==200){
//得到服务器 应答字符串
var text=xmlHttpRequest.responseText;
if(text=="false"){
document.getElementById("msg").innerHTML="此用户已被注册";
}else{
document.getElementById("msg").innerHTML="可以注册";
}
}else if(xmlHttpRequest.status==404){
alert("请求的资源不存在 ");
}
}
}
// 0 -- 未初始化
// 1 -- 初始化
// 2 -- 发送请求
// 3 -- 开始接受结果
// 4 -- 接受结果完毕
// 200 -- ok
// 404 -- Not found(没有找到资源)
// 500 -- 服务器出错
// xmlHttpRequest属性
// onreadystatechange 设置回调函数(状态改变一次调用一次 )
// readyState 组件的状态信息 (0 1 2 3 4)
// status 服务器应答状态码 (200 404 500)
// responseText 得到服务器应答字符串
// xmlHttpRequest方法
// open(methodType,url,boolean) 初始化
// send(null) 发送请求
</script>
<body>
用户名:<input type="text" name="username" id="username"><button onclick="showMsg()">检查是否可用</button><span id="msg"></span></br>
密 码:<input type="password" name="password" id="password"></br>
<input type="submit" value="注册">
</body>
</html>
Servlet : RegisterAction.java
package com.org;
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 RegisterAction extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
//得到前台页面输入的用户名
String username = request.getParameter("username");
PrintWriter out = response.getWriter();
//此处没有查询数据库 直接固定数据
if(username.equals("zhangsan")){
out.print("false"); //不可以注册
}else{
out.print("true"); //可以注册
}
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
浙公网安备 33010602011771号