ajax action 用户名异步验证

本文介绍了一个结合JSP和Ajax技术实现的简单用户名验证系统。通过Ajax发送异步请求到服务器端JSP页面,检查用户名是否已被使用。文章展示了完整的JSP页面代码和部分后端验证逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 'Ajax.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">
var request = false; 
var flag;  
function createXMLHttpRequest(){ 
   
	try {
			request = new XMLHttpRequest();
		} catch (trymicrosoft) {
			try {
				request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (othermicrosoft) {
				try {
					request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (failed) {
					request = false;
				}
			}
		}
	}

	function getCustomerInfo() {
		createXMLHttpRequest();
		alert(request);
		var phone = document.getElementById("userName").value;
		alert(phone);
		var url = "loginActionloginTest?user.userName="+phone;
		request.open("GET", url, true);
		request.onreadystatechange = updatePage;
		request.send(null);
		document.getElementById("msg").innerHTML = "正在验证……";
	}

	function updatePage() {
		if (request.readyState == 4) {
			if (request.status == 200) {
				var text = request.responseText;// 接收返回内容 
				alert(text);
				if(text=="true"){
				flag = true; //可以提交表单
				document.getElementById("msg").innerHTML = "<font color='green'>恭喜您,该用户名可用!</font>";
				}else{
				 flag = false;//不可以提交表单
				document.getElementById("msg").innerHTML = "<font color='red'>该用户名已被使用,请您重新选择用户名!</font>";
				}
			} else {
				alert("status is " + request.status);
			}
		}

	}
	function checkForm(){   // 对表单判断能否进行提交操作  
        return flag;  
    }  
</script>
  </head>
  
  <body>
   <form action="" method="post" onsubmit="">
   <input type="text" id="userName" name="user.name" onblur="getCustomerInfo()"><span id="msg"></span>
   <input type="submit" value="注册">  
   <input type="reset" value="重置">  
   </form>
  </body>
</html>

action.jsp 

   @Action(
    		value="loginActionloginTest"
    		)
    public void loginTest() throws IOException{
    	try {
			String str= new String(user.getUserName().toString().getBytes("iso8859-1"), "utf-8");
    		//String str= java.net.URLDecoder.decode(user.getUserName(), "UTF-8");
			System.out.println("asasasasasasas"+str);
	    	User usern = loginService.find(str);
	    	System.out.println("asasasasasasas"+usern);
	    	response=(HttpServletResponse) ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
	    	PrintWriter out = response.getWriter();
	    	if(usern==null){
	    		
	    		out.print("true");
	    	}else{
	    		out.print("false");
	    	}
	    	out.flush();
	    	out.close();
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


内容概要:本文档为《400_IB Specification Vol 2-Release-2.0-Final-2025-07-31.pdf》,主要描述了InfiniBand架构2.0版本的物理层规范。文档详细规定了链路初始化、配置与训练流程,包括但不限于传输序列(TS1、TS2、TS3)、链路去偏斜、波特率、前向纠错(FEC)支持、链路速度协商及扩展速度选项等。此外,还介绍了链路状态机的不同状态(如禁用、轮询、配置等),以及各状态下应遵循的规则和命令。针对不同数据速率(从SDR到XDR)的链路格式化规则也有详细说明,确保数据包格式和控制符号在多条物理通道上的一致性和正确性。文档还涵盖了链路性能监控和错误检测机制。 适用人群:适用于从事网络硬件设计、开发及维护的技术人员,尤其是那些需要深入了解InfiniBand物理层细节的专业人士。 使用场景及目标:① 设计和实现支持多种数据速率和编码方式的InfiniBand设备;② 开发链路初始化和训练算法,确保链路两端设备能够正确配置并优化通信质量;③ 实现链路性能监控和错误检测,提高系统的可靠性和稳定性。 其他说明:本文档属于InfiniBand贸易协会所有,为专有信息,仅供内部参考和技术交流使用。文档内容详尽,对于理解和实施InfiniBand接口具有重要指导意义。读者应结合相关背景资料进行学习,以确保正确理解和应用规范中的各项技术要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值