今天我们来聊聊 JSP 中一个很常见的场景——如何用 Cookie 和 Session 实现一个简易的自动登录功能。其实思路不复杂,关键是理解浏览器关闭时 Session Cookie 和持久化 Cookie 的区别,以及它们各自的生效机制。

首先明确一个基础概念:关闭浏览器,只会让存储在客户端浏览器内存中的 Session Cookie 失效,并不会影响到服务器端的 Session 对象。而一旦你给 Cookie 设置了过期时间,它就会被保存到硬盘上,即使浏览器关闭再打开,只要没超过设定的有效期,这个 Cookie 依然有效。

jsp cookie+session实现简易自动登录

接下来我们直接看代码。先写一个登录页面 login.jsp,它很简单,就是一个表单加一个提交按钮。不过这里有个细节:页面底部会读取 Session 中存储的用户名,并提示“当前用户可自动登录”。如果 Session 中不存在该值,则显示“不存在”。

<%@ page language="ja va" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>



 
  
登录  
  
  
用户名:
<%--记住用户名 --%>
<% //读取session值 String val= (String)session.getAttribute("name"); //如果session不存在 if(val==null){ val ="不存在"; } out.print("当前\""+val+"\"用户可自动登录"); %>

然后就是处理登录请求的 success.jsp。这一步的逻辑很关键:获取表单提交的用户名,如果非空,就把它存入 Session,同时新建一个同名 Cookie,并设置有效期 30 天,最后通过 response.addCookie() 发送到客户端。这样下次用户再访问时,就能通过 Cookie 找回用户名了。

<%@ page language="ja va" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




主不在乎


<% 
//获取username 
String name = request.getParameter("username"); 
//判断用户名是否存在 
if(name != null && !name.trim().equals("")){  
 //String[] time = request.getParameterValues("time");  
 //设置session值,(login页面可读取) 
 session.setAttribute("name", name);  
 //设置Cookie 
 Cookie Cookie = new Cookie("name",name);  
 Cookie.setMaxAge(30*24*3600); //设置cookie有效期为30天    
 response.addCookie(Cookie); //在客户端保存Cookie  
 out.println("welcome: " + name+"欢迎登录"); 
}  
else{ 
 response.sendRedirect("main.jsp"); 
} 
%>
relogin

最后是 main.jsp,它负责展示自动登录的效果。这里需要注意的是,它先尝试从 Session 中获取用户名,但更关键的是遍历所有 Cookie,找到名为 name 的那个,取出它的值,然后输出欢迎信息。如果找不到 Cookie,则重定向回登录页。代码中还附带了一种遍历 Cookie 数组的写法,两者效果一样,可以对比着看。

<%@ page language="ja va" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




主不在乎


<%
String name=(String)session.getAttribute("username");
//获取cookie
Cookie[] cookies = request.getCookies();
//cookie存在 
if(cookies != null && cookies.length > 0){ 
 for(Cookie cookie:cookies){  
  //获取cookie的名字  
  String cookieName = cookie.getName();  
  //判断是否与name相等  
  if(cookieName.equals("name")){  
  //获取cookie的值  
  String value = cookie.getValue();  
  name = value;  
  }  
 } 
 out.println("welcome again: " + name+"欢迎登录"); 
 //************************* 
 // 另一种写法  
 String v=null; 
 for(int i=0;i
relogin

jsp cookie+session实现简易自动登录

运行 login.jsp 后,输入用户名登录,再点击 relogin 链接跳转到 main.jsp,就能看到自动登录的欢迎信息了。整个流程走下来,其实核心就是:Session 负责维持当前会话的登录状态,Cookie 负责跨会话持久化用户标识。两者结合,就能实现一个轻量级的“记住我”功能。

以上就是这个简易自动登录的完整实现,代码直接可用,适合刚接触 JSP 的开发者练手。希望这份梳理能帮你更好地理解 Cookie 和 Session 的协作方式。

本文转载于:https://www.jb51.net/article/198410.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。