JAVA网站制作之用JSP在客户端天生javascript代码来...
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。js|客户端明天费了一地利间就是做这个工具,道理很复杂,就是用JSP在页面的入手下手部分天生一段代码,
如errorcheck.jsp中所示,但程序太长,仍是费了我很多工夫来改写。
主程序是名为ErrorCheck.java,有了这个ErrorCheck的Bean,我们就不再用为了表单校验往
写那一年夜堆烦人的JavaScript代码了。ErrorCheck类已帮我们天生了几近一切你将会用到的校验办法,
如是不是为数字,长度的校验,是不是为正当email等,你只需在jsp页面里挪用响应的函数就能够了。
今朝一共有七个函数:
一检测是不是为数字
//输出输出框名和毛病提醒信息
numericCheck(StringinputName,StringerrorMsg);
二检测email是不是正当
//输出输出框名和毛病提醒信息
emailCheck(StringinputName,StringerrorMsg);
三检测德律风号码是不是正当
//输出输出框名和毛病提醒信息
telCheck(StringinputName,StringerrorMsg);
四检拆字串长度是不是在划定局限那内
//输出输出框名,毛病提醒信息,最小长度,最年夜长度
lengthCheck(StringinputName,StringerrorMsg,intmin,intmax);
五检拆字串中是不是不含克制的字串
//输出输出框名,毛病提醒信息,克制字串
denyStrCheck(StringinputName,StringerrorMsg,Stringstr);
六检拆字串中是不是含给定字串
//输出输出框名,毛病提醒信息,指定字串
stringCheck(StringinputName,StringerrorMsg,Stringstr);
七检测日期格局是不是为"yyyy-mm-dd"
//输出输出框名和毛病提醒信息
dateCheck(StringinputName,StringerrorMsg);
只需挪用一下这个bean,然后用setFromName()设定你的表单名,再挪用以上函数,
最初out.println(yourID.ErrorCheckScript()),就输入了一段JavaScript代码了,固然了,
别忘了这个<formname=myFormonsubmit="returnerrorCheck();">
ok,justenjoyit,明天太累,不想几,有任何定见请写信给我或在我主页上留言。
注:我调试errorcheck.jsp的时分因服务器的成绩不知为什么不克不及用usebean,setProperty的办法,
只好new了一下,我想你们是应当能够用useBean和setProperty的,本人改一下吧。
=====================================errorcheck.jsp=====================================
<%@pagelanguage="java"import="dbclass.*"%>
<%@pagecontentType="text/html;charset=gb2312"%>
<jsp:useBeanid="cc"scope="page"class="dbclass.ErrorCheck"/>
<%
ErrorCheckec=newErrorCheck();
ec.setFormName("myForm");
ec.numericCheck("number","TheNumberyouinputisinvalid!");
ec.emailCheck("email","TheEmailyouinputisinvalid!");
ec.telCheck("tel","Thetelephoneyouinputisinvalid!");
ec.lengthCheck("strlen","Thestringyouinputinthefourthfieldinnotbetween6-8",6,8);
ec.denyStrCheck("nojeru","Thefifithfieldmustnotcontainjeru","jeru");
ec.stringCheck("jeru","Thesixthfieldmustnotnullandcontianjeru","jeru");
ec.dateCheck("date","Thedateyouinputisinvalid,shouldbeyyyy-mm-dd");
out.println(ec.ErrorCheckScript());
%>
<html>
<bodystyle="font-size:9pt;font-family:Arial;">
<h1>ErrocheckTest</h1>
<hr>
<formname=myFormonsubmit="returnerrorCheck();">
inputanumber:<br>
<inputtype="text"name="number"><p>
inputaemial:<br>
<inputtype="text"name="email"><p>
inputatelephone:<br>
<inputtype="text"name="tel"><p>
inputastring(lengthshouldbetween6-8):<br>
<inputtype="text"name="strlen"><p>
inputastring(shouldenotcontain"jeru"):<br>
<inputtype="text"name="nojeru"><p>
inputastring(mustcontain"jeru"):<br>
<inputtype="text"name="jeru"><p>
inputadate(yyyy-mm-dd):<br>
<inputtype="text"name="date"><p>
<br><inputtype="submit"name="submit"value="go">
</form>
</body>
</html>
=====================================ErrorCheck.java=====================================
packagedbclass;
/**
*ErrorCheckv1.0
*
*这个类是用来在客户端天生JavaScript代码来校验表单的
*原是版本是同事Macro用PHP写的,我感到非常好用,再也
*不必再为那些表单区写烦人的javascript代码拉,感激他!
*此次我用Java改写,封装成一个类,并修复了少量的bug,加
*多了一条校验的功效,它的扩大性很好,今后大概会持续完美。
*
*Mender:
*JeruLiu
*Homepage:
*http://www.cyberlabs.com/~jeru/
*Email:jeru@163.net
*
*/
importjava.io.*;
publicclassErrorCheck{
/*public:thejavascriptstring*/
StringerrorCheckStr;
/*public:theformnameyouused*/
publicStringformName;
publicvoidsetFormName(StringformName){
this.formName=formName;
}
/***************************************************************************
*public:constructorfunctions
*机关函数
***************************************************************************/
publicErrorCheck(){
this.errorCheckStr=
"<scriptID=clientEventHandlersJSlanguage=javascript>"+"
"+
"<!--"+"
";
this.neededFunction();//loadtheneededfunctions
this.errorCheckStr+=
"functionerrorCheck(){"+"
";
}
/***************************************************************************
*public:exportjavascriptscript
*输入JAVASCRIPT剧本
***************************************************************************/
publicStringErrorCheckScript(){
this.errorCheckStr+=
"}"+"
"+
"-->"+"
"+
"</script>"+"
";
returnthis.errorCheckStr;
}
/***************************************************************************
*public:checkthenumeric
*反省录进框值是不是是数字
***************************************************************************/
publicvoidnumericCheck(StringinputName,StringerrorMsg){
this.errorCheckStr+=
"if(fucCheckNUM(document."+formName+"."+inputName+".value)==0){"+"
"+
"alert(""+errorMsg+".");"+"
"+
"document."+formName+"."+inputName+".focus();"+"
"+
"return(false);"+"
"+
"}"+"
";
}
/***************************************************************************
*public:checkthelength
*反省录进框值的长度
***************************************************************************/
publicvoidlengthCheck(StringinputName,StringerrorMsg,intMinLength,intMaxLength){
this.errorCheckStr+=
"if(fucCheckLength(document."+formName+"."+inputName+".value)<"+MinLength+"||"+"
"+
"fucCheckLength(document."+formName+"."+inputName+".value)>"+MaxLength+"){"+"
"+
"alert(""+errorMsg+".");"+"
"+
"document."+formName+"."+inputName+".focus();"+"
"+
"return(false);"+"
"+
"}"+"
";
}
/***************************************************************************
*public:checktheemail
*反省录进框值是不是是准确的EMAIL格局
***************************************************************************/
publicvoidemailCheck(StringinputName,StringerrorMsg){
this.errorCheckStr+=
"if(chkemail(document."+formName+"."+inputName+".value)==0){"+"
"+
"alert(""+errorMsg+".");"+"
"+
"document."+formName+"."+inputName+".focus();"+"
"+
"return(false);"+"
"+
"}"+"
";
}
/***************************************************************************
*public:checkthetelephonenumber
*反省录进框值是不是是德律风号码
***************************************************************************/
publicvoidtelCheck(StringinputName,StringerrorMsg){
this.errorCheckStr+=
"if(fucCheckTEL(document."+formName+"."+inputName+".value)==0){"+"
"+
"alert(""+errorMsg+".");"+"
"+
"document."+formName+"."+inputName+".focus();"+"
"+
"return(false);"+"
"+
"}"+"
";
}
/***************************************************************************
*public:checkiftheinputvaluecontianthepreferedstring
*反省录进框值是不是是包括给定字串
***************************************************************************/
publicvoidstringCheck(StringinputName,StringerrorMsg,Stringstring){
this.errorCheckStr+=
"if(document."+formName+"."+inputName+".value.indexOf(""+string+"")!=0){"+"
"+
"alert(""+errorMsg+".");"+"
"+
"document."+formName+"."+inputName+".focus();"+"
"+
"return(false);"+"
"+
"}"+"
";
}
/***************************************************************************
*public:checkiftheinputvaluecontainthedenyedstring
*反省录进框值是不是是包括给克制的字串
***************************************************************************/
publicvoiddenyStrCheck(StringinputName,StringerrorMsg,Stringstring){
this.errorCheckStr+=
"if(document."+formName+"."+inputName+".value.length==0||"+"
"+
"document."+formName+"."+inputName+".value.indexOf(""+string+"")!=-1){"+"
"+
"alert(""+errorMsg+".");"+"
"+
"document."+formName+"."+inputName+".focus();"+"
"+
"return(false);"+"
"+
"}"+"
";
}
/***************************************************************************
*public:checktheYYYY-MM-DDformatdate
*反省录进框值是不是是YYYY-MM-DD的日期格局
***************************************************************************/
publicvoiddateCheck(StringinputName,StringerrorMsg){
this.errorCheckStr+=
"if(chkdate(document."+formName+"."+inputName+".value)==0){"+"
"+
"alert(""+errorMsg+".");"+"
"+
"document."+formName+"."+inputName+".focus();"+"
"+
"return(false);"+"
"+
"}"+"
";
}
publicvoidneededFunction(){
this.errorCheckStr+=
"//函数名:fucCheckNUM"+"
"+
"//功效先容:反省是不是为数字"+"
"+
"//参数申明:要反省的数字"+"
"+
"//前往值:1为是数字,0为不是数字"+"
"+
"functionfucCheckNUM(NUM){"+"
"+
"vari,j,strTemp;"+"
"+
"strTemp="0123456789";"+"
"+
"if(NUM.length==0)return0;"+"
"+
"for(i=0;i<NUM.length;i++){"+"
"+
"j=strTemp.indexOf(NUM.charAt(i));"+"
"+
"if(j==-1){"+"
"+
"//申明有字符不是数字"+"
"+
"return0;"+"
"+
"}"+"
"+
"}"+"
"+
"//申明是数字"+"
"+
"return1;"+"
"+
"}"+"
"+
"//函数名:fucCheckLength"+"
"+
"//功效先容:反省字符串的长度"+"
"+
"//参数申明:要反省的字符串"+"
"+
"//前往值:长度值"+"
"+
"functionfucCheckLength(strTemp){"+"
"+
"vari,sum;"+"
"+
"sum=0;"+"
"+
"for(i=0;i<strTemp.length;i++){"+"
"+
"if((strTemp.charCodeAt(i)>=0)&&(strTemp.charCodeAt(i)<=255))"+"
"+
"sum=sum+1;"+"
"+
"else"+"
"+
"sum=sum+2;"+"
"+
"}"+"
"+
"returnsum;"+"
"+
"}"+"
"+
"//函数名:chkemail"+"
"+
"//功效先容:反省是不是为EmailAddress"+"
"+
"//参数申明:要反省的字符串"+"
"+
"//前往值:0:不是1:是"+"
"+
"functionchkemail(a){"+"
"+
"vari=a.length;"+"
"+
"vartemp=a.indexOf(@);"+"
"+
"vartempd=a.indexOf(.);"+"
"+
"if(temp>1){"+"
"+
"if((i-temp)>3){"+"
"+
"if(tempd!=-1){"+"
"+
"return1;"+"
"+
"}"+"
"+
"}"+"
"+
"}"+"
"+
"return0;"+"
"+
"}"+"
"+
"//函数名:fucCheckTEL"+"
"+
"//功效先容:反省是不是为德律风号码"+"
"+
"//参数申明:要反省的字符串"+"
"+
"//前往值:1为是正当,0为分歧法"+"
"+
"functionfucCheckTEL(TEL){"+"
"+
"vari,j,strTemp;"+"
"+
"strTemp="0123456789-()#";"+"
"+
"if(TEL.length==0)return0;"+"
"+
"for(i=0;i<TEL.length;i++){"+"
"+
"j=strTemp.indexOf(TEL.charAt(i));"+"
"+
"if(j==-1){"+"
"+
"//申明有字符分歧法"+"
"+
"return0;"+"
"+
"}"+"
"+
"}"+"
"+
"//申明正当"+"
"+
"return1;"+"
"+
"}"+"
"+
"//函数名:chkdate(YYYY-MM-DD)"+"
"+
"//功效先容:反省是不是为日期"+"
"+
"//参数申明:要反省的字符串"+"
"+
"//前往值:0:不是日期1:是日期"+"
"+
"functionchkdate(datestr){"+"
"+
"varlthdatestr"+"
"+
"if(datestr!="")"+"
"+
"lthdatestr=datestr.length;"+"
"+
"else"+"
"+
"lthdatestr=0;"+"
"+
"vartmpy="";"+"
"+
"vartmpm="";"+"
"+
"vartmpd="";"+"
"+
"//vardatestr;"+"
"+
"varstatus;"+"
"+
"status=0;"+"
"+
"if(lthdatestr==0)"+"
"+
"return0;"+"
"+
"for(i=0;i<lthdatestr;i++){"+"
"+
"if(datestr.charAt(i)==-){"+"
"+
"status++;"+"
"+
"}"+"
"+
"if(status>2){"+"
"+
"return0;"+"
"+
"}"+"
"+
"if((status==0)&&(datestr.charAt(i)!=-)){"+"
"+
"tmpy=tmpy+datestr.charAt(i)"+"
"+
"}"+"
"+
"if((status==1)&&(datestr.charAt(i)!=-)){"+"
"+
"tmpm=tmpm+datestr.charAt(i)"+"
"+
"}"+"
"+
"if((status==2)&&(datestr.charAt(i)!=-)){"+"
"+
"tmpd=tmpd+datestr.charAt(i)"+"
"+
"}"+"
"+
"}"+"
"+
"year=newString(tmpy);"+"
"+
"month=newString(tmpm);"+"
"+
"day=newString(tmpd)"+"
"+
"if((tmpy.length!=4)||(tmpm.length>2)||(tmpd.length>2)){"+"
"+
"return0;"+"
"+
"}"+"
"+
"if(!((1<=month)&&(12>=month)&&(31>=day)&&(1<=day))){"+"
"+
"return0;"+"
"+
"}"+"
"+
"if(!((year%4)==0)&&(month==2)&&(day==29)){"+"
"+
"return0;"+"
"+
"}"+"
"+
"if((month<=7)&&((month%2)==0)&&(day>=31)){"+"
"+
"return0;"+"
"+
"}"+"
"+
"if((month>=8)&&((month%2)==1)&&(day>=31)){"+"
"+
"return0;"+"
"+
"}"+"
"+
"if((month==2)&&(day==30)){"+"
"+
"return0;"+"
"+
"}"+"
"+
"return1;"+"
"+
"}"+"
";
}
/*publicstaticvoidmain(String[]args){
ErrorCheckec=newErrorCheck("testFrom");
Stringscript=ec.ErrorCheckScript();
System.out.println(script);
}*/
}
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 是一种为 Internet发展的计算机语言 是一种将安全性(Security)列为第一优先考虑的语言 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 Java是一种计算机编程语言,拥有跨平台、面向对java 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 是一种使用者不需花费很多时间学习的语言 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
页:
[1]