jsp访问mysql数据库实现注册登录功能

  • Post author:
  • Post category:mysql



当初学习Javaweb时做的小demo,没想到有许多小伙伴可以刷到,如果对你有帮助的话,帮忙Star一下,


源码已放到码云上:

https://gitee.com/zhongxia621/mywebproject

上次用jdbc在java控制台实现了用户登录注册功能,最近在学习Javaweb,有了一些jsp基础,正好写一篇jsp访问MySQL数据库实现网页简易用户注册登录功能。

首先将新建的Web项目添加到Tomcat中

接下来导包

将mysql jar包粘贴到lib目录下

接下来开始写简易注册界面(zhuce.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册界面</title>
</head>
<body style="background: url(1.jpg)" align="center">
<font color="purple" size="5px">注册新用户</font><br><br>
<form action="jiancha.jsp" method="post">
用户名:  <input type="text" name="name" placeholder="用户名不超过六位"><br><br>
    密码:  <input type="password" name="pwd" placeholder="密码不少于四位"><br><br>
确认密码: <input type="password" name="pwd1" placeholder="密码不少于四位"><br><br>
<input type="submit" value="注册"><br><br>
<a href="login.jsp"><font color="blue">已有账号点此登录</font></a>
</form>
</body>
</html>

效果:

接下来写注册的java代码(register函数中主要就是jdbc执行过程,后面的same函数新加的为了判断注册的用户是否和数据库用户名重复)

package mywebproject;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;


public class RegisterDao {
	ArrayList<String> array=new ArrayList<>();
	public int register(String name,String pwd,String pwd1) throws SQLException
	{
		        ResultSet rs=null;
				Connection conn=null;
				Statement st=null;
				Statement st1=null;
				int count=0;
				try {
					Class.forName("com.mysql.cj.jdbc.Driver");
					String url="jdbc:mysql://localhost:3306/suzy?useSSL=false&serverTimezone=Asia/Shanghai";
					String user="root";
					String password="10086";
					conn=DriverManager.getConnection(url, user, password);
					String sql1="select username from t_user";
					st=conn.createStatement();
					st1=conn.createStatement();
					rs=st1.executeQuery(sql1);
					while(rs.next())
					{
						String sname=rs.getString("username");
						array.add(sname);
					}
					if(name.length()>=1&&name.length()<=6&&pwd.length()>=4&&pwd.equals(pwd1)&&same(name,array))
					{
						String sql="insert into t_user(username,password) values('"+name+"','"+pwd+"')";
						count=st.executeUpdate(sql);
					}
					
					
				} catch (ClassNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}finally
				{
					if(rs!=null)
					{
						rs.close();
					}
					if(st1!=null)
					{
						st.close();
					}
					if(st!=null)
					{
						st.close();
					}
					if(conn!=null)
					{
						conn.close();
					}
					
				}
				
				return count;
	}
	public boolean same(String name,ArrayList<String> array)
	{
		
		for(String s:array)
		{
			if(name.equals(s))
			{
				return false;
			}
		}
		return true;
	}
	
}

接下来写服务端检查注册是否成功(jaincha.jsp)

注意:首先将编码设为utf-8,要不会导致你的数据库添加的中文名字会乱码,然后将刚才的java类new一个对象调用register方法去接收返回值,以此来判断注册是否成功。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="mywebproject.RegisterDao" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
String pwd1=request.getParameter("pwd1");
RegisterDao re=new RegisterDao();
int count=re.register(name,pwd,pwd1);
if(count==1&&name.length()>=1&&name.length()<=6&&pwd.length()>=4&&pwd.equals(pwd1))
{
	   %>
		<a href="login.jsp"><font color="pink" size="8px">注册成功点此登录</font></a>
		<%
}
else if(count==0)
{
	
	
	 if(name.length()>=1&&name.length()<=6&&pwd.length()>=4&&!pwd.equals(pwd1))
	{
		%>
		<a href="zhuce.jsp"><font color="green" size="6px">再次输入密码不一致点此返回上一级</font></a>
		<%
	}
	else
	{
       %>
		<a href="zhuce.jsp"><font color="green" size="6px">用户名重复或者用户名密码不符合要求点此返回上一级</font></a>
		<%
	}
	
}


%>
</body>
</html>

成功界面效果:

用户名重复或输入不符合要求:

接下来写简易登录界面(login.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录界面</title>
</head>
<body style="background: url(3.jpg)" align="center">
<font color="green" size="5px">登录界面-代码改变世界</font><br><br>
<form action="check.jsp" method="post">
用户名:<input type="text" name="name"><br><br>
密码:<input type="password" name="pwd"><br><br>
<input type="submit" value="登录"><br><br>
</form>

</body>
</html>

效果:

接下来写登录的java代码

package mywebproject;
import java.sql.*;
public class LoginDao {
public boolean login(String name,String pwd) throws ClassNotFoundException, SQLException
{
	
	Statement st=null;
	Connection conn=null;
	ResultSet rs=null;
	PreparedStatement ps=null;
	boolean flag=false;
	try {
		 Class.forName("com.mysql.cj.jdbc.Driver");
			//2.获取数据库连接
			String url="jdbc:mysql://localhost:3306/suzy?useSSL=false&serverTimezone=Asia/Shanghai";
			String user="root";
			String password="10086";
		conn=DriverManager.getConnection(url, user, password);
		//3.获取数据库操作对象
		
		String sql="select username from t_user where username= ? and password = ?";
		//sql语句进行预编译
		ps=conn.prepareStatement(sql);
		//对sql语句进行赋值
		ps.setString(1, name);
		ps.setString(2, pwd);
		rs=ps.executeQuery();
		
		if(rs.next())
		{
			flag=true;
		}
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally
	 {
		if(rs!=null)
		{
			rs.close();
		}
		if(ps!=null)
		{
			
			ps.close();
		}
		if(conn!=null)
		{
			conn.close();
		}
	 }
	return flag;
}
}

接下来写接下来写服务端检查登录是否成功(check.jsp)

注意:

首先还是设置utf-8编码,经过测试如果使用中文用户名登录不设置utf-8编码,会显示用户名或密码错误

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@ page import="mywebproject.LoginDao"%>   
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
LoginDao dao=new LoginDao();
boolean flag=dao.login(name,pwd);
if(flag)
{
	%>
	<a href="success.jsp"><font color="pink" size="8px">登陆成功点此进入</font></a>
	<%
}
else
{
	%>
	<a href="login.jsp"><font color="pink" size="8px">您输入的用户名或密码错误点此返回上一级</font></a>
	<%
}
%>
</body>
</html>

成功效果:

用户名或密码出错:

数据库信息:

因为本人没有专门花时间去学习html/css/js,所以界面直接采用了背景图片以及form表格实现,主要就是解决用户注册输入是否合法,以及登录采用数据库信息去登录。



版权声明:本文为qq_39059193原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。