欢迎光临
我们一直在努力

在jsp中用bean和servlet联合实现用户注册、登录-JSP教程,Jsp/Servlet

建站超值云服务器,限时71元/月

作者: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;

}

}

//此方法用于获取大段文本,

//将其中的回车换行替换为<br>

//输出到html页面

public string rs_gethtmlstring(string column)

{

try{

string str1 = this.rs.getstring(column);

string str2 = " ";

string str3 = "<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( + 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","imagebear@163.com"));

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<cookies.length;i++) {

cookie cookie = cookies[i];

if (cookiename.equals(cookie.getname()))

return(cookie.getvalue());

}

return(defaultvalue);

}

public boolean checklogin(string username,string password)

{

try{

dbconn loginconn = new dbconn();

loginconn.executequery("select * from tbl_user where name=" + username + "");

if(loginconn.rs_next())

{

system.out.println("connection created!");

if(loginconn.rs_getstring("pwd").trim().equals(password))

{

system.out.println(loginconn.rs_getstring("name"));

return true;

}

else

{

return false;

}

}

system.out.println("test login success!");

return false;

}catch(exception e){

system.out.println(e.tostring());

return false;

}

}

public static void main(string args[])

{

login mylogin = new login();

system.out.println(mylogin.checklogin("shandong","shandong"));

}

}

说明:

1、默认的jdk1.4中并没有servlet包,请至sun公司网页下载servlet.jar,放至jdk目录下的jrelib目录下,并在jcreator中设置jdk处添加servlet.jar包

2、本servlet用于检验用户名和密码,若正确则将用户名写入cookie,完成后将当前页重定向到index.jsp页

五、编写检测用户是否已经登陆的bean:checklogin.java

//checklogin.java

//import required classes

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

//class checklogin

public class checklogin

{

public string username = "";

public boolean check(httpservletrequest req,httpservletresponse res)

throws ioexception,servletexception

{

string cookiename = "username";

cookie[] mycookies = req.getcookies();

this.username = this.getcookievalue(mycookies,cookiename,"not found");

printwriter out = res.getwriter();

if(this.username != null)

{

//out.println("早上好," + this.username + "!");

return true;

}else{

out.println("登陆失败!");

return false;

}

}

public string getusername()

{

return this.username;

}

public static string getcookievalue(cookie[] cookies,string cookiename,string defaultvalue)

{

for(int i=0;i<cookies.length;i++) {

cookie cookie = cookies[i];

if (cookiename.equals(cookie.getname()))

return(cookie.getvalue());

}

return(defaultvalue);

}

}

说明:此bean检测cookie中的username,若不为空则说明已登录,反之说明没有登录。方法不够完善,您可以自行扩充。

六、在jrun中建立shopping服务器

打开jrun administrator,新建shopping服务器,这里端口为8101。

将上文所述所有编译后的class文件连同org包拷至jrun的shopping服务器所在目录中的classes文件夹下,路径为:

c:jrun4serversshoppingdefault-eardefault-warweb-infclasses

七、建立jsp文件

应用dw,在c:jrun4serversshoppingdefault-eardefault-war目录下新建如下的jsp文件:

index.jsp:

<%@ page contenttype="text/html;charset=gb2312" pageencoding="gb2312" %>

<html>

<head>

<title>shopping123</title>

<meta http-equiv="content-type" content="text/html; charset=gb2312">

<link href="styles/shoppingstyle.css" rel="stylesheet" type="text/css">

</head>

<body bgcolor="#ffffff" leftmargin="0" topmargin="0">

<jsp:usebean id="checklogin" class="checklogin" scope="page"/>

<%

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

%>

<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">

<tr bgcolor="#990000">

<td height="80" colspan="5"><table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">

<tr>

<td width="120">&nbsp;</td>

<td class="caption">shopping123</td>

<td width="200">&nbsp;</td>

</tr>

</table></td>

</tr>

<tr>

<td width="200" align="center" valign="top"><table width="100%" height="20" border="0" cellpadding="0" cellspacing="0">

<tr>

<td>&nbsp;</td>

</tr>

</table>

<%

if(!login){

%>

<table width="90%" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#cccccc">

<form name="form1" method="post" action="/servlet/login">

<tr align="center" bgcolor="#cccccc">

<td height="30" colspan="2" class="deepred">卖场入口</td>

</tr>

<tr>

<td width="50%" height="24" align="center" bgcolor="#ffffff">会员</td>

<td align="center" bgcolor="#ffffff"><input name="username" type="text" id="username" size="10"></td>

</tr>

<tr>

<td height="24" align="center" bgcolor="#ffffff">密码</td>

<td align="center" bgcolor="#ffffff"><input name="password" type="text" id="password" size="10"></td>

</tr>

<tr>

<td height="24" align="center" bgcolor="#ffffff"><a href="reg.jsp" target="_blank" class="red">注册</a></td>

<td align="center" bgcolor="#ffffff"><input type="submit" name="submit" value="进入"></td>

</tr>

</form>

</table>

<%

}

else

{

out.println("您好," + checklogin.getusername() + "!");

}

%>

</td>

<td width="1" valign="top" bgcolor="#cccccc"></td>

<td width="400">&nbsp;</td>

<td width="1" valign="top" bgcolor="#cccccc"></td>

<td width="200">&nbsp;</td>

</tr>

<tr align="center" bgcolor="#990000">

<td height="60" colspan="5" class="white">copyright&copy; 2003 shopping123</td>

</tr>

</table>

</body>

</html>

