Java Servlet Cookie登录状态检测

这个博客介绍了如何使用Java Servlet结合Cookie实现用户登录状态管理。通过`GetCookie.java`检查用户是否已登录,`ClearCookie.java`用于清除Cookie,`ShowCookie.java`展示Cookie信息。用户在`login.jsp`页面输入用户名和密码后,登录状态会通过Cookie存储,并根据Cookie信息重定向到相应页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

index.jsp

<%--
  Created by IntelliJ IDEA.
  User: adler
  Date: 2018/11/9
  Time: 7:09 PM
  To change this template use File | Settings | File Templates.
--%>

<%@ pagecontentType="text/html;charset=UTF-8language="java" %>
<html>
<head>
    <title>用户登录系统</title>
</head>
<script type="text/javascript">
    function directUrl() {
        
window.location.href="/GetCookie";
        
return;
    }
</
script>
<body onload="directUrl()">
<h1>正在跳转...</h1>
</body>
</html>

login.jsp

<%--
  Created by IntelliJ IDEA.
  User: adler
  Date: 2018/11/9
  Time: 7:09 PM
  To change this template use File | Settings | File Templates.
--%>

<%@ pagecontentType="text/html;charset=UTF-8language="java" %>
<html>
  <head>
    <title>用户登录系统</title>
  </head>
  <body>
  <form method="post" target="_blank" action="/Servlet">
    用户名:<input type="text" name="name"/>
    <br>
    密码:<input type="password" name="passwd"/>
    <button type="submit">登录</button>
  </form>
  <br>
  <form method="post" target="_blank" action="/GetCookie">
    <button type="submit">登录状态检测</button>
  </form>
  <form method="post" action="/ClearCookie">
    <button type="submit">清除Cookie</button>
  </form>
  <form method="post" action="/ShowCookie">
    <button type="submit">查看Cookie</button>
  </form>
  </body>
</html>

red.jsp

<%--
  Created by IntelliJ IDEA.
  User: adler
  Date: 2018/11/10
  Time: 12:12 PM
  To change this template use File | Settings | File Templates.
--%>

<%@ pagecontentType="text/html;charset=UTF-8language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>欢迎回来!</h1>
<href="/ClearCookie">注销登录</a>
</body>
</html>

login.jsp重定向到:>>GetCookie.java<<判断是否已经登录过(有Cookie信息)

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;

@WebServlet("/GetCookie")
public class GetCookie extends HttpServlet {
    
@Override
    
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setHeader(
"Content-type""text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        Cookie cookie = 
null;
        Cookie[] cookies = 
null;
        cookies = req.getCookies();
        String title = 
"Delete Cookie Example";
        String docType = 
"<!DOCTYPE html>\n";
        out.println(docType +
                
"<html>\n+
                
"<head><title>" + title + "</title></head>\n+
                
"<body bgcolor=\"#f0f0f0\">\n");
        
if (cookies != null) {
            out.println(
"<h2>Cookie 名称和值</h2>");
            
for (int i = 0; i < cookies.length; i++) {
                cookie = cookies[i];
                out.print(
"名称:+ cookie.getName() + "");
                out.print(
"值:+ URLDecoder.decode(cookie.getValue(), "utf-8") + " <br/>");
                String str = URLDecoder.decode(cookie.getValue(),
"utf-8");
                
if (str.equals("null")) {
                    resp.sendRedirect(
"/login.jsp"); //如果没登录跳转到主界面
                    break;
                } 
else {
                    resp.sendRedirect(
"/red.jsp");
                    
break;
                }
            }
        }
    }

    
@Override
    
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

ClearCookie.java

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/ClearCookie")
public class ClearCookie extends Servlet{


    
@Override
    
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Cookie cookie = 
new Cookie("usernm""null");
        resp.setHeader(
"Content-type""text/html;charset=UTF-8");
        resp.addCookie(cookie);
        System.
out.println("successful clear cookie");
        PrintWriter out = resp.getWriter();
        out.print(
"注销成功!<a href=\"login.jsp\">重新登录</a>");
    }
}

ShowCookie.java

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;

@WebServlet("/ShowCookie")
public class ShowCookie extends HttpServlet {
   
@Override
    
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setHeader(
"Content-type""text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        Cookie cookie = 
null;
        Cookie[] cookies = 
null;
        cookies = req.getCookies();
        String title = 
"Delete Cookie Example";
        String docType = 
"<!DOCTYPE html>\n";
        out.println(docType +
                
"<html>\n+
                
"<head><title>" + title + "</title></head>\n+
                
"<body bgcolor=\"#f0f0f0\">\n");
        
if (cookies != null) {
            out.println(
"<h2>Cookie 名称和值</h2>");
            
for (int i = 0; i < cookies.length; i++) {
                cookie = cookies[i];
                out.print(
"名称:+ cookie.getName() + "");
                out.print(
"值:+ URLDecoder.decode(cookie.getValue(), "utf-8") + " <br/>");
            }
        }
    }

    
@Override
    
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

Servlet.java

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/Servlet")
public class Servlet extendsHttpServlet {
    
@Override
    
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    
@Override
    
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setHeader(
"Content-type""text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        out.print(
"<!DOCTYPE html><head><title>Test page</title></head>");
        out.print(
"<body><h1>Connect successfully!</h1>");
        String name = req.getParameter(
"name");
        String passwd = req.getParameter(
"passwd");
        Cookie cookieNM = 
new Cookie("usernm", name);
        cookieNM.setMaxAge(
60*60*24);
        resp.addCookie(cookieNM);
        out.print(
"<h2>姓名:" + name + "</h2>");
        out.print(
"</body></html>");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值