📅  最后修改于: 2023-12-03 15:34:56.772000             🧑  作者: Mango
本文介绍了在 Servlet 中使用 Cookie 进行用户登录和注销的示例代码,通过 Cookie 来保存用户信息以便实现免登陆等功能。
本示例使用 Java Servlet 和 JSP 页面实现,主要通过 Servlet 提供登录和注销功能,JSP 页面显示用户信息和提示信息。在登录时,通过获取用户输入的用户名和密码,将其与数据库中的用户信息进行比对,如果验证通过则将用户信息存放进 Cookie 中。在注销时,将存放用户信息的 Cookie 删除即可。
本示例使用了以下技术:
@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");
}
}
<%@ 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 页面用于显示用户信息和提示信息。这种方式可以使用户登录后在一定时间内免登陆,提升用户体验。