JSP+MySQL实现网站的登录与注册小案例
为了练手,我就自己试着做了一个网站的登录与注册的小案例。由于没有做美化处理,所以界面并不是很好看。
网站实现的功能如下:
•用户首次注册功能
•用户登录功能
下面我将会分模块展示
注册模块
首先需要一个注册界面,如下register.jsp:
<%@pagelanguage="java"contentType="text/html;charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"> <title>UsertoRegisterPage!</title> </head> <body> <hr><br>Welcometothis<fontcolor="green">Enroll(Register)Page</font>!<br> <formaction="do_register.jsp"method="get"> <br> <h1>Pleaseinputyourmessage:</h1><br> Name:<inputtype="text"name="register_name"><br> Pswd:<inputtype="password"name="register_password"><br> <br><br><br> <inputtype="submit"> <inputtype="reset"><br> </body> </html>
然后就是action对应的注册处理页,如下do_register.jsp:
<%@pagelanguage="java"contentType="text/html;charset=utf-8" pageEncoding="utf-8"%> <%@pageimport="java.sql.*"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"> <title>Servertodotheregisterpage!</title> </head> <body> <% StringRegister_name=request.getParameter("register_name"); StringRegister_password=request.getParameter("register_password"); %> <% try{ Class.forName("com.mysql.jdbc.Driver"); Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/summer","root","mysql"); Statementstmt=conn.createStatement(); //desognthesqlstatement StringInsertSQL="INSERTINTOUser(Name,Password)values('"+Register_name+"','"+Register_password+"')"; System.out.println(Register_name+"\t"+Register_password); //dothequeryoperation,andhereisthemostimportantsqlstatement. intFLAG=stmt.executeUpdate(InsertSQL); if(FLAG>0){ response.getWriter().write("Congratulation!REgisterSuccess!"); }else{ response.getWriter().write("Sorry!RegisterFailed!\nPleaseRetryit!"); } }catch(SQLExceptione){ } %> </body> </html>
小总结:
不足之处:
•对于数据库的操作做得不够好,没有及时的将不用的资源关闭,应该及时的对那些不用的打开的资源进行关闭操作,释放资源。
•界面效果做的不够好,response输出是先于out的输出的。
•数据库操作显得过于繁琐,应该集成一下,做一个专门处理数据库操作的工具包,以实现代码的良好的复用性!
登录模块
首先是登录界面,login.jsp,鄙人加进去一个超链接(用意是让login.jsp作为门户页面,实现登录注册合二为一的效果,虽然二者并没有合二为一,而且注册界面过于简单了),大家就先凑活看吧。
<%@pagelanguage="java"contentType="text/html;charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"> <title>UserLoginPage</title> </head> <body> <hr><br>Welcometothis<fontcolor="green">LoginPage</font>!<br> <formaction="do_login.jsp"method="get"> <br> <h1>Pleaseinputyourmessage:</h1><br> Name:<inputtype="text"name="name"><br> Pswd:<inputtype="password"name="password"><br> <br><br><br> <inputtype="submit"> <inputtype="reset"><br> Clickmeto<fontcolor="green"><ahref="register.jsp">Register</a>!</font><br> </form> </body> </html>
然后是对登录信息的处理页,do_login.jsp:
<%@pageimport="java.sql.DriverManager"%> <%@pagelanguage="java"contentType="text/html;charset=utf-8" pageEncoding="utf-8"%> <%@pageimport="java.sql.*"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"> <title>ServerPageDepend!</title> </head> <body> <h3>WhichPaewillbedependbytheuser'smessage!</h3> <% Stringname=request.getParameter("name"); Stringpassword=request.getParameter("password"); %> <% Class.forName("com.mysql.jdbc.Driver"); Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/summer","root","mysql"); Statementstmt=conn.createStatement(); //desognthesqlstatement StringqueryNumberSQL="SELECTNamefromUserwhereName='"+name+"'andPassword='"+password+"'"; //dothequeryoperation ResultSetrs=stmt.executeQuery(queryNumberSQL); booleanflag=false; if(rs.next()){ flag=true; session.setAttribute("UserName",name); }else{ flag=false; } %> <% if(flag){ %> <jsp:forwardpage="login_success.jsp"></jsp:forward> <% }else{ %> <jsp:forwardpage="login_failed.jsp"></jsp:forward> <% } %> </body> </html>
对于登陆成功的用户,跳转到登陆成功界面login_success.jsp:
<%@pagelanguage="java"contentType="text/html;charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"> <title>UserLoginSuccessPage!</title> </head> <body> <hr><br> <h1>LoginSuccess!</h1><br> <fontcolor="green">Welcome<%=session.getAttribute("UserName")%>!</font> <h3align="center">yourpersionalMessageis:</h3> <% out.println("Name:"+session.getAttribute("UserName")); %> <fontcolor="red"><ahref="login.jsp">Clickme</a>tologout!</font> </body> </html>
对于登录失败的用户,进行温馨的页面提示,login.failed.jsp:
<%@pagelanguage="java"contentType="text/html;charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"> <title>LoginFailedPage!</title> </head> <body> <hr> <br> <h1><fontcolor="red">Sorry,LoginFailed</font></h1><br> <fontcolor="red"><ahref="login.jsp">Clickme</a>tologin!</font> </body> </html>
大总结:
进步之处:
•使用到了session对象来存储用户登录的姓名信息,实现了页面间的信息的交互
•配合了MySQL,在一定程度上体验了JEE的模式
不足之处:
•代码过于繁冗,复用性不好
•资源利用率不高,使用过的不再使用的资源要及时的进行关闭。虽然java虚拟机有自动的垃圾回收机制,但最好还是养成好的习惯!
•界面控制做的不够好,体验性差,欠缺思考
待改进之处:
•加上复杂一点的用户注册,使用bean的方式做处理比较好
•模块化,使用MVC的概念
•改善界面的权限,防止盗链
•加上其他的诸如上传文件,下载文件功能,丰富网站的功能。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。