【初學javeEE】如何通過使用數據庫實現簡單的用戶登陸註冊頁面功能

  1. 登陸:
    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>
<form action="LoginServlet" method="post">
<table>
<tr>
<td>用戶名:</td>
<td><input type="text" name="user" /></td>
</tr>

<tr>
<td>密碼:</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td><input type="submit" value="登錄"/></td>
<td><input type="button" value="註冊" onclick="window.location.href('register.jsp')"/></td>
</tr>
</table>
</form>
</body>
</html>

servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=gb2312");
		response.setCharacterEncoding("gb2312");
		request.setCharacterEncoding("UTF-8");
		// TODO Auto-generated method stub
		String user = request.getParameter("user");   //從表單獲取用戶名
		String pass = request.getParameter("password");   //從表單獲取密碼
		System.out.println(user+pass);	//測試
		//判斷
		if (connectsql(user, pass) == 1){
			response.getWriter().println("登陸成功!"+"Hello " + user + "!");
			response.getWriter().println("<br/><a href='http://localhost:8080/project_1/login.jsp'>返回登陸頁面");
		}
		
			
		else if (connectsql(user, pass) == 2) {
			response.getWriter().println("密碼錯誤!請重新輸入");
			response.getWriter().println("<br/><a href='http://localhost:8080/project_1/login.jsp'>返回登陸頁面");
		}
		else {
			response.getWriter().println("登陸失敗!"+"Sorry " + user + "!"+"請先進行註冊");
			response.getWriter().println("<br/><a href='http://localhost:8080/project_1/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);
	}  
	@SuppressWarnings("resource")
	protected int connectsql(String username, String password){
			Connection connection = null;
			PreparedStatement preparedStatement = null;
			ResultSet resultSet = null;
			try {
				Class.forName("com.mysql.cj.jdbc.Driver");				// 加載數據庫驅動
				// 通過驅動管理類獲取數據庫鏈接
				connection = DriverManager
					.getConnection("jdbc:mysql://localhost:3306/login?serverTimezone=UTC&characterEncoding=utf-8","root", "PdM46t");
				String sql = "select * from record";				// 定義sql語句 
				// 獲取預處理statement
				preparedStatement = connection.prepareStatement(sql);
				// 向數據庫發出sql執行查詢,查詢出結果集
				resultSet = preparedStatement.executeQuery();
				// 遍歷查詢結果集
				while (resultSet.next()) {
					System.out.println(resultSet.getString("user") + "  "
							+ resultSet.getString("password"));
					if (resultSet.getString("user").equals(username))
						if (resultSet.getString("password").equals(password))
							return 1;		//用戶名密碼正確,返回1
						else
							return 2;		//用戶名正確,密碼錯誤,返回2
				}
			} 
			catch (Exception e) {
				e.printStackTrace();
			} finally {
				// 釋放資源
				if (resultSet != null) {
					try {
						resultSet.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				if (preparedStatement != null) {
					try {
						preparedStatement.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				if (connection != null) {
					try {
						connection.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
			//用戶名不存在,返回0
			return 0;
		}

  1. 註冊:

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>
<form action="RegisterServlet" method="post">
<table>
<tr>
<td>用戶名:</td>
<td><input type="text" name="user" /></td>
</tr>

<tr>
<td>密碼:</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td><input type="submit" value="註冊"/></td>
<td><input type="button" value="返回" onclick="window.location.href('login.jsp')"/></td>
</tr>
</table>
</form>
</body>
</html>

servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=gb2312");
		response.setCharacterEncoding("gb2312");
		request.setCharacterEncoding("UTF-8");
		  String user = request.getParameter("user");   //從表單獲取用戶名
		String pass = request.getParameter("password");   //從表單獲取密碼
		//response.getWriter().println(user+pass);	//測試
			connectsql(user,pass);
		  response.getWriter().println("註冊成功");
		  response.getWriter().println("<br/><a href='http://localhost:8080/project_1/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);
	}
	protected int connectsql(String username, String password){
		Connection con = null;
		PreparedStatement pstm = null;
		try {
			// 加載數據庫驅動
			Class.forName("com.mysql.cj.jdbc.Driver");
			// 通過驅動管理類獲取數據庫鏈接
			con= DriverManager
					.getConnection(
							"jdbc:mysql://localhost:3306/login?serverTimezone=UTC&characterEncoding=utf-8",
							"root", "PdM46t");
			String sql = "insert into record(user,password) value(?,?)";
			pstm = con.prepareStatement(sql);
			pstm.setString(1, username);
			pstm.setString(2, password);
			int row = pstm.executeUpdate();
			System.out.println("新增數據爲:" + row + "條");
		} 
		catch (ClassNotFoundException e) {
			e.printStackTrace();
		} 
		catch (SQLException e) {
			e.printStackTrace();
		}
		finally{
			if(con != null){
				try {
					con.close();
				} 
				catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(pstm != null){
				try {
					pstm.close();
				} 
				catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
		return 0;
	}

數據庫:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章