使用javaweb和mysql做最简单的登录注册(附带解释) ps:因为本人也是学生,如果发现错误请大家多多指教

完整的项目截图在这里插入图片描述

1.UserBean

package com.qst.bean;
//数据封装
public class UserBean {
	private String username,pwd,email;
	private int uid;
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public int getId() {
		return uid;
	}

	public void setId(int id) {
		this.uid = id;
	}
}

2.UserDao

package com.qst.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.qst.bean.UserBean;
import com.qst.util.DBUtil;



public class UserDao {
	//登录  
	//try  catch  finally  表示异常处理
	//try中包含可能出现异常的语句
	//catch 表示异常处理
	//finally  包含必须执行的语句
	public UserBean login(UserBean userbean) {
		//实例化Connection对象conn,连接数据库
		Connection conn = DBUtil.getConnection();
		//实例化PreparedStatement对象pstmt,用于传递sql语句
		PreparedStatement pstmt = null;
		//实例化ResultSet对象rs,用于返回结果
		ResultSet rs = null;
		//实例化UserBean对象userbrean,用于返回结果
		UserBean userbrean = null;
		
		//sql语句   ?代表占位符
		String sql = "select * from user where username=? and pwd=?";
		
		try {
			//运行sql语句
			pstmt = conn.prepareStatement(sql);
			//第一个问号的值
			pstmt.setString(1, userbean.getUsername());
			//第二个问号的值
			pstmt.setString(2, userbean.getPwd());
			//返回结果集
			rs = pstmt.executeQuery();
			
			while(rs.next())//遍历结果集
			{
				//将结果返回到userbrean,用于最后的return返回到login。
				userbrean = new UserBean();
				userbrean.setUsername(rs.getString("username"));
				userbrean.setUsername(rs.getString("pwd"));
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			//关闭
			DBUtil.closeJDBC(rs, pstmt, conn);
		}
		
		return userbrean;
	}
	//以下就是sql语句的差别,不做解释了
	//注册中查询用户名是否一样
	public boolean isExitEmail(String userid) {
		Connection conn = DBUtil.getConnection();
		PreparedStatement pstmt = null;
		ResultSet rs = null;
	
		String sql = "select * from user where username=?";
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, userid);
			rs = pstmt.executeQuery();
			
			while(rs.next())
			{
				//用户名重复
				return true;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			DBUtil.closeJDBC(rs, pstmt, conn);
		}
		//用户名没重复
		return false;
	}
		//注册
	public void save(String username, String pwd, String email) {
		Connection conn = DBUtil.getConnection();
		PreparedStatement pstmt = null;
		
		String sql = "insert into user (username,pwd,email)" +
					"values(?,?,?)";
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, username);
			pstmt.setString(2, pwd);
			pstmt.setString(3, email);
			pstmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			DBUtil.closeJDBC(null, pstmt, conn);
		}
		
	}


}

3.Login

package com.qst.servlet;

import java.io.IOException;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.swing.JOptionPane;

import com.qst.bean.UserBean;
import com.qst.dao.UserDao;


/**
 * Servlet implementation class Login
 */
@WebServlet("/Login")
public class Login extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Login() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		response.setContentType("text/html;charset=utf-8");
		// 从jsp页面读取用户名密码  括号里的名字需要和jsp页面的name属性一样(jsp中:name=username)
		String username = request.getParameter("username");
		String pwd = request.getParameter("pwd");
		
		//UserBean实例化一个对象,对象名(userbean)
		UserBean userbean = new UserBean();
		
		//传值给userbean对象
		userbean.setUsername(username);
		userbean.setPwd(pwd);
		
		
		//UserDao实例化一个对象,对象名(userdao)
		UserDao userdao = new UserDao();
		
		//UserBean实例化一个对象,对象名(user)
		//并将userdao对象调用的login方法的返回值赋值给user
		UserBean user = userdao.login(userbean);
		
		
			if (user != null) {//判断用户名密码是否存在
				//成功则跳转index.jsp页面,失败返回Login.jsp
				
				//HttpSession实例化一个对象,对象名(session)
				HttpSession session = request.getSession(); 
				//调用session的setAttribute方法,
				//将username的值赋值给key,在jsp页面中可以取出。
				session.setAttribute("key",username);
				
				//重定向
				response.sendRedirect("index.jsp");
			
				}
			else {
				
				//页面弹框,提示错误,可以不用。
				JOptionPane.showMessageDialog(null, "用户名或密码错误", null, JOptionPane.ERROR_MESSAGE);
				//重定向
				response.sendRedirect("Login.jsp");
			}
		} 
		
		
	

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

