📜  Servlet – 使用 Cookie 的登录和注销示例(1)

📅  最后修改于: 2023-12-03 15:34:56.772000             🧑  作者: Mango

Servlet - 使用 Cookie 的登录和注销示例

简介

本文介绍了在 Servlet 中使用 Cookie 进行用户登录和注销的示例代码,通过 Cookie 来保存用户信息以便实现免登陆等功能。

实现方式

本示例使用 Java Servlet 和 JSP 页面实现,主要通过 Servlet 提供登录和注销功能,JSP 页面显示用户信息和提示信息。在登录时,通过获取用户输入的用户名和密码,将其与数据库中的用户信息进行比对,如果验证通过则将用户信息存放进 Cookie 中。在注销时,将存放用户信息的 Cookie 删除即可。

涉及技术

本示例使用了以下技术:

  • Java Servlet
  • JSP
  • MySQL 数据库
  • JDBC 数据库连接
示例代码
登录功能
@WebServlet(name = "LoginServlet", urlPatterns = {"/login"})
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        User user = getUserFromDb(username, password); // 从数据库中获取用户信息

        if (user != null) {
            // 用户信息验证通过,将用户信息存放进 Cookie 中
            Cookie cookie = new Cookie("user", user.toJson());
            cookie.setMaxAge(60 * 60 * 24); // 设置 Cookie 的过期时间为一天
            response.addCookie(cookie);

            // 跳转到用户信息页面
            response.sendRedirect("/user");
        } else {
            // 用户信息验证不通过,返回登录页面并显示错误提示
            request.setAttribute("errorMessage", "用户名或密码错误");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
    }

    private User getUserFromDb(String username, String password) {
        // 从数据库中获取用户信息的逻辑
    }
}
注销功能
@WebServlet(name = "LogoutServlet", urlPatterns = {"/logout"})
public class LogoutServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 将存放用户信息的 Cookie 删除
        Cookie cookie = new Cookie("user", "");
        cookie.setMaxAge(0);
        response.addCookie(cookie);

        // 跳转到登录页面
        response.sendRedirect("/login.jsp");
    }
}
JSP 页面显示用户信息
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>用户信息</title>
</head>
<body>
    <h1>用户信息</h1>
    <p>用户名:${user.username}</p>
    <p>姓名:${user.name}</p>
    <p>年龄:${user.age}</p>
            
    <a href="${pageContext.request.contextPath}/logout">注销</a>
    <br />
    <br />
    <c:if test="${not empty errorMessage}">
        <p style="color: red;">${errorMessage}</p>
    </c:if>
</body>
</html>
总结

通过本篇示例代码,了解了如何在 Servlet 中使用 Cookie 实现用户登录和注销功能。其中,登录时将用户信息存放进 Cookie 中,注销时将存放用户信息的 Cookie 删除,JSP 页面用于显示用户信息和提示信息。这种方式可以使用户登录后在一定时间内免登陆,提升用户体验。