手机版

JSP实现用户登录、注册和退出功能

时间:2021-10-29 来源:互联网 编辑:宝哥软件园 浏览:

本文讲述使用JSP实现用户登录,包括用户登录、注册和退出功能等。

1.系统用例图

2.页面流程图

3.数据库设计本例使用神谕数据库

创建用户表

包括身份证、用户名、密码和电子邮件,共四个字段

-创建表创建表P _ USER(id varchar 2(50)不为null,用户名VARCHAR2(20),密码VARCHAR2(20),电子邮件VARCHAR2(50))表空间用户百分比免费10英镑1英镑最大255英镑存储(初始64个minextents 1最大范围无限制);-向表中添加注释表P_USER的注释为"用户表;-在列中添加注释在列P_USER.id上的注释为“id”;对列用户名的注释为"用户名;对列P_USER的注释。密码为'密码;评论栏P_USER.email为电子邮件';4.页面设计4.1登录页面login.jsp

“% @”页面语言=“Java”导入=“Java”。乌提尔。*“页面编码=”UTF-8“% %字符串路径=请求。getcontextpath();字符串基本路径=请求。getscheme()' ://'请求。getservername()“:”请求。getserverport()“path ”/;% !DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN ' HTML头基href=' %=基路径% '标题登录页面/title meta http-equiv=' pragma ' content=' no-cache ' meta http-equiv=' cache-control ' content=' no-cache ' meta http-equiv=' expires ' content=' 0 ' meta http-equiv=' keywords ' content=' keywords 1,keywords 2,keywords 3 ' meta http-equiv=' description ' content='这是我的页面!- link rel='样式表type=' text/CSS ' href=' style。CSS '-/头体形态动作=' log in _ action。JSP ' method=' post '表tr TD colspan=' 2 '登录窗口TD/tr/tr用户名:/TD TD输入类型=' text '名称=' username '/TD/tr TD密码:/TD TD TD输入类型=' text ' name=' password '/TD/tr TD col span=' 2 '输入类型=' submit ' value='登录/a href='register.jsp '注册/a /td /tr /table /form /body /html页面效果

3.2登录逻辑处理页面login_action.jsp

“% @”页面语言=“Java”导入=“Java”。乌提尔。* "页面编码=' utf-8 ' % % % @页面导入=' Java。SQL。* % %字符串路径=请求。GetContextPath();字符串基本路径=请求。getscheme()' ://'请求。getservername()“:”请求。getserverport()“路径”/;% %字符串用户名=请求。GetParameter(' username ');字符串密码=请求。GetParameter('密码');if(username==null|| ' ' .等于(用户名。trim())| | password==null | | ' ' .等于(密码。trim())){//out。写('用户名或密码不能为空!');System.out.println('用户名或密码不能为空!');回应。发送重定向('登录。JSP’);返回;//请求。getrequest dispatcher('登录。JSP ').转发(请求、响应);} boolean isValid=false连接con=null/创建一个数据库连接PreparedStatement pre=null//创建预编译语句对象,一般都是用这个而不用语句结果集结果=空;//创建一个结果集对象请尝试{类。FOrname('甲骨文。JDBC。司机。oracledriver’);//加载神谕驱动程序//System.out.println('开始尝试连接数据库!');字符串URL=' JDBC :甲骨文: ' '瘦: @ 127。0 .0 .1336015213360 orcl ';//127.0.0.1是本机地址,orcl是神谕的默认数据库名字符串用户=' scott//用户名,系统默认的账户名String pwd=' tiger//你安装时选设置的密码con=Drivermanager。获取连接(网址、用户、pwd);//获取连接//System.out.println('连接成功!');字符串sql='从p_user中选择*其中用户名=?和密码=?";//预编译语句,"?"代表参数pre=con . PrepareStatement(SQL);//实例化预编译语句pre.setString(1,用户名);//设置参数,前面的一表示参数的索引,而不是表中列名的索引pre.setString(2,密码);//设置参数,前面的一表示参数的索引,而不是表中列名的索引结果=pre。execute query();//执行查询,注意括号中不需要再加参数if(结果。next()){ is valid=true;} } catch(异常e){ e . print stack trace();}最后{尝试{ //逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源//注意关闭的顺序,最后使用的最先关闭如果(结果!=null)结果。close();if (pre!=null)pre。close();if (con!=null)con . close();//System.out.println('数据库连接已关闭!');} catch(异常e){ e . print stack trace();} } if(有效){ system。出去。println('登录成功!');session.setAttribute('username ',username);回应。发送重定向('欢迎。JSP’);返回;}else{ System.out.println('登录失败!');回应。发送重定向('登录。JSP’);返回;} % 使用数据库编程连接数据库,如果用户名或密码为空时,还是跳转到登录页面login.jsp如果用户名和密码不为空,进行连接数据库查询用户表,如果能够查询到记录,表示登录成功,将用户信息保存到会话,跳转到欢迎页面welcome.jsp

