软工博客24
一个登录系统:
后端:
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 java.io.IOException;
import java.sql.*;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
// 数据库配置 - 应该放在配置文件中
private static final String DB_URL = "jdbc:mysql://localhost:3306/gw?serverTimezone=UTC";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "your_password";
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if(username == null || username.trim().isEmpty() ||
password == null || password.trim().isEmpty()) {
request.setAttribute("error", "用户名和密码不能为空");
request.getRequestDispatcher("index.html").forward(request, response);
return;
}
try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
PreparedStatement pstmt = conn.prepareStatement(
"SELECT user_id, username FROM users WHERE username = ? AND password = ?")) {
pstmt.setString(1, username);
pstmt.setString(2, password); // 实际应该比较哈希值
try (ResultSet rs = pstmt.executeQuery()) {
if (rs.next()) {
// 登录成功,创建会话
HttpSession session = request.getSession();
session.setAttribute("user_id", rs.getInt("user_id"));
session.setAttribute("username", rs.getString("username"));
// 重定向到购物页面
response.sendRedirect("gouwu.jsp");
} else {
// 登录失败
request.setAttribute("error", "用户名或密码错误");
request.getRequestDispatcher("index.html").forward(request, response);
}
}
} catch (SQLException e) {
e.printStackTrace();
request.setAttribute("error", "系统错误,请稍后再试");
request.getRequestDispatcher("index.html").forward(request, response);
}
}
}
前端:

浙公网安备 33010602011771号