在jsp中用bean和servlet联合实现用户注册、登录

声明:作者原创,版权所有。未经授权,不得转载
在jsp中用bean和servlet联合实现用户注册、登录

作者:imagebear
版权:imagebear

本例需要的软件和运行环境:
1、Windows2000 Server操作系统
2、jdk1.4
3、JCreator2.5(java源码编辑调试器,吐血推荐!)
4、Macromedia JRun MX
5、Macromedia Dreamweaver MX(非必需)
6、MySQL数据库(最好安装MySQL Control Center)

一、数据库设计
用MySQL Control Center打开MySQL数据库,新建数据库shopping,在其下新建表tbl_user,其中各字段设置如下:


二、编写连接数据库bean:DBConn.java

//DBConn.java

//include required classes
import java.sql.*;

//==========================================
// Define Class DBConn
//==========================================
public class DBConn
{
public String sql_driver = "org.gjt.mm.mysql.Driver";
public String sql_url = "jdbc:mysql://localhost:3306";
public String sql_DBName = "shopping";
public String user = "sa";
public String pwd = "";

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

public boolean setDriver(String drv)
{
this.sql_driver = drv;
return true;
}

public String getDriver()
{
return this.sql_driver;
}

public boolean setUrl(String url)
{
this.sql_url = url;
return true;
}

public boolean setDBName(String dbname)
{
this.sql_DBName = dbname;
return true;
}

public String getDBName()
{
return this.sql_DBName;
}

public boolean setUser(String user)
{
this.user = user;
return true;
}

public String getUser()
{
return this.user;
}

public boolean setPwd(String pwd)
{
this.pwd = pwd;
return true;
}

public String getPwd()
{
return this.pwd;
}

public DBConn()
{
try{
Class.forName(sql_driver);//加载数据库驱动程序
this.conn = DriverManager.getConnection(sql_url + "/" + sql_DBName + "?user=" + user + "&password=" + pwd + "&useUnicode=true&characterEncoding=gb2312");
this.stmt = this.conn.createStatement();
}catch(Exception e){
System.out.println(e.toString());
}
}

//执行查询操作
public ResultSet executeQuery(String strSql)
{
try{
this.rs = stmt.executeQuery(strSql);
return this.rs;
}catch(SQLException e){
System.out.println(e.toString());
return null;
}catch(NullPointerException e){
System.out.println(e.toString());
return null;
}
}

//执行数据的插入、删除、修改操作
public boolean execute(String strSql)
{
try{
if(this.stmt.executeUpdate(strSql) == 0)
return false;
else
return true;
}catch(SQLException e){
System.out.println(e.toString());
return false;
}catch(NullPointerException e){
System.out.println(e.toString());
return false;
}
}

//结果集指针跳转到某一行
public boolean rs_absolute(int row)
{
try{
this.rs.absolute(row);
return true;
}catch(SQLException e){
System.out.println(e.toString());
return false;
}
}

public void rs_afterLast()
{
try{
this.rs.afterLast();
}catch(SQLException e){
System.out.println(e.toString());
}
}

public void rs_beforeFirst()
{
try{
this.rs.beforeFirst();
}catch(SQLException e){
System.out.print(e.toString());
}
}

public void rs_close()
{
try{
this.rs.close();
}catch(SQLException e){
System.out.print(e.toString());
}
}

public void rs_deleteRow()
{
try{
this.rs.deleteRow();
}catch(SQLException e){
System.out.print(e.toString());
}
}

public boolean rs_first()
{
try{
this.rs.first();
return true;
}catch(SQLException e){
System.out.print(e.toString());
return false;
}
}

public String rs_getString(String column)
{
try{
return this.rs.getString(column);
}catch(SQLException e){
System.out.println(e.toString());
return null;
}
}

//此方法用于获取大段文本,
//将其中的回车换行替换为

1<br/>

//输出到html页面
public String rs_getHtmlString(String column)
{
try{
String str1 = this.rs.getString(column);
String str2 = "\r\n";
String str3 = "

1<br/>

";
return this.replaceAll(str1,str2,str3);
}catch(SQLException e){
System.out.println(e.toString());
return null;
}
}

//把str1字符串中的str2字符串替换为str3字符串
private static String replaceAll(String str1,String str2,String str3)
{
StringBuffer strBuf = new StringBuffer(str1);
int index=0;
while(str1.indexOf(str2,index)!=-1)
{
index=str1.indexOf(str2,index);
strBuf.replace(str1.indexOf(str2,index),str1.indexOf(str2,index)+str2.length(),str3);
index=index+str3.length();

str1=strBuf.toString();
}
return strBuf.toString();
}

public int rs_getInt(String column)
{
try{
return this.rs.getInt(column);
}catch(SQLException e){
System.out.println(e.toString());
return -1;
}
}

public int rs_getInt(int column)
{
try{
return this.rs.getInt(column);
}catch(SQLException e){
System.out.println(e.toString());
return -1;
}
}

public boolean rs_next()
{
try{
return this.rs.next();
}catch(SQLException e){
System.out.println(e.toString());
return false;
}
}

//判断结果集中是否有数据
public boolean hasData()
{
try{
boolean has_Data = this.rs.first();
this.rs.beforeFirst();
return has_Data;
}catch(SQLException e){
System.out.println(e.toString());
return false;
}
}

public boolean rs_last()
{
try{
return this.rs.last();
}catch(SQLException e){
System.out.println(e.toString());
return false;
}
}

public boolean rs_previous()
{
try{
return this.rs.previous();
}catch(Exception e){
System.out.println(e.toString());
return false;
}
}

//main方法,调试用
public static void main(String args[])
{
try{
DBConn myconn = new DBConn();
//myconn.setDBName("shopping");
//myconn.DBConn();
//myconn.execute("Insert Into tbl_test(id,name) values('10','shandaer')");
//myconn.execute("Update tbl_test set name='yyyyyyyyyyyy' where id=10");
//myconn.execute("Delete from tbl_test where id=1");
ResultSet rs = myconn.executeQuery("select * from tbl_user order by id desc limit 1");
//boolean hasData = myconn.hasData();
//System.out.println("has data:" + hasData);
//rs.first();
while (myconn.rs.next())
{
int id = myconn.rs_getInt("id") + 1;
System.out.print(id);
System.out.println(myconn.rs_getInt("id") + myconn.rs_getString("name"));

//System.out.println('\n' + myconn.rs_getHtmlString("name"));
//System.out.println(myconn.rs.getString("name") + myconn.rs_getInt(1));
}
}catch(Exception e){
System.err.println(e.toString());
}
}

}