如果根据用户名和密码查询不到记录,表示登录失败,重新跳转到登录页面login.jsp

3.3欢迎页面welcome.jsp

“% @”页面语言=“Java”导入=“Java”。乌提尔。*“页面编码=”UTF-8“% %字符串路径=请求。getcontextpath();字符串基本路径=请求。getscheme()' ://'请求。getservername()“:”请求。getserverport()“路径”/;% !DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN ' HTML头基href=' %=基路径% ' title my JSP ' welcom。“JSP”起始页/title meta http-equiv=' pragma ' content=' no-cache ' meta http-equiv=' cache-control ' content=' no-cache ' meta http-equiv=' expires ' content=' 0 ' meta http-equiv='关键字' content='关键字1,关键字2,- link rel='样式表type=' text/CSS ' href=' style。CSS '-/头体表tr tdimg src=' http : images/logo 4。png '/TD tdimg src=' http : images/logo 2。png ' height=' 90 '/TD/tr TD colspan=' 2 ' HR//TD/tr TD表tr tdaMain/a/TD/tr tdamen u1/a/TD/tr tdtr tdamen U2/a登录成功!TD/tr/tr欢迎你,/TD TD $ { username }/TD/tr TD colspan=' 2 '输入类型='提交'值='退出//TD/tr/table/form/TD/tr/table/body/html使用埃尔表达式展示用户信息效果

3.4欢迎页退出逻辑处理页面loginout.jsp