4RegisterServlet

package com.qst.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;

import com.qst.dao.UserDao;

/**
 * Servlet implementation class RegisterServlet
 */
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegisterServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		// 从jsp页面读取用户名密码,email
		String username = request.getParameter("username");
		String pwd = request.getParameter("password");
		String email = request.getParameter("email");
		
		//UserDao实例化一个对象,对象名(dao)
		UserDao dao = new UserDao();
		//boolean(布尔xing,只能是true和false)实例化一个对象,对象名(flag)
		//给dao的isExitEmail方法传值username,判断用户名是否重复
		//将返回值给flag
		boolean flag = dao.isExitEmail(username);
		if(flag){
			//用户名重复
			//弹框提示
			JOptionPane.showMessageDialog(null, "用户名已被注册,请重新注册", null, JOptionPane.ERROR_MESSAGE);
			//重定向Register页面
			response.sendRedirect("Register.jsp");
		}
		else{
			//用户名不重复
			
			//弹框提示
			JOptionPane.showMessageDialog(null, "注册成功!", null, JOptionPane.ERROR_MESSAGE);
			//调用dao的save方法,将数据保存到数据库
			dao.save(username,pwd,email);
			//重定向Login页面
			response.sendRedirect("Login.jsp");
			
		}
		
	}

}

5.DBUtil