声明:因为使用的是MySQL数据库,所以需要MySQL数据库的驱动
下载后请将org包放至DBConn.java所在目录下
以确保该bean能正常运行

三、编写用户注册的bean:reg.java

//reg.java

//import required classes
import java.sql.*;

public class reg
{
public int newID = 0;
public boolean result = false;
public boolean reg(String username,String password,String confirm,String email)
{
try{
if(!this.checkUser(username))
return false;
if(!this.checkPwd(password))
return false;
if(!this.verifyPwd(password,confirm))
return false;
if(!this.checkEmail(email))
return false;
if(!this.userNotExit(username))
return false;
this.getNewID();
this.result = this.register(username,password,confirm,email);
return this.result;
}catch(Exception e){
System.out.println(e.toString());
return false;
}
}//End boolean reg

public boolean checkUser(String user)
{
try{
if(user.indexOf("'")!=-1)
{
System.out.println("姓名中含有非法字符!");
return false;
}else
return true;
}catch(Exception e){
System.out.println(e.toString());
return false;
}
}

public boolean checkPwd(String pwd)
{
try{
if(pwd.indexOf("'")!=-1)
{
System.out.println("密码中含有非法字符!");
return false;
}else
return true;
}catch(Exception e){
System.out.println(e.toString());
return false;
}
}

public boolean verifyPwd(String pwd,String confirm)
{
try{
if(!pwd.equals(confirm))
{
System.out.println("两次输入的密码不一致!");
return false;
}else
return true;
}catch(Exception e){
System.out.println(e.toString());
return false;
}
}

public boolean checkEmail(String email)
{
try{
if(email.indexOf("'")!=-1)
{
System.out.println("E-mail中含有非法字符!");
return false;
}else
return true;
}catch(Exception e){
System.out.println(e.toString());
return false;
}
}

public boolean userNotExit(String user)
{
try{
DBConn userDBConn = new DBConn();
userDBConn.executeQuery("select * from tbl_user where name='" + user + "'");
if(userDBConn.rs_next())
{
System.out.println("用户名已存在,请选择其它的用户名!");
return false;
}else
return true;
}catch(Exception e){
System.out.println(e.toString());
return false;
}
}

public int getNewID()
{
try{
DBConn newIDDBConn = new DBConn();
newIDDBConn.executeQuery("select * from tbl_user order by id desc limit 1");
if(newIDDBConn.rs_next())
{
this.newID = newIDDBConn.rs_getInt("id") + 1;
System.out.println(this.newID);
}else{
this.newID = 1;
}
return this.newID;
}catch(Exception e){
System.out.println(e.toString());
return -1;
}
}

public int getID()
{
return this.newID;
}

public boolean register(String username,String password,String confirm,String email)
{
try{
DBConn regDBConn = new DBConn();
String strSQL = "insert into tbl_user(id,name,pwd,email) values('" + this.newID +"','" + username + "','" + password + "','" + email + "')";
regDBConn.execute(strSQL);
return true;
}catch(Exception e){
System.out.println(e.toString());
return false;
}
}

public static void main(String args[])
{
try{

reg newreg = new reg();

System.out.println(newreg.reg("sssssssss","ssssss","ssssss"," [email protected] "));

DBConn myconn = new DBConn();
myconn.executeQuery("select * from tbl_user");
while(myconn.rs_next())
{
System.out.println(myconn.rs_getInt("id") + " " + myconn.rs_getString("name") + " " + myconn.rs_getString("pwd") + " " + myconn.rs_getString("email"));
}
System.out.println(newreg.getID());
}catch(Exception e){
System.err.println(e.toString());
}
}
};

