JSP表单处理有图解.docx
- 文档编号:29785666
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:27
- 大小:141.88KB
JSP表单处理有图解.docx
《JSP表单处理有图解.docx》由会员分享,可在线阅读,更多相关《JSP表单处理有图解.docx(27页珍藏版)》请在冰豆网上搜索。
JSP表单处理有图解
第15章JSP表单处理 返回主页 上一章下一章
在JSP编程中,为了实现用户和网站之间的信息交互,通常都要在网页上设计表单,然后使用特定方法收集表单数据信息并进行处理。
本章重点介绍利用JSP的Request对象的getParameter方法来获取表单数据的方法。
当然,数据库连接对动态网站来说是非常重要的,对此本章将详细介绍JSP的数据库连接技术JDBC-ODBCbridge。
为了防止JSP访问数据库中的中文信息时可能出现的乱码问题,可以采用将字符串由8859_1(或iso-8859-1)码转换成gb2312码的方法来有效解决。
15.1表单信息的获取
15.2与数据库结合的表单处理
15.3中文乱码问题
☆进入DOS状态 ☆写字版 ☆绘图板 ☆进入Editplus
15.1表单信息的获取本章开头下一节
大家应该对表单很熟悉,随便进入一个网站,如果想在线注册成为某网站的会员,就必须填写一张表单,然后提交给服务器处理。
例如图15-1显示的是QQ聊天网站的会员注册表单。
图15-1 QQ会员注册表单示意图
表单在HTML页面中起着非常重要作用,它是实现与用户信息交互的重要手段。
一个表单至少应该包括说明性文字、用户填写的表格、提交和重填按钮等内容。
用户填写了所需的资料之后,按下“提交资料”按钮,所填资料就会通过一个专门的接口传到Web服务器上。
经服务器处理后反馈给用户结果,从而完成用户和网络之间的交流。
一般情况下,表单设计时使用的标记包括:
图15-2 exa15_1.html运行结果
在讲述如何获取表单信息之前,先介绍一些用JavaScript编写的函数。
这些函数用于检验表单中所要提交的数据格式是否正确,只有当数据格式符合要求才允许提交。
可以将这些函数存放到一个文件中(比如Jspconfirm.js),然后将此文件包含到所编写的网页中,当然也可以根据需要在网页中单独引用。
(1)isDate()日期确认函数
功能:
确认所输入的数据是否是一个有效的日期(格式为:
月/日/年),如果是函数返回true,否则返回false。
function isDate(myStr)
{ var the1st=myStr.indexof(‘/’);
var the2nd=theStr.lastIndexof(‘/’);
if (the1st==the2nd){ return(false);}
else{ var m=myStr.substring(0,the1st);
var d=myStr.substring(the1st+1,the2nd);
var y=myStr.substring(the2nd+1,myStr.length);
varmaxDays=31;
if(isInt(m)==false||isInt(d)==false||isInt(y)==false)
{return(false);}
elseif(y.length<4){return(false);}
elseif(!
isBetween(m,1,12)){return(false);}
elseif(m==4||m==6||m==9||m==11)maxDays=30;
elseif(m==2){if(y%4>0)maxDays=28;else maxDays=29;}
if(isBetween(d,1,maxDays)==false){return(false);}else
{return(true);}
}
}
(2)isBetween(val,low,high)范围确定函数
功能:
确认所输入的数据是否位于参数low和high之间,如果是函数返回true,否则返回false。
function isBetween(val,low,high)
{if ((val
else{return(true);}
}
(3)isTime()时间确认函数
功能:
确认所输入的数据是否是一个合法的时间值(格式:
HH:
MM)。
如果是函数返回true,否则返回false。
function isTime(timeStr)
{ var colondex=myStr.indexof(‘:
’);
if (colonDex<1)||(colonDex>2)){ return(false);}
else{ var hh=timeStr.substring(0,colonDex);
var ss=timeStr.substring(colonDex+1,timeStr.length);
if((hh.length<1)||(hh.length>2)||(!
isInt(hh))){return(false);}
elseif((ss.length<1)||(ss.length>2)(!
isInt(ss))){return(false);}
elseif((!
isBetween(hh,0,23))||(!
isBetween(ss,0,59))){return(false);}
else{return(true);}
}
}
(4)isDigit(myNum)数字确认函数
功能:
确认所输入的数据是否是一个合法数字。
如果是函数返回true,否则返回false。
function isDigit(myNum)
{ varmask=’0123456789’;
if (isEmpty(myNum)){return(false);}
elseif(mask.indexOf(myNum)==-1){return(false);}
return(true);}
(5)isEmail(myStr)电子邮件确认函数
功能:
确认所输入的数据是否是一个合法的电子邮件地址。
如果是函数返回true,否则返回false。
function isEmail(myStr)
{ var atIndex=myStr.indexOf(‘@’);
var dotIndex=myStr.indexOf(‘.’,atIndex);
varflag=true;
theSub=myStr.substring(0,dotIndex+1);
if ((atIndex<1)||(atIndex!
=myStr.lastIndexOf(‘@’))||(dotIndex else{flag=true;} return(flag); } (6)isEmpty(myStr) 功能: 确认所输入的数据是否为空。 如果为空函数返回true,否则返回false。 function isEmpty(myStr) { if ((myStr==null)||(myStr.length==0))return(true); else return(false); } (7)isInt(myStr) 功能: 确认所输入的数据是否是一个合法的整数。 如果是函数返回true,否则返回false。 function isInt(myStr) { varflag=true; if (isEmpty(myStr)){flag=false};} else{for(vari=0;i {if(isDigit(myStr.substring(i,i+1))==false) { flag=false;break;} } } return(flag); } (8)isReal(myStr,decLen) 功能: 确认所输入的数据是否是一个合法的实数。 如果是函数返回true,否则返回false。 function isReal(myStr,decLen) { vardot1st=myStr.indexOf(‘.’); vardot2nd=myStr.lastIndexOf(‘.’); varflag=true; if (isEmpty(myStr))return(false); if (dot1st=-1) {if(! isInt(myStr))return(false); elsereturn(true);} elseif(dot1st! =dot2nd)return(false); elseif(dot1st==0)return(false); else{ var intPart=myStr.substring(0,dot1st); var decPart=myStr.substring(dot2nd+1); if(decPart.length>decLen)return(false); else if(! isInt(intPart)||! isInt(decPart))return(false); else if(isEmpty(decPart))return(false); elsereturn(true); } } 例15-2 如何提取客户端表单中的数据,文件名为exa15_2.html,运行结果如图15-3所示,其源码如下:
您的用户名:
请给定密码:
您的性别:
您最喜欢的颜色:
图15-3 exa15_2.jsp运行结果
其中表单信息提取程序formget.jsp的源代码如下:
<%@pagecontentType="text/html;charset=gb2312"%>
<%
request.setCharacterEncoding("gb2312");
String username=request.getParameter("user");
String pwdinfo=request.getParameter("pwd");
String sexinfo=request.getParameter("sex");
String colorinfo=request.getParameter("likecolor");
out.println("您的姓名:
");
out.println(username);
out.println("您的密码:
");
out.println(pwdinfo);
if(sexinfo==null)out.println("很抱歉,您没有选择性别!
");
else
{ out.println("您的性别:
");
out.println(sexinfo);
}
if(colorinfo==null)out.println("很抱歉,您没有选择您喜欢的颜色!
");
else
{ out.println("您喜欢的颜色:
");
out.println(colorinfo);
}%>
当输入完整的个人信息时,结果显示如图15-4所示,当输入信息不完整时(例如没有输入喜欢的颜色或者没有选择性别),结果显示如图15-5所示。
图15-4 输入完整信息提交后的exa15_2.jsp运行结果
图15-5 输入不完整信息提交后的exa15_2.jsp运行结果
从这个程序中不难发现JSP主要是通过request.getParameter()方法来提取表单中的数据,但需要注意的是,在编写表单时,对于表单中任一元素的name必须赋值,因为JSP调用request对象的方法getParameter()时,正是将name值作为该方法的形参来提取表单中相应元素中的输入数据。
除此之外,还可以通过JavaBean技术来获取表单中的信息。
当然在这个Bean对应的类体中必须定义一个区域,并且该区域跟表单中的每一个区域相对应。
有关Bean的使用详见本书第18章。
15.2与数据库结合的表单处理上一节下一节本章开头
在进行表单处理时经常会遇到表单的确认问题,这时需要验证表单中大量的数据。
数据格式的合法性一般应该在客户端验证,除非想要对检验的算法进行保密。
数据内容(如用户名、密码等)的检查一般不能放在客户端进行,必须通过访问数据库才能来完成表单数据验证的过程。
为实现这一环节,就需要JSP与数据库的连接。
在JSP中访问数据库,有多种方法,详见本书第16章。
本节采用通过JDBC-ODBC桥操作数据源的方法,这对于各种数据库都适用。
现在要做的就是在JSP页面中嵌入JDBC-ODBC桥,经过JDBC-ODBC桥的映射,使JSP可以访问数据库。
具体做法是在JSP中嵌入如下语句:
try{Connectioncon=DriverManager.getConnection("jdbc:
odbc:
数据源的名字","loginname", "password");
catch(SQLException e) {}
注意:
其中参数loginname是登录数据源的用户名字,参数password是登录口令。
如果在设置数据源的过程中没有设置这两项,那么在getConnection方法中也不能省略它们,参数写成””的形式。
如果连接数据源不成功,系统将抛出一个SQLExpection异常。
在JSP页面中建立了和数据源的连接后,就可以访问数据库了。
下面给出网上候选人投票系统,该系统说明如何利用数据库来处理表单。
首先建
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSP 表单 处理 图解
![提示](https://static.bdocx.com/images/bang_tan.gif)