javaServlet实现cookie加session登录

渡星河
2023-02-16 / 0 评论 / 8 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年02月16日,已超过580天没有更新,若内容或图片失效,请留言反馈。

实现思路

以下是一个使用 Cookie 和 Session 结合实现登录的 Java Servlet 代码示例:

@WebServlet("/login")
public class LoginServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        if ("admin".equals(username) && "password".equals(password)) {
            HttpSession session = request.getSession();
            session.setAttribute("loggedIn", true);
            session.setAttribute("username", username);

            // 创建 Cookie
            Cookie cookie = new Cookie("user", username);
            cookie.setMaxAge(3600);
            response.addCookie(cookie);

            response.sendRedirect("welcome.jsp");
        } else {
            response.sendRedirect("login.jsp");
        }
    }

}


在欢迎页面或其他需要登录的页面中,我们可以使用如下代码来检查用户是否已经登录:

HttpSession session = request.getSession();
Cookie[] cookies = request.getCookies();
if (session.getAttribute("loggedIn") != null && (Boolean) session.getAttribute("loggedIn")) {
    // 用户已经登录
    String username = (String) session.getAttribute("username");
    // ...
} else if (cookies != null) {
    // 从 Cookie 中读取用户名
    for (Cookie cookie : cookies) {
        if (cookie.getName().equals("user")) {
            String username = cookie.getValue();
            // 将用户名存储在 Session 中,用于验证登录状态
            session.setAttribute("loggedIn", true);
            session.setAttribute("username", username);
            break;
        }
    }
}

if (session.getAttribute("loggedIn") != null && (Boolean) session.getAttribute("loggedIn")) {
    // 用户已经登录
    String username = (String) session.getAttribute("username");
    // ...
} else {
    // 用户未登录,重定向到登录页面
    response.sendRedirect("login.jsp");
}

在使用 Cookie 和 Session 时,应该注意避免一些安全漏洞
0

评论 (0)

取消