为了练手,我就自己试着做了一个网站的登录与注册的小案例。由于没有做美化处理,所以界面并不是很好看。


网站实现的功能如下:

  • 用户首次注册功能
  • 用户登录功能

项目目录展示:


下面我将会分模块展示

注册模块


首先需要一个注册界面,如下register.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>User to Register Page!</title>
</head>
<body>
<hr><br>Welcome to this <font color="green">Enroll(Register) Page</font>!<br>
<form action="do_register.jsp" method="get">
<br>
<h1>Please input your message:</h1><br>
Name:<input type="text" name="register_name"><br>
Pswd:<input type="password" name="register_password"><br>
<br><br><br>
<input type="submit">&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset"><br>
</body>
</html>

然后就是action对应的注册处理页,如下do_register.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Server to do the register page!</title>
</head>
<body>
<%
    String Register_name=request.getParameter("register_name");
    String Register_password=request.getParameter("register_password");
%>

<%
try{
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/summer", "root", "mysql");
    Statement stmt=conn.createStatement();
    //desogn the sql statement
    String InsertSQL="INSERT INTO User(Name,Password) values('"+Register_name+"','"+Register_password+"')";
    System.out.println(Register_name+"\t"+Register_password);

    //do the query operation,and here is the most important sql statement.
    int FLAG=stmt.executeUpdate(InsertSQL);

    if(FLAG>0){
        response.getWriter().write("Congratulation! REgister Success!");
    }else{
        response.getWriter().write("Sorry!Register Failed!\nPlease Retry it!");
    }
}catch(SQLException e){

}
%>

</body>
</html>

小总结:

不足之处:

  • 对于数据库的操作做得不够好,没有及时的将不用的资源关闭,应该及时的对那些不用的打开的资源进行关闭操作,释放资源。
  • 界面效果做的不够好,response输出是先于out的输出的。
  • 数据库操作显得过于繁琐,应该集成一下,做一个专门处理数据库操作的工具包,以实现代码的良好的复用性!

登录模块


首先是登录界面,login.jsp,鄙人加进去一个超链接(用意是让login.jsp作为门户页面,实现登录注册合二为一的效果,虽然二者并没有合二为一,而且注册界面过于简单了),大家就先凑活看吧。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>User Login Page</title>
</head>
<body>

<hr><br>Welcome to this <font color="green">Login Page</font>!<br>
<form action="do_login.jsp" method="get">
<br>
<h1>Please input your message:</h1><br>
Name:<input type="text" name="name"><br>
Pswd:<input type="password" name="password"><br>
<br><br><br>
<input type="submit">&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset"><br>
Click me to <font color="green"><a href="register.jsp">Register</a>!</font><br>

</form>

</body>
</html>

然后是对登录信息的处理页,do_login.jsp:

<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Server Page Depend !</title>
</head>
<body>
<h3>Which Pae will be depend by the user's message!</h3>

<%
    String name=request.getParameter("name");
    String password=request.getParameter("password");
%>

<%
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/summer", "root", "mysql");
    Statement stmt=conn.createStatement();
    //desogn the sql statement
    String queryNumberSQL="SELECT Name from User where Name='"+name+"' and Password='"+password+"'";
    //do the query operation
    ResultSet rs=stmt.executeQuery(queryNumberSQL);
    boolean flag=false;
    if(rs.next()){
        flag=true;
        session.setAttribute("UserName", name);
    }else{
        flag=false;
    }

%>
<%
    if(flag){
%>
<jsp:forward page="login_success.jsp"></jsp:forward>
<%
    }else{

%>
<jsp:forward page="login_failed.jsp"></jsp:forward>
<%
    }
%>

</body>
</html>

对于登陆成功的用户,跳转到登陆成功界面login_success.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>User Login Success Page!</title>
</head>
<body>
<hr><br>
<h1>Login Success!</h1><br>
<font color="green">Welcome <%=session.getAttribute("UserName") %>!</font>

<h3 align="center">your persional Message is:</h3>
<%
    out.println("Name:"+session.getAttribute("UserName"));
%>
<font color="red"><a href="login.jsp">Click me</a> to log out!</font>

</body>
</html>

对于登录失败的用户,进行温馨的页面提示,login.failed.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Login Failed Page!</title>
</head>
<body>
<hr>
<br>
<h1><font color="red">Sorry,Login Failed</font></h1><br>
<font color="red"><a href="login.jsp">Click me</a> to login!</font>
</body>
</html>

大总结:


进步之处:

  • 使用到了session对象来存储用户登录的姓名信息,实现了页面间的信息的交互
  • 配合了MySQL,在一定程度上体验了JEE的模式

不足之处:

  • 代码过于繁冗,复用性不好
  • 资源利用率不高,使用过的不再使用的资源要及时的进行关闭。虽然java虚拟机有自动的垃圾回收机制,但最好还是养成好的习惯!
  • 界面控制做的不够好,体验性差,欠缺思考

