jsp页面部分:通过JS进行客户端的表单验证,主要验证表单的格式、输入是否正确,使用这种方式可以避免在提交之后才返回一个简单的输入错误,在网速较慢的情况下更能提高效率。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page language="java" contentType="text/html;charset=GBK"%>
<html>
<head>
<script language="javascript" type="text/javascript">
<!--
var http = getHTTPObject();
function handleHttpResponse(){
//判断xmlHttpRequest对象的状态
if(http.readyState == 4){
if(http.status == 200){
var xmlDocument = http.responseXML;
//如果返回值不为空
if(http.responseText!=""){
//显示返回内容
document.getElementById("showStr").style.display = "";
document.getElementById("userName").style.background= "#FF0000";
document.getElementById("showStr").innerText = http.responseText;
}else{
//如果返回值为空,不显示
document.getElementById("userName").style.background= "#FFFFFF";
document.getElementById("showStr").style.display = "none";
}
}
else{
alert("你所请求的页面发生异常,可能会影响你浏览该页的信息!");
alert(http.status);
}
}
}
function handleHttpResponse1(){
if(http.readyState == 4){
if(http.status == 200){
var xmlDocument = http.responseXML;
if(http.responseText!=""){
document.getElementById("comNmStr").style.display = "";
document.getElementById("comNm").style.background= "#FF0000";
document.getElementById("comNmStr").innerText = http.responseText;
}else{
document.getElementById("comNm").style.background= "#FFFFFF";
document.getElementById("comNmStr").style.display = "none";
}
}
else{
alert("你所请求的页面发生异常,可能会影响你浏览该页的信息!");
alert(http.status);
}
}
}
//检测用户名称
function chkUser(){
var url = "/chkUserAndCom";
var name = document.getElementById("userName").value;
url += ("&userName="+name+"&oprate=chkUser");
http.open("GET",url,true);
http.onreadystatechange = handleHttpResponse;
http.send(null);
return ;
}
//检测企业名称
function chkComNm(){
var url = "/chkUserAndCom";
var name = document.getElementById("comNm").value;
url += ("&comName="+name+"&oprate=chkCom");
http.open("GET",url,true);
http.onreadystatechange = handleHttpResponse1;
http.send(null);
return ;
}
//该函数可以创建需要的XMLHttpRequest对象
function getHTTPObject(){
var xmlhttp = false;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
if(xmlhttp.overrideMimeType){
xmlhttp.overrideMimeType('text/xml');
}
}
else{
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
xmlhttp = false;
}
}
}
return xmlhttp;
}
//检测表单输入是否合法
function chkpassword()
{
//获取表单
var m=document.form1;
//判断密码输入是否合法
if(len(m.password.value) > 20 || len(m.password.value) < 5 || !isStr(m.password.value))
{
document.getElementById("passwordStr").style.display = "";
document.getElementById("password").style.background= "#FF0000";
document.getElementById("passwordStr").innerText = "对不起,密码必须为英文字母、数字或下画线,长度为5~20!";
}
else
{
document.getElementById("password").style.background= "#FFFFFF";
document.getElementById("passwordStr").style.display = "none";
}
}
//判断第二次输入是否合法、一致
function chkconfirmPassword()
{
var m=document.form1;
if (m.password.value != m.confirmPassword.value)
{
document.getElementById("confirmPasswordStr").style.display = "";
document.getElementById("confirmPassword").style.background= "#FF0000";
document.getElementById("confirmPasswordStr").innerText = "对不起,密码与重复密码不一致!";
}
else
{
document.getElementById("confirmPassword").style.background= "#FFFFFF";
document.getElementById("confirmPasswordStr").style.display = "none";
}
}
//判断所有文本框中的输入
function checkfield()
{
var m=document.form1;
if(m.userName.value.length==0)
{
alert("对不起,用户名必须为英文字母、数字或下画线,长度为5~20。");
m.userName.focus();
return false;
}
if(m.password.value.length==0)
{
alert("对不起,密码必须为英文字母、数字或下画线,长度为5~20。");
m.password.focus();
return false;
}
if (m.password.value != m.confirmPassword.value)
{
alert("对不起,密码与重复密码不一致!");
m.confirmPassword.focus();
return false;
}
if(m.comNm.value.length==0)
{
alert("对不起,企业名称不能为空!!");
m.comNm.focus();
return false;
}
m.submit();
}
//-->
</script>
</head>
<body topmargin="0">
<form name="form1" method="post" action="/Control?act=Register">
<table width="100%">
<tr><td align="center"> <H1>Ajax 演示程序</H1></td></tr>
<tr><td align="center"> ------ 企业注册 By Alpha</td></tr>
</table>
<HR>
<table width="400" border="0" cellpadding="1" cellspacing="1" align="center" >
<tr>
<td><font color="red">*</font></td>
<td>用户帐号:</td>
<td>
<input type="text" name="userName" maxlength="20" style="background:#FFFFFF" onBlur="chkUser()" value=""/>
<div id="showStr" style="background-color:#FF9900;display:none"></div>
</td>
</tr>
<tr>
<td><font color="red">*</font></td>
<td>企业名称:</td>
<td>
<input type="text" name="comNm" maxlength="100" style="background:#FFFFFF" onBlur="chkComNm()" value=""/>
<div id="comNmStr" style="background-color:#FF9900;display:none"></div>
</td>
</tr>
<tr>
<td><font color="red">*</font></td>
<td>用户密码:</td>
<td><input type="password" name="password" maxlength="20" style="background:#FFFFFF" onBlur="chkpassword()"/>
<div id="passwordStr" style="background-color:#FF9900;display:none"></div>
</td>
</tr>
<tr>
<td><font color="red">*</font></td>
<td>确认密码:</td>
<td><input type="password" name="confirmPassword" maxlength="20" style="background:#FFFFFF" onBlur="chkconfirmPassword()"/>
<div id="confirmPasswordStr" style="background-color:#FF9900;display:none"></div>
</td>
</tr>
</table>
<div align="center">
<input type="button" name="ok" value=" 确 定 " onclick="checkfield()"> <input type="reset" name="reset" value=" 取 消 ">
</div>
</form>
</body>
</html>
servlet部分:进行数据库方面的验证,主要用于查看在数据库中有没有存在该用户或企业。
package com.event;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.beans.EBaseInfo;
public class CheckUserAndComNm {
private String msgStr = "";
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException
{
EComBaseInfo info=new EComBaseInfo();
//获取请求中的参数
String oprate=request.getParameter("oprate")).trim();
String userName=request.getParameter("userName");
String passWord=request.getParameter("password");
String comName=request.getParameter("comName");
try
{
//判断是否是检查用户名
if(oprate.equals("chkUser"))
{
response.setContentType("text/html;charset=GB2312");
if(userName.length()<5||userName.length()>20)
{
msgStr = "对不起,用户名必须为字母、数字或下画线,长度为5-20个字符!";
}
else
{
boolean bTmp=info.findUser(userName);
//查询数据库中有无该用户名
if(bTmp)
msgStr ="对不起,此用户名已经存在,请更换用户名注册!";
else
msgStr ="";
}
response.getWriter().write(msgStr);
}
//检查企业名
else if(oprate.equals("chkCom"))
{
response.setContentType("text/html;charset=GB2312");
if(comName.length()<6||comName.length()>100)
{
msgStr = "对不起,公司名称长度为6-100个字符(不包括字符内的空格)!";
}
else
{
boolean bTmp=info.findCom(comName);
//查找数据库中有无该企业名
if(bTmp)
msgStr ="对不起,此企业名称已经存在,请更换企业名称注册!";
else
msgStr ="";
}
response.getWriter().write(msgStr);
}
}
catch(Exception ex)
{
}
finally
{
request.setAttribute("url",url);
}
}
protected void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException
{
doGet(request,response);
}
}