当初学习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表格实现,主要就是解决用户注册输入是否合法,以及登录采用数据库信息去登录。