说明:
1、该bean文件应和上文所述DBConn.class文件放于同一目录下
2、本例主要研究注册的过程,其中的Email检测等方法并不完善,若要应用请自行设计方法

四、编写用户登陆的Servlet:login.java

//login.java

//import required classes
import java.io.;
import javax.servlet.
;
import javax.servlet.http.;
import java.sql.
;

//class login
public class login extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws IOException,ServletException
{
String username = req.getParameter("username");
String password = req.getParameter("password");
if(this.checklogin(username,password))
{
Cookie mylogin = new Cookie("username",username);
mylogin.setVersion(1);
mylogin.setPath("/");
mylogin.setComment("Your login username");
res.addCookie(mylogin);
}
//Cookie[] myCookies = req.getCookies();
//String nameValue = this.getCookieValue(myCookies,"username","not found");
//PrintWriter out = res.getWriter();
//out.println("username" + ":" + nameValue);
//out.println("Test Cookie Success!");
res.sendRedirect("/index.jsp");
}

public void doPost(HttpServletRequest req,HttpServletResponse res)
throws IOException,ServletException
{
doGet(req,res);
}

public static String getCookieValue(Cookie[] cookies,String cookieName,String defaultValue)
{
for(int i=0;i

1<cookies.length;i++) !="null)" ");="" "!");="" (cookiename.equals(cookie.getname()))="" *="" +="" 1、默认的jdk1.4中并没有servlet包,请至sun公司网页下载servlet.jar,放至jdk目录下的jre\lib\目录下,并在jcreator中设置jdk处添加servlet.jar包="" 2、本servlet用于检验用户名和密码,若正确则将用户名写入cookie,完成后将当前页重定向到index.jsp页="" ;="" <html="" @="" ```="" administrator,新建shopping服务器,这里端口为8101。="" args[])="" boolean="" c:\jrun4\servers\shopping\default-ear\default-war\web-inf\classes\="" check(httpservletrequest="" checklogin="" checklogin(string="" checklogin.java="" class="" classes="" contenttype="text/html;charset=gb2312" cookie="cookies[i];" cookie[]="" cookiename="username" cookiename,string="" cookies,string="" created!");="" dbconn="" dbconn();="" defaultvalue)="" e){="" else="" false;="" for(int="" found");="" from="" getcookievalue(cookie[]="" getusername()="" i="0;i&amp;lt;cookies.length;i++)" if="" if(loginconn.rs_getstring("pwd").trim().equals(password))="" if(loginconn.rs_next())="" if(this.username="" import="" index.jsp:="" ioexception,servletexception="" java.io.*;="" javax.servlet.*;="" javax.servlet.http.*;="" login="" login();="" loginconn="new" loginconn.executequery("select="" main(string="" mycookies="req.getCookies();" mylogin="new" name='" + username + "' out="res.getWriter();" out.println("早上好,"="" out.println("登陆失败!");="" page="" pageencoding="gb2312" password)="" printwriter="" public="" req,httpservletresponse="" required="" res)="" return="" return(cookie.getvalue());="" return(defaultvalue);="" static="" string="" success!");="" system.out.println("connection="" system.out.println("test="" system.out.println(e.tostring());="" system.out.println(loginconn.rs_getstring("name"));="" system.out.println(mylogin.checklogin("shandong","shandong"));="" tbl_user="" this.username="" this.username;="" throws="" true;="" try{="" username="" username,string="" void="" where="" {="" }="" }catch(exception="" }else{="" 七、建立jsp文件="" 五、编写检测用户是否已经登陆的bean:checklogin.java="" 六、在jrun中建立shopping服务器="" 将上文所述所有编译后的class文件连同org包拷至jrun的shopping服务器所在目录中的classes文件夹下,路径为:="" 应用dw,在c:\jrun4\servers\shopping\default-ear\default-war\目录下新建如下的jsp文件:="" 打开jrun="" 说明:="" 说明:此bean检测cookie中的username,若不为空则说明已登录,反之说明没有登录。方法不够完善,您可以自行扩充。=""&gt;
2&lt;head&gt;
3&lt;title&gt;Shopping123&lt;/title&gt;
4&lt;meta content="text/html; charset=utf-8" http-equiv="Content-Type"/&gt;
5&lt;link href="styles/shoppingstyle.css" rel="stylesheet" type="text/css"/&gt;
6&lt;/head&gt;
7&lt;body bgcolor="#FFFFFF" leftmargin="0" topmargin="0"&gt;
8&lt;jsp:usebean class="checkLogin" id="checklogin" scope="page"&gt;&lt;/jsp:usebean&gt;   

boolean login = checklogin.check(request,response);

 1&lt;table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%"&gt;
 2&lt;tr bgcolor="#990000"&gt;
 3&lt;td colspan="5" height="80"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%"&gt;
 4&lt;tr&gt;
 5&lt;td width="120"&gt; &lt;/td&gt;
 6&lt;td class="caption"&gt;Shopping123&lt;/td&gt;
 7&lt;td width="200"&gt; &lt;/td&gt;
 8&lt;/tr&gt;
 9&lt;/table&gt;&lt;/td&gt;
10&lt;/tr&gt;
11&lt;tr&gt;
12&lt;td align="center" valign="top" width="200"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" height="20" width="100%"&gt;
13&lt;tr&gt;
14&lt;td&gt; &lt;/td&gt;
15&lt;/tr&gt;
16&lt;/table&gt;   

if(!login){

 1&lt;table align="center" bgcolor="#CCCCCC" border="0" cellpadding="0" cellspacing="1" width="90%"&gt;
 2&lt;form action="/servlet/login" method="post" name="form1"&gt;
 3&lt;tr align="center" bgcolor="#CCCCCC"&gt;
 4&lt;td class="deepred" colspan="2" height="30"&gt;卖场入口&lt;/td&gt;
 5&lt;/tr&gt;
 6&lt;tr&gt;
 7&lt;td align="center" bgcolor="#FFFFFF" height="24" width="50%"&gt;会员&lt;/td&gt;
 8&lt;td align="center" bgcolor="#FFFFFF"&gt;&lt;input id="username" name="username" size="10" type="text"/&gt;&lt;/td&gt;
 9&lt;/tr&gt;
10&lt;tr&gt;
11&lt;td align="center" bgcolor="#FFFFFF" height="24"&gt;密码&lt;/td&gt;
12&lt;td align="center" bgcolor="#FFFFFF"&gt;&lt;input id="password" name="password" size="10" type="text"/&gt;&lt;/td&gt;
13&lt;/tr&gt;
14&lt;tr&gt;
15&lt;td align="center" bgcolor="#FFFFFF" height="24"&gt;&lt;a class="red" href="reg.jsp" target="_blank"&gt;注册&lt;/a&gt;&lt;/td&gt;
16&lt;td align="center" bgcolor="#FFFFFF"&gt;&lt;input name="Submit" type="submit" value="进入"/&gt;&lt;/td&gt;
17&lt;/tr&gt;
18&lt;/form&gt;
19&lt;/table&gt;   

}
else
{
out.println("您好," + checklogin.getUserName() + "!");
}

 1&lt;/td&gt;
 2&lt;td bgcolor="#CCCCCC" valign="top" width="1"&gt;&lt;/td&gt;
 3&lt;td width="400"&gt; &lt;/td&gt;
 4&lt;td bgcolor="#CCCCCC" valign="top" width="1"&gt;&lt;/td&gt;
 5&lt;td width="200"&gt; &lt;/td&gt;
 6&lt;/tr&gt;
 7&lt;tr align="center" bgcolor="#990000"&gt;
 8&lt;td class="white" colspan="5" height="60"&gt;copyright© 2003 Shopping123&lt;/td&gt;
 9&lt;/tr&gt;
10&lt;/table&gt;
11&lt;/body&gt;
12
13
14  
15reg.jsp```
16@ page contentType="text/html;charset=gb2312" pageEncoding="gb2312" 

<html> <head> <title>Shopping123</title> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> <link href="styles/shoppingstyle.css" rel="stylesheet" type="text/css"/> </head> <body bgcolor="#FFFFFF" leftmargin="0" topmargin="0"> <table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%"> <tr bgcolor="#990000"> <td colspan="5" height="80"><table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%"> <tr> <td width="120"> </td> <td class="caption">Shopping123</td> <td width="200"> </td> </tr> </table></td> </tr> <tr> <td align="center" valign="top" width="100"> </td> <td valign="top" width="1"></td> <td align="center" valign="top" width="400"><table border="0" cellpadding="0" cellspacing="0" height="20" width="100%"> <tr> <td> </td> </tr> </table> <table bgcolor="#CCCCCC" border="0" cellpadding="0" cellspacing="1" width="100%"> <form action="regpost.jsp" method="post" name="form1"> <tr align="center"> <td bgcolor="#CCCCCC" class="deepred" colspan="2" height="30">会员注册</td> </tr> <tr> <td align="center" bgcolor="#FFFFFF" height="24" width="50%">会员</td> <td align="center" bgcolor="#FFFFFF"><input id="username" name="username" size="16" type="text"/></td> </tr> <tr> <td align="center" bgcolor="#FFFFFF" height="24" width="50%">密码</td> <td align="center" bgcolor="#FFFFFF"><input id="password" name="password" size="16" type="password"/></td> </tr> <tr> <td align="center" bgcolor="#FFFFFF" height="24" width="50%">验证密码</td> <td align="center" bgcolor="#FFFFFF"><input id="confirm" name="confirm" size="16" type="password"/></td> </tr> <tr> <td align="center" bgcolor="#FFFFFF" height="24" width="50%">E-mail</td> <td align="center" bgcolor="#FFFFFF"><input id="email" name="email" size="16" type="text"/></td> </tr> <tr> <td align="center" bgcolor="#FFFFFF" height="24" width="50%"><input name="Submit" type="submit" value="重写"/></td> <td align="center" bgcolor="#FFFFFF"><input name="Submit2" type="submit" value="注册"/></td> </tr> </form> </table></td> <td valign="top" width="1"></td> <td width="100"> </td> </tr> <tr align="center" bgcolor="#990000"> <td class="white" colspan="5" height="60">copyright© 2003 Shopping123</td> </tr> </table> </body> </html>
regpost.jsp:注册表单提交页面``` @ page contentType="text/html;charset=gb2312" pageEncoding="gb2312"

@ page import="reg"

1&lt;html&gt;
2&lt;head&gt;
3&lt;title&gt;Shopping123&lt;/title&gt;
4&lt;meta content="text/html; charset=utf-8" http-equiv="Content-Type"/&gt;
5&lt;link href="styles/shoppingstyle.css" rel="stylesheet" type="text/css"/&gt;
6&lt;/head&gt;
7&lt;body bgcolor="#FFFFFF" leftmargin="0" topmargin="0"&gt;   

String username = new String(request.getParameter("username").getBytes("ISO8859_1")).trim();
String password = new String(request.getParameter("password").getBytes("ISO8859_1")).trim();
String confirm = new String(request.getParameter("confirm").getBytes("ISO8859_1")).trim();
String email = new String(request.getParameter("email").getBytes("ISO8859_1")).trim();

 1&lt;table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%"&gt;
 2&lt;tr bgcolor="#990000"&gt;
 3&lt;td colspan="5" height="80"&gt;&lt;table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%"&gt;
 4&lt;tr&gt;
 5&lt;td width="120"&gt; &lt;/td&gt;
 6&lt;td class="caption"&gt;Shopping123&lt;/td&gt;
 7&lt;td width="200"&gt; &lt;/td&gt;
 8&lt;/tr&gt;
 9&lt;/table&gt;&lt;/td&gt;
10&lt;/tr&gt;
11&lt;tr&gt;
12&lt;td align="center" valign="top" width="100"&gt; &lt;/td&gt;
13&lt;td valign="top" width="1"&gt;&lt;/td&gt;
14&lt;td align="center" valign="top" width="400"&gt;
15&lt;table border="0" cellpadding="0" cellspacing="0" height="20" width="100%"&gt;
16&lt;tr&gt;
17&lt;td&gt; &lt;/td&gt;
18&lt;/tr&gt;
19&lt;/table&gt;
20&lt;jsp:usebean class="reg" id="regID" scope="session"&gt;&lt;/jsp:usebean&gt;   

if(regID.reg(username,password,confirm,email))
{
out.print("ok");
String newID = regID.getID() + "";

 1&lt;table bgcolor="#CCCCCC" border="0" cellpadding="0" cellspacing="1" width="100%"&gt;
 2&lt;tr align="center"&gt;
 3&lt;td bgcolor="#CCCCCC" class="deepred" colspan="2" height="30"&gt;恭喜您,注册成功!&lt;/td&gt;
 4&lt;/tr&gt;
 5&lt;tr&gt;
 6&lt;td align="center" bgcolor="#FFFFFF" height="24" width="50%"&gt;编号&lt;/td&gt;
 7&lt;td align="center" bgcolor="#FFFFFF"&gt;```
 8=newID
 9```&lt;/td&gt;
10&lt;/tr&gt;
11&lt;tr&gt;
12&lt;td align="center" bgcolor="#FFFFFF" height="24" width="50%"&gt;会员&lt;/td&gt;
13&lt;td align="center" bgcolor="#FFFFFF"&gt;```
14=username
15```&lt;/td&gt;
16&lt;/tr&gt;
17&lt;tr&gt;
18&lt;td align="center" bgcolor="#FFFFFF" height="24" width="50%"&gt;密码&lt;/td&gt;
19&lt;td align="center" bgcolor="#FFFFFF"&gt;```
20=password
21```&lt;/td&gt;
22&lt;/tr&gt;
23&lt;tr&gt;
24&lt;td align="center" bgcolor="#FFFFFF" height="24" width="50%"&gt;E-mail&lt;/td&gt;
25&lt;td align="center" bgcolor="#FFFFFF"&gt;```
26=email
27```&lt;/td&gt;
28&lt;/tr&gt;
29&lt;/table&gt;   

out.print("
");
out.print("关闭");
}else{
out.print("注册失败!
");
out.print("该用户名已有人使用,请使用另外的用户名!");
out.print("返回");
}

 1&lt;/td&gt;
 2&lt;td valign="top" width="1"&gt;&lt;/td&gt;
 3&lt;td width="100"&gt; &lt;/td&gt;
 4&lt;/tr&gt;
 5&lt;tr align="center" bgcolor="#990000"&gt;
 6&lt;td class="white" colspan="5" height="60"&gt;copyright© 2003 Shopping123&lt;/td&gt;
 7&lt;/tr&gt;
 8&lt;/table&gt;
 9&lt;/body&gt;
10&lt;/html&gt;   
11至此,我们已经完成了一个用户注册、登录的系统。 因为这是本人自己边学边做完成的,所以代码一定有很多不完善的地方,欢迎大家批评指正。 以上所有代码均经本人测试通过。&lt;/cookies.length;i++)&gt;
Published At
Categories with Web编程
Tagged with
comments powered by Disqus