“% @”页面语言=“Java”导入=“Java”。乌提尔。*“页面编码=”UTF-8“% %字符串路径=请求。getcontextpath();字符串基本路径=请求。getscheme()' ://'请求。getservername()“:”请求。getserverport()“路径”/;% !DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN ' HTML头基href=' %=基路径% ' title my JSP ' loginout。“JSP”起始页/title meta http-equiv=' pragma ' content=' no-cache ' meta http-equiv=' cache-control ' content=' no-cache ' meta http-equiv=' expires ' content=' 0 ' meta http-equiv='关键字' content='关键字1,关键字2- link rel='样式表type=' text/CSS ' href=' style。CSS '-/head body %会话。移除属性('用户名');回应。发送重定向('登录。JSP’);%/正文/html将会议的用户信息移除,跳转到登录页面login.jsp3.5注册页面register.jsp

“% @”页面语言=“Java”导入=“Java”。乌提尔。*“页面编码=”UTF-8“% %字符串路径=请求。getcontextpath();字符串基本路径=请求。getscheme()' ://'请求。getservername()“:”请求。getserverport()“路径”/;% !DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN ' HTML头基href=' %=基路径% '标题注册页面/title meta http-equiv=' pragma ' content=' no-cache ' meta http-equiv=' cache-control ' content=' no-cache ' meta http-equiv=' expires ' content=' 0 ' meta http-equiv=' keywords ' content=' keywords 1,keywords 2,keywords 3 ' meta http-equiv=' description ' content='这是我的页面!- link rel='样式表type=' text/CSS ' href=' style。CSS '-/头体形式动作=' register _ action。JSP ' method=' post '表tr TD colspan=' 2 '注册窗口TD/tr/tr用户名:/TD TD输入类型=' text '名称=' username '/TD/tr TD密码:/TD TD输入类型=' text '名称=' password 1 '/TD/tr TD确认密码:/TD tdinput type=' text ' name=' password 2 '/TD/tr TD email:/TD tdinput type=' text ' name=' email '/TD/tr TD colspan=' 2 ' input type=' submit ' value='注册/a href='login.jsp '返回/a/td /tr /table /form /body /html当在登录页面点击"注册"时打开用户注册页面效果

3.6注册逻辑处理页面register_action.jsp

% @ page language=' Java ' import=' Java . util . * ' page encoding=' UTF-8 ' % % @ page import=' Java . SQL . * % % String path=request . getcontextpath();string base path=request . getscheme()' ://' request . getservername()' : ' request . getserverport()' path '/;% % String username=request . GetParameter(' username ');string password 1=request . GetParameter(' password 1 ');string password 2=request . GetParameter(' password 2 ');string email=request . GetParameter(' email ');if(username==null|| ' '。equals(username . trim())| | password 1==null | | ' '。equals(password 1 . trim())| | password 2==null | | ' '。equals(password2.trim())||!密码1。equals (password2)) {//out.write('用户名或密码不能为空!);System.out.println('用户名或密码不能为空!');response . send redirect(' register . JSP ');返回;//request . getrequest dispatcher(' log in . JSP ')。转发(请求、响应);} boolean isValid=false连接con=null//创建数据库连接PreparedStatement pre=null//创建预编译语句对象,一般用来代替Statement ResultSet result=null//创建结果集对象try { class . forname(' Oracle . JDBC . driver . oracledriver ');//加载Oracle驱动程序//System.out.println('开始尝试连接到数据库!').);string URL=' JDBC : Oracle : ' ' thin : @ 127 . 0 . 0 . 1336015213360 orcl ';//127.0.0.1是本地地址,orcl是Oracle的默认数据库名,String用户=' scott//用户名,系统默认帐户名String pwd=' tiger//安装时设置的密码con=driver manager . getconnection(URL、用户、pwd);//获取连接//System.out.println('连接成功!');字符串sql='从p_user中选择*其中用户名=?';//预编译语句“?”代表性参数pre=con . PrepareStatement(SQL);//实例化预编译语句pre.setString(1,username);//设置参数。前1表示参数的索引,而不是表中列名的索引。result=pre . executequery();//执行查询,注意参数if(!result . next()){ SQL=' insert in p _ user(id,用户名,密码,电子邮件)值(?)';//预编译语句“?”代表性参数pre=con . PrepareStatement(SQL);//实例化预编译语句pre.setstring (1,system . current timemillis()' ');//设置参数,前1表示参数的索引,而不是表pre.setString中列名的索引(2,username);//设置参数,前面的1表示参数的索引,而不是表pre.setString(3,password1)中列名的索引;//设置参数,前1表示参数的索引,而不是表pre.setString(4,email)中列名的索引;//设置参数,前面的1表示参数的索引,而不是表pre.executeUpdate()中列名的索引;//execute is valid=true;} } catch(异常e){ e . printstacktrace();}最后{try {//逐个关闭以上对象,因为不关闭会影响性能,占用资源。//注意关闭的顺序,关闭if(结果!=null)结果. close();if (pre!=null)pre . close();if (con!=null)con . close();//System.out.println('数据库连接已关闭!' );} catch(异常e){ e . printstacktrace();}} if (isvalid) {system。out.println('已成功注册,请登录!' );response . send redirect(' log in . JSP ');返回;}else{ System.out.println('用户名已经存在!');response . send redirect(' register . JSP ');返回;}%首先判断用户名和密码是否为空,密码和确认密码是否一致。如果以上条件不成立,返回注册页面。如果以上条件成立,根据用户名查询数据库。如果可以查询到该记录,则表示该用户名已经存在,返回注册页面。register.jsp。

如果找不到记录,可以使用该用户名进行注册,并使用JDBC向用户表中插入一条记录。然后跳转到登录页面,login。

4.总结一下,这个例子使用JSP实现用户登录,在编写过程中主要有两个小问题。

4.1查询后,如果(!Result.next())而不是查询中常用的while循环,这一点应该注意,尤其是在处理注册时。

4.2编译JSP页面时的错误报告。

在JSP脚本中使用return时要小心,这可能会导致编译错误。

处理方法是,JSP主页面只使用JSP脚本,这样保证返回后没有需要编译的内容。

以上是使用JSP实现用户登录的简单介绍,希望对大家的学习有所帮助。

版权声明:JSP实现用户登录、注册和退出功能是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

相关文章推荐