回麻雀苑主页
2.3比较规范的注册表单处理
作者:老麻雀
2006/9/13 14:51:37
比较规范的注册表单处理
ch2-2.htm和ch2-2.jsp一组网页,解决了控制表单项输入不能为空,两次密码输入必须一致的问题。在某个网站进行注册时,输入的一些项目还有对长度和格式的控制。本节一组网页以限制密码长度和E-mail规范格式为例,讲解其实现方法。
一、 范例的演示和代码清单
演示步骤:
1. 启动JSP引擎后,启动IE,在地址栏键入http://127.0.0.1:8080/ch2/ch2-21.htm,如图2-10所示:
图 2-10
2. 试着在“密码”一项中,填送少于4位或多于6位的数据,进行提交;
3. 试着在“E-mail” 一项中,填送不符合E-mail格式的数据,进行提交;
4. 最后完整规范地填写所有数据,进行提交。
这组网页输入密码时不符合规定长度或输入E-mail时不符合规范的格式,都无法正常提交表单。屏幕提示相关信息后,有一“返回”的超链接,进行返回重新填写资料。
两个网页的代码如下:
◇-◇-◇-◇-◇-◇-◇-◇-◇ 规范的用户注册 ◇-◇-◇-◇-◇-◇-◇-◇-◇
范例ch2-21.htm
1) <html>
2) <head>
3) <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4) <title>规范的用户注册</title>
5) </head>
6)
7) <body bgcolor="#FFFFCC">
8) <h2 align="center"><font color="#000099"><em>新用户注册</em></font></h2>
9) <form name="form1" method="post" action="ch2-21.jsp">
10) <p><font color="#CC0000">(注意,**号选项为必填项)
11) <!--在ch2-2的基础上,增加了下拉列表的应用,并且限定了密码输入长度和E-mail的输入格式。 -->
12) </font></p>
13) <table width="49%" border="0">
14) <tr>
15) <td><div align="right">用户名:</div></td>
16) <td><input name="yonghuming" type="text" id="yonghuming" size="20">
17) **</td>
18) </tr>
19) <tr>
20) <td><div align="right">性 别:</div></td>
21) <td><input name="xingbie" type="radio" value="男" checked>
22) 男
23) <input type="radio" name="xingbie" value="女">
24) 女 </td>
25) </tr>
26) <tr>
27) <td><div align="right">年 龄: </div></td>
28) <td><p>
29) <input name="nianling" type="text" id="nianling" size="8">
30) </p>
31) </td>
32) </tr>
33) <tr>
34) <td><div align="right">密 码:</div></td>
35) <td><input name="mima" type="password" id="mima" size="16">
36) **要在4-6位之间</td>
37) </tr>
38) <tr>
39) <td><div align="right">重复密码:</div></td>
40) <td><input name="mima2" type="password" id="mima2" size="16">
41) **</td>
42) </tr>
43) <tr>
44) <td><div align="right">学 历:</div></td>
45) <td><select name="select" size="1">
46) <option value="初中">初中</option>
47) <option value="高中">高中</option>
48) <option value="大专">大专</option>
49) <option value="大学">大学</option>
50) <option value="硕士研究生">硕士研究生</option>
51) <option value="博士研究生">博士研究生</option>
52) </select></td>
53) </tr>
54) <tr>
55) <td><div align="right">E-mail:</div></td>
56) <td><input name="email" type="text" id="email">
57) **要规范格式</td>
58) </tr>
59) <tr>
60) <td><div align="right">
61) <input type="submit" name="Submit3" value="提交">
62) </div></td>
63) <td><div align="center">
64) <input type="reset" name="Submit2" value="重新填写">
65) </div></td>
66) </tr>
67) </table>
68) <p> </p>
69) </form>
70) <p><em><font color="#000099"></font></em></p>
71) </body>
72) </html>
◇-◇-◇-◇-◇-◇-◇-◇-◇ 规范的用户注册 ◇-◇-◇-◇-◇-◇-◇-◇-◇
范例ch2-21.jsp
1) <%@ page contentType="text/html; charset=gb2312" language="java" %>
2) <html>
3) <head>
4) <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
5) <title>规范的用户注册</title>
6) </head>
7)
8) <body background="img/2.jpg">
9) <!--在ch2-2的基础上,增加了下拉列表的应用,并且限定了密码输入长度和E-mail的输入格式。 -->
10) <h2><strong><em>用户资料</em></strong></h2>
11) <p>
12) <%!
13)
14) String name;
15) String xingbie;
16) String nianling;
17) String password1;
18) String password2;
19) String xueli;
20) String email;
21) %>
22) <%
23) name=request.getParameter("yonghuming");
24) xingbie=request.getParameter("xingbie");
25) nianling=request.getParameter("nianling");
26) password1=request.getParameter("mima");
27) password2=request.getParameter("mima2");
28) xueli=request.getParameter("select");
29) email=request.getParameter("email");
30) if(name.equals("")||password1.equals("")||password2.equals("")||email.equals(""))
31) { out.print("**号选项为必填项,资料填写不完整,请重新填写!");
32) return;
33) }
34) else if(!password1.equals(password2))
35) {out.print("密码和重复密码不一致,请重新输入密码!");
36) return;
37) }
38) else if(password1.length()<4||password1.length()>6)
39)
40) {
41) out.println("您填写密码不在4-6位之间,请重新填写!");
42) out.println("<a href=ch2-21.htm>返回</a>");
43) return;
44) }
45) else if(email.indexOf("@")<=0||email.indexOf(".")<=0)
46) {out.println("输入的E-mail地址不正确,请重新输入!");
47) out.println("<a href=ch2-21.htm>返回</a>");
48) return;
49) }
50) out.print("用户名:"+name);
51) out.print("<p>性别:"+xingbie);
52) if(!nianling.equals(""))
53) out.print("<p>年龄:"+nianling);
54) out.print("<p>密码:"+password1);
55) out.print("<p>学历:"+xueli);
56) out.print("<p>E-mail:"+email);
57) %>
58) </p>
59) <p> <a href="ch2-21.htm"><strong>返回表单</strong></a></p>
60) </body>
61) </html>
二、HTML表单的分析
ch2-21.htm与前面的HTML注册表单基本雷同,这里就不再重复分析了。
但应看到,熟悉网页的HTML代码在学习JSP动态网页中很重要。只熟悉在Dreamweaver或FrontPage的图形设计界面下设计制作网页,就仅停留在静态网页的设计制作层次上。JSP动态网页是在HTML代码行中嵌入java语句行,以后还会在java语句行中嵌入HTML代码。对于还不十分熟悉HTML超文本语言的读者,须适当地补习一下,并在后面的学习中留意相关的知识介绍。
三、JSP动态网页的分析
ch2-21.jsp完全是在ch2-2.jsp的基础上,增补功能形成的一个动态网页。大部分代码行是一样的,因此只分析增补部分。
控制密码输入长度的代码行:
38) else if(password1.length()<4||password1.length()>6)
39)
40) {
41) out.println("您填写密码不在4-6位之间,请重新填写!");
42) out.println("<a href=ch2-21.htm>返回</a>");
43) return;
44) }
第38行是一个后续判断语句,其含义是如果password1变量中的字符串数据长度少于4或者多于6,就执行下面大括弧{ }内的语句。
length()是JSP常用字符串对象中的一个方法,用于测试字符串的长度。
第41行是屏幕显示输出语句,用于提示用户。
第42行是镶嵌到JSP输出语句行中的HTML代码,<a href=ch2-21.htm>返回</a> 是标准的HTML超链接标记,把它嵌入到JSP输出语句行中必须把整个标记当成一个字符串,也就是在标记的两边加上“"”(双引号)。原来被链接的网页文件名常用双引号括起来,现在要把双引号去掉,或换成单引号。例如写成out.println("<a href="ch2-21.htm">返回</a>")。
控制E-mail输入格式的代码行:
45) else if(email.indexOf("@")<=0||email.indexOf(".")<=0)
46) {out.println("输入的E-mail地址不正确,请重新输入!");
47) out.println("<a href=ch2-21.htm>返回</a>");
48) return;
49) }
第45行是一个后续判断语句,其含义是如果email变量中的字符串数据没有“@”,或者没有“.”,就执行下面{ }范围内的语句。
indexOf("字符")是JSP常用字符串对象中的一个方法,作用是测试字符串中有没有指定的字符。如果有,则返回字符所在字符串的位置(数值);如果没有,则返回-1。
46行-49行的语句和上面范例类似。
这段代码的思路,并不十分完善,但解决了基本问题。希望读者能有更好的思路,编写出更好的代码。
发表须知: 一、用户须严格遵守国家法律和政策,包括但不限于《全国人大常委会关于维护互联网安全的决定》、《信息网络传播权保护条例》等规定,审慎、合法地利用伊妃(E-file)平台发表言论、作品。 二、用户的言论、行为若涉嫌违法或侵权,用户可能被强制承担因该行为直接或间接导致的全部法律责任。依照法律法规规定,伊妃(E-file)运营方有义务提供用户资料,有义务和权利采取删除、屏蔽、断开链接等各种必要措施。 三、伊妃(E-file)中心授权网络法律专业研究服务机构“网络法苑”为用户及客户提供包括免费咨询在内的全方位的法律支持。 |