1.创建一个数据库,在数据库建立用户表,插入几条用户数据。
2. 编写一个JavaBean“User.java”,它包含属性stuno(String)、password(String)、stuname(String),并编写相应的getter和setter方法。
3.编写一个登录页面,输入学号和密码,在数据库中进行验证,如果验证通过,则在另一个页面中显示学生的姓名;如果验证不通过,返回登录页面,并提示用户不存在信息。要求数据提交到Servlet中进行处理,使用JavaBean封装学生信息,使用DAO查询数据库。
实验代码:
package com.example;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String stuno = request.getParameter("stuno");
String password = request.getParameter("password");
User user = new User();
user.setStuno(stuno);
user.setPassword(password);
UserDAO userDAO = new UserDAO();
boolean isAuthenticated = userDAO.authenticate(user);
if (isAuthenticated) {
request.getSession().setAttribute("user", user);
response.sendRedirect("success.jsp");
} else {
response.sendRedirect("login.jsp?error=1");
}
}
}
package com.example;
public class User {
private String stuno;
private String password;
private String stuname;
// Getter for stuno
public String getStuno() {
return stuno;
}
// Setter for stuno
public void setStuno(String stuno) {
this.stuno = stuno;
}
// Getter for password
public String getPassword() {
return password;
}
// Setter for password
public void setPassword(String password) {
this.password = password;
}
// Getter for stuname
public String getStuname() {
return stuname;
}
// Setter for stuname
public void setStuname(String stuname) {
this.stuname = stuname;
}
}
package com.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDAO {
private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/student_db";
private static final String USER = "root";
private static final String PASS = "123456";
public boolean authenticate(User user) {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
boolean result = false;
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
String sql = "SELECT * FROM user_table WHERE stuno =? AND password =?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, user.getStuno());
stmt.setString(2, user.getPassword());
rs = stmt.executeQuery();
if (rs.next()) {
user.setStuname(rs.getString("stuname"));
result = true;
}
} catch (SQLException | ClassNotFoundException 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();
}
}
return result;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<form action="LoginServlet" method="post">
学号: <input type="text" name="stuno"><br>
密码: <input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
<%@ page import="com.example.User" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>欢迎页面</title>
</head>
<body>
<h1>欢迎您,${user.stuname}!</h1>
<%
User user = (User) session.getAttribute("user");
if (user == null) {
out.println("用户对象在会话中不存在");
} else {
out.println("用户对象存在,姓名为:" + user.getStuname());
}
%>
</body>
</html>