|
Servlet/JSP | Java | 2936 次查看 |
|---|---|---|
主程序是名为 ErrorCheck.java ,有了这个 ErrorCheck 的 Bean,我们就再也不用为了表单校验去写那一大堆烦人的 JavaScript 代码了。ErrorCheck 类已帮我们生成了几乎所有你将会用到的校验方法,如是否为数字,长度的校验,是否为合法email等,你只需在 jsp 页面里调用相应的函数就可以了。 目前一共有七个函数: 一 检测是否为数字 //输入输入框名和错误提示信息 numericCheck(String inputName,String errorMsg); 二 检测email是否合法 //输入输入框名和错误提示信息 emailCheck(String inputName,String errorMsg); 三 检测电话号码是否合法 //输入输入框名和错误提示信息 telCheck(String inputName,String errorMsg); 四 检测字串长度是否在规定范围那内 //输入输入框名,错误提示信息,最小长度,最大长度 lengthCheck(String inputName,String errorMsg,int min,int max); 五 检测字串中是否不含禁止的字串 //输入输入框名,错误提示信息,禁止字串 denyStrCheck(String inputName,String errorMsg,String str); 六 检测字串中是否含给定字串 //输入输入框名,错误提示信息,指定字串 stringCheck(String inputName,String errorMsg,String str); 七 检测日期格式是否为"yyyy-mm-dd" //输入输入框名和错误提示信息 dateCheck(String inputName,String errorMsg); 只要调用一下这个bean,然后用setFromName()设定你的表单名,再调用以上函数,最后 out.println(yourID.ErrorCheckScript()),就输出了一段 JavaScript 代码了,当然了,别忘了这个<form name=myForm onsubmit="return errorCheck();"> ok,just enjoy it,今天太累,不想多少,有任何意见请写信给我或在我主页上留言。 注:我调试 errorcheck.jsp 的时候因服务器的问题不知为何不能用 usebean,setProperty 的方法,只好 new 了一下,我想你们是应该可以用useBean和setProperty的,自己改一下吧。 ===================================== errorcheck.jsp ===================================== <%@ page language="java"import="dbclass.*"%> <%@ page contentType="text/html;charset=gb2312"%> <jsp:useBean id="cc"scope="page"class="dbclass.ErrorCheck"/> <% ErrorCheck ec = new ErrorCheck(); ec.setFormName("myForm"); ec.numericCheck("number","The Number you input is invalid!"); ec.emailCheck("email","The Email you input is invalid!"); ec.telCheck("tel","The telephone you input is invalid!"); ec.lengthCheck("strlen","The string you input in the fourth field in not between 6-8",6,8); ec.denyStrCheck("nojeru","The fifith field must not contain ''jeru''","jeru"); ec.stringCheck("jeru","The sixth field must not null and contian ''jeru''","jeru"); ec.dateCheck("date","The date you input is invalid,should be yyyy-mm-dd"); out.println(ec.ErrorCheckScript()); %> <html> <body style="font-size:9pt;font-family:Arial;"> <h1>Errocheck Test</h1> <hr> <form name=myForm onsubmit="return errorCheck();"> input a number:<br> <input type="text"name="number"><p> input a emial:<br> <input type="text"name="email"><p> input a telephone:<br> <input type="text"name="tel"><p> input a string (length should between 6-8):<br> <input type="text"name="strlen"><p> input a string (shoulde not contain"jeru"):<br> <input type="text"name="nojeru"><p> input a string (must contain"jeru"):<br> <input type="text"name="jeru"><p> input a date (yyyy-mm-dd):<br> <input type="text"name="date"><p> <br><input type="submit"name="submit"value="go"> </form> </body> </html> ===================================== ErrorCheck.java ===================================== package dbclass; /** * ErrorCheck v 1.0 * * 这个类是用来在客户端生成 JavaScript 代码来校验表单的 * 原是版本是同事 Macro 用 PHP 写的,我感觉十分好用,再也 * 不用再为那些表单区写烦人的 javascript 代码拉,感谢他! * 这次我用 Java 改写,封装成一个类,并修复了少许的 bug,加 * 多了一条校验的功能,它的扩展性很好,以后可能会继续完善。 * * Mender : * Jeru Liu * Homepage : * http://www.cyberlabs.com/~jeru/ * Email: jeru@163.net * */ import java.io.*; public class ErrorCheck { /* public: the javascript string */ String errorCheckStr; /* public: the form name you used */ public String formName; public void setFormName(String formName) { this.formName = formName; } /***************************************************************************\ * public: constructor functions * 构造函数 \***************************************************************************/ public ErrorCheck() { this.errorCheckStr = "<script ID=clientEventHandlersJS language=javascript>"+"\n"+ "<!--"+"\n"; this.neededFunction(); // load the needed functions this.errorCheckStr += "function errorCheck() {"+"\n"; } /***************************************************************************\ * public: export javascript script * 输出 JAVASCRIPT 脚本 \***************************************************************************/ public String ErrorCheckScript() { this.errorCheckStr += "}"+"\n"+ "-->"+"\n"+ "</script>"+"\n"; return this.errorCheckStr; } /***************************************************************************\ * public: check the numeric * 检查录入框值是否是数字 \***************************************************************************/ public void numericCheck(String inputName, String errorMsg) { this.errorCheckStr += " if(fucCheckNUM(document."+formName+"."+inputName+".value) == 0) {"+"\n"+ " alert(\""+errorMsg+".\");"+"\n"+ " document."+formName+"."+inputName+".focus();"+"\n"+ " return(false);"+"\n"+ " }"+"\n\n"; } /***************************************************************************\ * public: check the length * 检查录入框值的长度 \***************************************************************************/ public void lengthCheck(String inputName, String errorMsg, int MinLength, int MaxLength) { this.errorCheckStr += " if(fucCheckLength(document."+formName+"."+inputName+".value)<"+MinLength+"||"+"\n"+ " fucCheckLength(document."+formName+"."+inputName+".value)>"+MaxLength+") {"+"\n"+ " alert(\""+errorMsg+".\");"+"\n"+ " document."+formName+"."+inputName+".focus();"+"\n"+ " return(false);"+"\n"+ " }"+"\n\n"; } /***************************************************************************\ * public: check the email * 检查录入框值是否是正确的EMAIL格式 \***************************************************************************/ public void emailCheck(String inputName, String errorMsg) { this.errorCheckStr += " if(chkemail(document."+formName+"."+inputName+".val |
||