reg.jsp<%@ page contenttype="text/html;charset=gb2312" pageencoding="gb2312" %>

<html>

<head>

<title>shopping123</title>

<meta http-equiv="content-type" content="text/html; charset=gb2312">

<link href="styles/shoppingstyle.css" rel="stylesheet" type="text/css">

</head>

<body bgcolor="#ffffff" leftmargin="0" topmargin="0">

<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">

<tr bgcolor="#990000">

<td height="80" colspan="5"><table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">

<tr>

<td width="120">&nbsp;</td>

<td class="caption">shopping123</td>

<td width="200">&nbsp;</td>

</tr>

</table></td>

</tr>

<tr>

<td width="100" align="center" valign="top">&nbsp;</td>

<td width="1" valign="top"></td>

<td width="400" align="center" valign="top"><table width="100%" height="20" border="0" cellpadding="0" cellspacing="0">

<tr>

<td>&nbsp;</td>

</tr>

</table>

<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#cccccc">

<form action="regpost.jsp" method="post" name="form1">

<tr align="center">

<td height="30" colspan="2" bgcolor="#cccccc" class="deepred">会员注册</td>

</tr>

<tr>

<td width="50%" height="24" align="center" bgcolor="#ffffff">会员</td>

<td align="center" bgcolor="#ffffff"><input name="username" type="text" id="username" size="16"></td>

</tr>

<tr>

<td width="50%" height="24" align="center" bgcolor="#ffffff">密码</td>

<td align="center" bgcolor="#ffffff"><input name="password" type="password" id="password" size="16"></td>

</tr>

<tr>

<td width="50%" height="24" align="center" bgcolor="#ffffff">验证密码</td>

<td align="center" bgcolor="#ffffff"><input name="confirm" type="password" id="confirm" size="16"></td>

</tr>

<tr>

<td width="50%" height="24" align="center" bgcolor="#ffffff">e-mail</td>

<td align="center" bgcolor="#ffffff"><input name="email" type="text" id="email" size="16"></td>

</tr>

<tr>

<td width="50%" height="24" align="center" bgcolor="#ffffff"><input type="submit" name="submit" value="重写"></td>

<td align="center" bgcolor="#ffffff"><input type="submit" name="submit2" value="注册"></td>

</tr>

</form>

</table></td>

<td width="1" valign="top"></td>

<td width="100">&nbsp;</td>

</tr>

<tr align="center" bgcolor="#990000">

<td height="60" colspan="5" class="white">copyright&copy; 2003 shopping123</td>

</tr>

</table>

</body>

</html>

regpost.jsp:注册表单提交页面<%@ page contenttype="text/html;charset=gb2312" pageencoding="gb2312" %>

<%@ page import="reg"%>

<html>

<head>

<title>shopping123</title>

<meta http-equiv="content-type" content="text/html; charset=gb2312">

<link href="styles/shoppingstyle.css" rel="stylesheet" type="text/css">

</head>

<body bgcolor="#ffffff" leftmargin="0" topmargin="0">

<%

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();

%>

<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">

<tr bgcolor="#990000">

<td height="80" colspan="5"><table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">

<tr>

<td width="120">&nbsp;</td>

<td class="caption">shopping123</td>

<td width="200">&nbsp;</td>

</tr>

</table></td>

</tr>

<tr>

<td width="100" align="center" valign="top">&nbsp;</td>

<td width="1" valign="top"></td>

<td width="400" align="center" valign="top">

<table width="100%" height="20" border="0" cellpadding="0" cellspacing="0">

<tr>

<td>&nbsp;</td>

</tr>

</table>

<jsp:usebean id="regid" class="reg" scope="session"/>

<%

if(regid.reg(username,password,confirm,email))

{

out.print("ok");

string newid = regid.getid() + "";

%>

<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#cccccc">

<tr align="center">

<td height="30" colspan="2" bgcolor="#cccccc" class="deepred">恭喜您,注册成功!</td>

</tr>

<tr>

<td width="50%" height="24" align="center" bgcolor="#ffffff">编号</td>

<td align="center" bgcolor="#ffffff"><%=newid%></td>

</tr>

<tr>

<td width="50%" height="24" align="center" bgcolor="#ffffff">会员</td>

<td align="center" bgcolor="#ffffff"><%=username%></td>

</tr>

<tr>

<td width="50%" height="24" align="center" bgcolor="#ffffff">密码</td>

<td align="center" bgcolor="#ffffff"><%=password%></td>

</tr>

<tr>

<td width="50%" height="24" align="center" bgcolor="#ffffff">e-mail</td>

<td align="center" bgcolor="#ffffff"><%=email%></td>

</tr>

</table>

<%

out.print("<br>");

out.print("<a href=javascript:window.close()>关闭</a>");

}else{

out.print("注册失败!<br>");

out.print("该用户名已有人使用,请使用另外的用户名!");

out.print("<a href=javascript:history.go(-1)>返回</a>");

}

%>

</td>

<td width="1" valign="top"></td>

<td width="100">&nbsp;</td>

</tr>

<tr align="center" bgcolor="#990000">

<td height="60" colspan="5" class="white">copyright&copy; 2003 shopping123</td>

</tr>

</table>

</body>

</html>

至此,我们已经完成了一个用户注册、登录的系统。 因为这是本人自己边学边做完成的,所以代码一定有很多不完善的地方,欢迎大家批评指正。 以上所有代码均经本人测试通过。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 在jsp中用bean和servlet联合实现用户注册、登录-JSP教程,Jsp/Servlet
分享到: 更多 (0)

相关推荐

  • 暂无文章