待改进之处:

  • 加上复杂一点的用户注册,使用bean的方式做处理比较好
  • 模块化,使用MVC的概念
  • 改善界面的权限,防止盗链
  • 加上其他的诸如上传文件,下载文件功能,丰富网站的功能。

JSP +MySQL实现网站的登录与注册小案例的更多相关文章

  1. JSP+MySQL最简单的登录和注册的实现 --Java Web温习

    一.开发环境 开发工具:eclipse 2018-09 操作系统:win10 二.实现 1.目录结构: 2.数据库(创建tmp数据库,新建user表,user表结构如下) 3.功能简介 功能比较简单, ...

  2. Java Spring+Mysql+Mybatis 实现用户登录注册功能

    前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...

  3. jsp实现账户登录、注册!

    jsp连接mysql数据库进行账户登录验证和账户注册 ~jsp: Login.jsp .LoginCl.jsp.Welcome.jsp.Register.jsp.login.css login.css ...

  4. 用纯jsp实现用户的登录、注册与退出

    用户的登录.注册和退出是一个系统最常见的功能,现将各功能用jsp代码表示出来 用户的登录: 其中connDB是数据库连接类,将用户名username放入session中 <%@ page con ...

  5. jsp+postgresql学习笔记(1)用户登录与注册

    前期准备: tomcat的安装与配置(略) jdk的安装与配置(略) eclipse软件安装与配置(略) webstrom软件或IDEA的安装与配置(大概用了IDEA就不需要eclipse了,但是怎么 ...

  6. Django用户登录与注册系统

    一.创建项目 1.1.创建项目和app python manage.py startproject mysite_login python manage.py startapp login 1.2.设 ...

  7. IDEA搭建SSM实现登录、注册,数据增删改查功能

     本博文的源代码:百度云盘/java/java实例/SSM实例/SSM实现登录注册,增删改查/IDEA搭建SSM实现登录,注册,增删改查功能.zip 搭建空的Maven项目 使用Intellij id ...

  8. 基于struts2和hibernate的登录和注册功能——完整实例

    1.该项目使用MySQL数据库,数据库名为test,表名info,如图所示: 2.配置web.xml(Struts2使用) <?xml version="1.0" encod ...

  9. mybatis 和servlet使用MVC实现用户登录,注册,退出

    普通实现: USerMapper.java: package com.bjsxt.mapper; import org.apache.ibatis.annotations.Param; import ...

随机推荐

  1. 浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别

    浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别 Spring 2.5 版本新增了注解功能, 通过注解,代码编写简化了很多:但熟悉注解的使 ...

  2. Gethub readme 撰写

    大标题=== 小标题----- #一级标题 ##二级标题 ###三级标题 ####四级标题 #####五级标题 ######六级标题 插入圆点* 昵称:果冻虾仁 * 别名:隔壁老王 * 英文名:Jel ...

  3. Vue生命周期-手动挂载理解

    改前端遇到个bug,console能够输出值,但是前端不能显示. 我简直一脸懵逼,vue的问题?网络的问题?浏览器的缓存问题? 公司网络,所以直接排除网络问题. 浏览器缓存,试了下确实一定概率可以显示 ...

  4. Java阻塞队列的实现

    阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞.试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列 ...

  5. 原生js去掉所有的html标签,最终得到HTML标签中的所有内容

    替换掉所有的 html标签,最终得到Html标签中的内容 <script> //替换掉所有的 html标签,最终得到Html标签中的内容 var req="<div sty ...

  6. 关于spring定时任务被多次调用的问题

    在项目开发中,难免会用到定时任务,如果你的项目中用了spring这个框架,那么恭喜你,你的定时任务的创建将变得无比简单. 代码中只需要一个 @Scheduled标签,然后配置对应的执行频率即可 pas ...

  7. Jmeter(一)_环境部署

    简介: Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试CS/BS的软件.它可以用来测试静态和动态资源的性能,可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分 ...

  8. Jupyter Notebook 添加目录

    1.  安装 jupyter_contrib_nbextensions pip install jupyter_contrib_nbextensions 2. 配置 nbextension jupyt ...

  9. 在查询语句中使用 NOLOCK 和 READPAST

    对于非银行等严格要求事务的行业,搜索记录中出现或者不出现某条记录,都是在可容忍范围内,所以碰到死锁,应该首先考虑,我们业务逻辑是否能容忍出现或者不出现某些记录,而不是寻求对双方都加锁条件下如何解锁的问 ...

  10. CNN在中文文本分类的应用

    深度学习近一段时间以来在图像处理和NLP任务上都取得了不俗的成绩.通常,图像处理的任务是借助CNN来完成的,其特有的卷积.池化结构能够提取图像中各种不同程度的纹理.结构,并最终结合全连接网络实现信息的 ...