package com.qst.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBUtil {
	//数据库mysql
	static String name = "root";//用户名
	static String password = "123456";//密码
	static String url = "jdbc:mysql://localhost:3306/zuoye";
	//MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称(zuoye)
	static {
		try{
			//加载驱动类
			Class.forName("com.mysql.jdbc.Driver");
		}catch(ClassNotFoundException e){
			e.printStackTrace();
		}
	}
	//进行数据库连接
	public static Connection getConnection() {
		Connection conn = null;
		try{
			conn = DriverManager.getConnection(url, name, password);
		}catch(SQLException e){
			e.printStackTrace();
		}
		return conn;
	}
	//关闭 rs,pstmt,conn
	public static void closeJDBC(ResultSet rs, PreparedStatement pstmt, Connection conn) {
		if(rs !=null){
			try{
				rs.close();
			}catch(SQLException e){
				e.printStackTrace();
			}
		}
		if(pstmt !=null){
			try{
				pstmt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		if(conn != null)
		{
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}

}

6index.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>Insert title here</title>

</head>
<%-- 提取session中内容    赋值给String类型name变量--%>
<%
	String name = (String) session.getAttribute("key");

%>
<body>

	<%-- 简单判断用户名是否存在   并输出  --%>
					<p>	
					<%if(name!=null){
						//从登录页面跳转,则显示
						out.print(name+"用户,欢迎您登录");}
					else{
						//直接打开显示
						out.print("您还没有登录");
					}%></p>

</body>
</html>

7Login.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>登录</title>

</head>
<body>
<h1>登录</h1>



			<%--  用form表单提交数据    action=“提交的servlet”  method=“提交方式”  --%>
			<form action="Login" method="post">
			<br><br><%--br 换行--%>
			<%-- type=“类型”  name=“名字”,和servlet中名字一样 placeholder=“输入框默认内容”   required 输入框不能为空   --%>
			<%-- type=“类型”   text表示文本输入    password表示密码输入(不可见)   --%>
				
				
				<input type="text" name="username" placeholder="用户名"  required="">
				<br><br>
				<input   type="password" name="pwd" placeholder="密码" required="">
			
			<br><br>
			
			
				
					<input type="submit" value="登 录">
			</div>
			
				<%-- 超链接  跳转注册--%>
			 <a href="Register.jsp">注册</a>
             
			
			</form>
			
			
			
</body>
</html>

8Register.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>注册</title>



</head>
<body>

	<h1>注册</h1>

	
	
			<%--  和login中一样不做解释  --%>
			<form action="RegisterServlet"  method="post">
				<input type="text" Name="username" placeholder="用户名" required="">
				<input type="email" Name="email" placeholder="邮箱" required="">
				<input type="password"  Name="password"  placeholder="密码" required="">
			
			
					<input type="submit"  value="注册">
			
			
			</form>
			<%-- 超链接  跳转登录页面--%>
		 <a href="Login.jsp">返回登录页面  </a>
	

</body>
</html>

9数据库

在这里插入图片描述

注意:其中id要设置自动递增
在这里插入图片描述

10运行截图

登录失败
在这里插入图片描述

登录成功
在这里插入图片描述

注册在这里插入图片描述

注册失败
在这里插入图片描述

注册成功
在这里插入图片描述

数据库(有时候需要刷新在这里插入图片描述

jar包:mysql-connector-java-5.1.39-bin 下载
链接:https://pan.baidu.com/s/1YyNl1dtaTYJdi8oFqwUQ8w
提取码:fur0

完整内容
链接:https://pan.baidu.com/s/1snS8eE8wI2KFsxdFbhv-hw
提取码:42xq

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现简易的注册登录功能,需要以下步骤: 1. 创建一个数据库,包含用户表,其中包括用户名和密码字段。 2. 在Java中创建一个Web应用程序,并使用JDBC连接到MySQL数据库。 3. 创建注册页面和登录页面,分别包括用户名和密码输入框以及提交按钮。 4. 在注册页面中,将用户输入的用户名和密码插入到MySQL数据库中。可以使用PreparedStatement对象来执行插入操作。 5. 在登录页面中,将用户输入的用户名和密码与数据库中的记录进行比较。如果用户名和密码匹配,则将用户重定向到主页或其他受保护的页面。 下面是一个简单的示例代码来实现这个功能: 1. 创建一个名为“users”的表,其中包含“username”和“password”字段。 ``` CREATE TABLE users ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(30) NOT NULL, password VARCHAR(30) NOT NULL ); ``` 2. 在Java中连接到MySQL数据库,可以使用以下代码: ``` String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "root"; String password = "mypassword"; Connection conn = DriverManager.getConnection(url, user, password); ``` 3. 创建注册页面和登录页面,可以使用HTML和JSP来实现。 4. 在注册页面中,将用户输入的用户名和密码插入到MySQL数据库中。可以使用以下代码: ``` String username = request.getParameter("username"); String password = request.getParameter("password"); PreparedStatement stmt = conn.prepareStatement("INSERT INTO users (username, password) VALUES (?, ?)"); stmt.setString(1, username); stmt.setString(2, password); stmt.executeUpdate(); ``` 5. 在登录页面中,将用户输入的用户名和密码与数据库中的记录进行比较。如果用户名和密码匹配,则将用户重定向到主页或其他受保护的页面。可以使用以下代码: ``` String username = request.getParameter("username"); String password = request.getParameter("password"); PreparedStatement stmt = conn.prepareStatement("SELECT * FROM users WHERE username=? AND password=?"); stmt.setString(1, username); stmt.setString(2, password); ResultSet rs = stmt.executeQuery(); if (rs.next()) { // 登录成功,将用户重定向到主页或其他受保护的页面 response.sendRedirect("home.jsp"); } else { // 登录失败,显示错误消息 request.setAttribute("errorMessage", "Incorrect username or password."); RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp"); dispatcher.forward(request, response); } ``` ### 回答2: 实现简易的注册登录功能,我们可以使用JavaWebMySQL来完成。 首先,我们需要创建一个数据库,并创建两张表:用户表和登录表。用户表用于存储用户的基本信息,包括用户名、密码、电子邮箱等字段;登录表用于存储用户的登录记录,包括用户名、登录时间等字段。 接下来,我们可以使用JavaWeb来实现注册和登录的功能。对于注册功能,用户输入用户名、密码、电子邮箱等信息,然后将这些信息插入到用户表中即可。在插入前,需要先判断用户名是否已经存在,如果存在则提示用户重新选择用户名;如果不存在,则将用户信息插入到用户表中。 对于登录功能,用户输入用户名和密码,然后根据输入的用户名在用户表中查找对应的记录。如果用户名不存在,则提示用户重新输入;如果存在该用户名,则判断密码是否匹配,如果匹配则登录成功,否则提示用户密码错误。 在实现过程中,我们可以使用JDBC来连接Java和MySQL数据库,使用SQL语句来操作数据库表。可以使用PreparedStatement来预编译SQL语句,以提高执行效率和防止SQL注入攻击。可以使用Cookie来记录用户登录状态,实现自动登录功能。 总之,通过JavaWebMySQL的结合,我们可以实现简易的注册登录功能,提供用户注册和登录的基本操作,以满足基本的用户认证需求。 ### 回答3: 要实现简易的注册登录功能,可以使用JavaWebMySQL进行开发。 首先,在MySQL数据库中创建一个用户表,表中包含用户名和密码两个字段。可以使用以下SQL语句创建表: ```sql CREATE TABLE user( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL ); ``` 接下来,在JavaWeb中,通过编写Java代码实现注册和登录的功能。可以使用JDBC连接MySQL数据库,实现与数据库的交互。 对于注册功能,用户在注册页面中输入用户名和密码,通过Java代码将用户输入的数据插入到MySQL数据库的用户表中。可以使用以下代码示例: ```java import java.sql.*; public class Register { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/db_name"; // 数据库连接地址 String username = "root"; // 数据库用户名 String password = "password"; // 数据库密码 Connection conn = null; PreparedStatement stmt = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); // 加载MySQL驱动程序 conn = DriverManager.getConnection(url, username, password); // 建立数据库连接 String sql = "INSERT INTO user (username, password) VALUES (?, ?)"; // SQL插入语句 stmt = conn.prepareStatement(sql); // 创建PreparedStatement对象 String newUsername = "newUser"; // 用户输入的用户名 String newPassword = "newPassword"; // 用户输入的密码 stmt.setString(1, newUsername); // 设置用户名参数 stmt.setString(2, newPassword); // 设置密码参数 int rows = stmt.executeUpdate(); // 执行插入操作 if (rows > 0) { System.out.println("注册成功"); } else { System.out.println("注册失败"); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 对于登录功能,用户在登录页面中输入用户名和密码,通过Java代码查询数据库中是否存在与用户输入匹配的用户记录。可以使用以下代码示例: ```java import java.sql.*; public class Login { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/db_name"; // 数据库连接地址 String username = "root"; // 数据库用户名 String password = "password"; // 数据库密码 Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); // 加载MySQL驱动程序 conn = DriverManager.getConnection(url, username, password); // 建立数据库连接 String sql = "SELECT * FROM user WHERE username = ? AND password = ?"; // SQL查询语句 stmt = conn.prepareStatement(sql); // 创建PreparedStatement对象 String inputUsername = "inputUser"; // 用户输入的用户名 String inputPassword = "inputPassword"; // 用户输入的密码 stmt.setString(1, inputUsername); // 设置用户名参数 stmt.setString(2, inputPassword); // 设置密码参数 rs = stmt.executeQuery(); // 执行查询操作 if (rs.next()) { System.out.println("登录成功"); } else { System.out.println("登录失败"); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 通过以上代码可以实现简易的注册登录功能,用户可以在注册页面中输入用户名和密码进行注册,然后在登录页面中输入对应的用户名和密码来进行登录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值