实验十 网站用户登录
****一、实验目的 ****
熟练JDBC的基本概念和原理;
掌握使用JDBC进行数据库连接和操作的方法;
实践使用JDBC进行数据库操作。
二、实验内容
大型网站只有在用户登录成功后才能进行相关操作,本次实验要求实现一个如下图所示用户登录功能。
- 首先创建一个数据库表user,包含字段id(主键),username,password,name,gender,phonenumber,identitycode,其中id为学号;
- 在用户登录时,在数据库中判断是否存在该用户的username,如果不存在,显示“用户名不存在”,如果存在,则判断password是否正确,如果不正确,显示“密码错误,请重新输入”,否则,跳转到登录成功页面。
三、实验结果(源代码、运行截图)
源代码
LoginServlet.java:
package xxx;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.sql.*;
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println(username);
System.out.println(password);
String url = "jdbc:mysql://localhost:3306/javatest10";
String user = "root";
String passwordDb = "123456";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(url, user, passwordDb);
String sql = "SELECT * FROM user WHERE username = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
rs = pstmt.executeQuery();
if (rs.next()) {
// 用户名存在
String dbPassword = rs.getString("password");
if (dbPassword.equals(password)) {
// 密码正确,登录成功
response.sendRedirect("success.jsp"); // 跳转到成功页面
} else {
// 密码错误
request.setAttribute("error", "密码错误,请重新输入");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
} else {
// 用户名不存在
request.setAttribute("error", "用户名不存在");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
login.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 50vh;
margin: 0;
background-color: #f0f0f0;
}
.container {
text-align: center;
}
.form-group {
margin-bottom: 15px; /* 调整输入框之间的间距 */
}
.btn-login {
display: inline-block;
padding: 10px 20px;
font-size: 16px;
color: white;
background-color: green; /* 设置按钮背景为绿色 */
border: none;
border-radius: 4px; /* 设置按钮边框圆角 */
cursor: pointer;
}
</style>
</head>
<body>
<div class="container">
<form method="post" action="loginServlet">
<div class="form-group">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
</div>
<div class="form-group">
<label for="password"> Password:</label>
<input type="password" id="password" name="password" required>
</div>
<div class="form-group">
<input type="submit" value="登录" class="btn-login">
</div>
</form>
<%-- 显示错误信息 --%>
<c:if test="${not empty error}">
<p style="color: red;" class="error">${error}</p>
</c:if>
</div>
</body>
</html>
success.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>
<h1>登录成功!</h1>
</body>
</html>
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>xxx.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern> <!-- 与login.jsp中的form action对应 -->
</servlet-mapping>
</web-app>
运行截图
登录成功
用户名不存在
密码错误
版权归原作者 爱编程的松子 所有, 如有侵权,请联系我们删除。