回麻雀苑主页
3-5应用cookie的注册登录
作者:老麻雀
2006/10/22 23:43:02
应用cookie的注册、登录范例
cookie的使用方法和session很相似。使用cookie设计的JSP网页和使用session设计的JSP网页,只要界面一样,运行时根本看不出他们之间的区别。但在实际应用中cookie存在于用户的计算机,session存在于服务器的计算机上。
一、 范例的演示和代码清单
演示步骤:
1. 启动JSP引擎后,启动IE,在地址栏键入http://127.0.0.1:8080/ch3/ch3-41.htm,如图3-13所示:
图 3-13
2. 在“密码”、“重复输入密码”输入数据,点击“提交”,屏幕出现图3-14所示窗口:
图 3-14
3. 在屏幕窗口中,点击“去登录”的链接,屏幕出现图3-15所示窗口:
图 3-15
4. 在“密码”项,输入刚刚注册的密码,点击“登录”按钮,根据输入的正确和错误,分别出现图3-16或图3-17所示窗口:
图 3-16 图 3-17
这组网页由2个HTML网页、2个JSP网页构成,2个HTML网页分别提供注册和登录的界面,2个JSP网页是分别处理注册和登录的数据。从功能的角度来说和本章第一节的作用一样。
四个网页的代码如下:
◇-◇-◇-◇-◇-◇ 注册-写入Cookie ◇-◇-◇-◇-◇
范例ch3-41.htm
1) <html>
2) <head><title>注册-写入Cookie</title></head>
3) <body bgcolor="#FFFF99">
4) <div align="center">
5) <p align="left"><font size="6">用户注册(写入Cookie)</font></p>
6) <p>请您填写以下信息(*为必填项),谢谢!</p>
7) <form name="form1" method="post" action="ch3-41.jsp">
8) <table width="495" align="left">
9) <tr>
10) <th scope="row"><div align="right"><span class="style3">用户名:</span></div></th>
11) <td><div align="left"><span class="style3"><input name="name" type="text" value="user" size="16">
12) *</td>
13) </tr>
14) <tr>
15) <th scope="row"><div align="right"><span class="style3">密码</span>:</div></th>
16) <td><div align="left"><input name="mima" type="password" size="16" maxlength="16">
17) *</td>
18) </tr>
19) <tr>
20) <th scope="row"><div align="right"><span class="style3">重新输入密码:</span></div></th>
21) <td><div align="left"><span class="style3">
22) <input name="mima2" type="password" size="16" maxlength="16">
23) *</td>
24) </tr>
25) <tr>
26) <th scope="row"><div align="right"><span class="style3">真实姓名:</span></div></th>
27) <td><div align="left"><span class="style3">
28) <input name="xingming" type="text" size="16" maxlength="8">
29) </span></div></td>
30) </tr>
31) <tr>
32) <th scope="row"><div align="right"><span class="style3">性别:</span></div></th>
33) <td><div align="left"><span class="style3">
34) <input name="xingbie" type="radio" value="男" checked> 男
35) <input type="radio" name="xingbie" value="女"> 女 </span></div></td>
36) </tr>
37) <tr>
38) <th scope="row"><div align="right"><span class="style3">年龄: </span></div></th>
39) <td><div align="left"><span class="style3">
40) <input name="nianling" type="text" size="8" maxlength="2">
41) </span></div></td>
42) </tr>
43) <tr>
44) <th scope="row"><div align="right"><span class="style3">联系电话:</span></div></th>
45) <td><div align="left"><span class="style3">
46) <input name="dianhua" type="text" size="16">
47) </span></div></td>
48) </tr>
49) <tr>
50) <th scope="row"><div align="right"><span class="style3">电子邮箱:</span></div></th>
51) <td><div align="left"><span class="style3">
52) <input name="email" type="text" id="email">
53) </span></div></td>
54) </tr>
55) <tr>
56) <th height="49" scope="row"><div align="right"><span class="style3">
57) <input type="submit" name="Submit" value="提交">
58) </span></div></th>
59) <td><div align="center"><span class="style3">
60) <input type="reset" name="Submit2" value="重置">
61) </span></div></td>
62) </tr>
63) </table>
64) </form>
65) </div>
66) </body>
67) </html>
◇-◇-◇-◇-◇-◇ 注册-写入Cookie ◇-◇-◇-◇-◇
范例ch3-41.jsp
1) <html>
2) <head><title>注册-写入Cookie</title></head>
3) <BODY bgcolor="#FFFF66">
4) <%@ page contentType="text/html; charset=gb2312" %>
5) <%@ page import="java.util.*" %>
6) <%!
7) String username;
8) String password1;
9) String password2;
10) String truename;
11) String zhuzhi;
12) String age;
13) String email;
14) String xingbie;
15) String tel;
16) int i;
17) %>
18) <%
19) username=request.getParameter("name");
20) password1=request.getParameter("mima");
21) password2=request.getParameter("mima2");
22) truename=request.getParameter("xingming");
23) zhuzhi=request.getParameter("zhuzhi");
24) age=request.getParameter("nianling");
25) email=request.getParameter("email");
26) xingbie=request.getParameter("xingbie");
27) tel=request.getParameter("dianhua");
28) if(username.equals("")||password1.equals("")||password2.equals(""))
29) {
30) out.println("带*为必填项,请您重新填写,谢谢!<P>");
31) out.println("<a href="ch3-41.htm">返回</a>");
32) return;
33) }
34) if(!password1.equals(password2)){
35) out.println("您填写的两次密码不一致,请重新填写!<P>");
36) out.println("<a href="ch3-41.htm">返回</a>");
37) return;
38) }
39) if(truename.equals(""))
40) truename="未填写";
41) if(age.equals(""))
42) age="未填写";
43) if(tel.equals(""))
44) tel="未填写";
45) if(email.equals(""))
46) email="未填写";
47) Cookie user=new Cookie("user",username);
48) Cookie pass=new Cookie("pass",password1);
49) response.addCookie(user);
50) response.addCookie(pass);
51) %>
52) <P>您已经注册成功! </P>
53) <table width="200">
54) <tr>
55) <th scope="row"><div align="right">用户名:</div></th>
56) <td><div align="left">
57) <%out.println(username);%>
58) </div></td>
59) </tr>
60) <tr>
61) <th scope="row"><div align="right">密码:</div></th>
62) <td><div align="left">
63) <%out.println(password1);%>
64) </div></td>
65) </tr>
66) <tr>
67) <th scope="row"><div align="right">真实姓名:</div></th>
68) <td><div align="left">
69) <%out.println(truename);%>
70) </div></td>
71) </tr>
72) <tr>
73) <th scope="row"><div align="right">年龄:</div></th>
74) <td><div align="left">
75) <%out.println(age);%>
76) </div></td>
77) </tr>
78) <tr>
79) <th scope="row"><div align="right">联系电话:</div></th>
80) <td><%out.println(tel);%></td>
81) </tr>
82) <tr>
83) <th scope="row"><div align="right">E-mail:</div></th>
84) <td><div align="left">
85) <%out.println(email);%>
86) </div></td>
87) </tr>
88) </table>
89) <p>去<a href="ch3-42.htm">登录</a></p>
90) <p><a href="index.htm">返回</a></p>
91) </BODY>
92) </HTML>
◇-◇-◇-◇-◇-◇ 修饰过的规范用户注册 ◇-◇-◇-◇-◇
范例ch3-42.htm
1) <html>
2) <head>
3) <title>登录-读取Cookie</title>
4) </head>
5) <body bgcolor="#FFFF99">
6) <p align="left"><font size="6">用户登录(使用Cookie信息)</font></p>
7) <form name="form1" method="post" action="ch3-42.jsp">
8) <table width="390">
9) <tr>
10) <th scope="row"><div align="right">用户名:</div></th>
11) <td><div align="left">
12) <input name="text" type="text" id="text2" value="user">
13) </div></td>
14) </tr>
15) <tr>
16) <th scope="row"><div align="right">密码:</div></th>
17) <td><div align="left">
18) <input name="password" type="password" id="password">
19) </div></td>
20) </tr>
21) <tr>
22) <th scope="row"><div align="right"></div></th>
23) <td><div align="left">
24) <input type="submit" name="Submit" value="登录">
25) </div></td>
26) </tr>
27) </table>
28) </form>
29) <p align="left"> </p>
30) </body>
31) </html>
◇-◇-◇-◇-◇-◇ 修饰过的规范用户注册 ◇-◇-◇-◇-◇
范例ch3-42.jsp
1) <html>
2) <head><title>登录-读取Cookie</title></head>
3) <BODY bgcolor="#FFFF99">
4) <%@ page contentType="text/html; charset=gb2312" %>
5) <%!
6) String name;
7) String mima;
8) String name2;
9) String mima2;
10) %>
11) <%
12) name=request.getParameter("text");
13) mima=request.getParameter("password");
14) Cookie[]allcookie=request.getCookies();
15) name2=allcookie[0].getValue();
16) mima2=allcookie[1].getValue();
17) if(name.equals(name2) && mima.equals(mima2))
18) out.println("用户名和密码与Cookie中的信息一致<P><h2>登录成功!</h2>");
19) else if(!name.equals(name2) || !mima.equals(mima2))
20) out.println("用户名和密码与Cookie中的信息不一致<P><h2>登录失败!</h2>");
21) %>
22) <P><a href="index.htm">返回</a>
23) </BODY>
24) </HTML>
二、网页工作原理及代码分析
ch3-41.htm和ch3-42.htm两个HTML静态网页中界面设计和表单项目设计和前面介绍的表单网页大同小异,不再进行具体的分析。
ch3-41.jsp是处理注册数据的网页,获得数据后,将注册的“用户名”和“密码”信息写入了cookie。ch3-42.jsp是处理登录数据的网页,将登录用户的“用户名”和“密码”与cookie中保存的信息进行比对。从而验证登录的用户。这个范例的工作原理和第一节使用session认证登录用户相同,只不过保存注册用户信息使用的是cookie。
使用cookie的关键是将好的创建cookie发送到用户的计算机上去。cookie与session不同之处就是他存在于用户的计算机上,这样可以减轻服务器计算机的负荷和网络线路上传送数据的时间。从而提高效率。使用cookie的相关代码行如下:
写入cookie、发送的客户计算机的代码行:
在ch3-41.jsp的47-50行
47) Cookie user=new Cookie("user",username);
48) Cookie pass=new Cookie("pass",password1);
49) response.addCookie(user);
50) response.addCookie(pass);
第47、48行都是创建cookie并将数据写入cookie的语句。以47行为例说明语句的具体含义:
Cookie user:创建一个以“user”为名称的cookie;
Cookie("user",username):括号()中"user"为该cookie的索引值。username是写入该cookie的数据值;
第49、50行都是将cookie发送的用户计算机的语句。括号()中的参数是cookie的名称。
从cookie中提取数据的代码行:
在ch3-42.jsp的14-16行:
14) Cookie[]allcookie=request.getCookies();
15) name2=allcookie[0].getValue();
16) mima2=allcookie[1].getValue();
第14行的含义是以数组的形式,读取cookie中的所以数据;
第15行的含义是将数组中具体的cookie值提取,赋值给JSP的变量。
| 我也说两句 |
 游客于2010/6/29 13:22:18写道: 哈哈 |
|
发表须知: 一、用户须严格遵守国家法律和政策,包括但不限于《全国人大常委会关于维护互联网安全的决定》、《信息网络传播权保护条例》等规定,审慎、合法地利用伊妃(E-file)平台发表言论、作品。 二、用户的言论、行为若涉嫌违法或侵权,用户可能被强制承担因该行为直接或间接导致的全部法律责任。依照法律法规规定,伊妃(E-file)运营方有义务提供用户资料,有义务和权利采取删除、屏蔽、断开链接等各种必要措施。 三、伊妃(E-file)中心授权网络法律专业研究服务机构“网络法苑”为用户及客户提供包括免费咨询在内的全方位的法律支持。 |