当前位置:

首页 > 编程开发 > jsp cookie+session实现简易自动登录

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

基于JSP,利用Session维持当前会话登录状态,通过设置过期时间的Cookie持久化用户标识。关闭浏览器仅使SessionCookie失效,持久化Cookie仍有效,从而在下次访问时自动恢复登录,实现简易自动登录功能。该机制无需数据库支持,适合轻量级应用。

今天我们来聊聊 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 的协作方式。

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
编程开发
相关文章 更多
C++动态数组初始化怎么写?常用语句与代码示例
C++动态数组初始化怎么写?常用语句与代码示例

深入解析C++中动态数组的初始化机制,涵盖new操作符的不同用法、基本类型与类对象的初始化差异,以及为何在现代C++开发中应优先使用std::vector。

谷歌浏览器Mac版入口
谷歌浏览器Mac版入口

谷歌浏览器Mac版官方安装指南 谷歌浏览器Mac版官方安装入口是https://www.google.com/chrome/,需macOS 12+系统、500MB空间,下载.dmg后拖入应用程序安装,支持多设备同步、性能优化与隐私保护功能。 苹果电脑Chrome的安装入口究竟在哪里?这个问题最近可是

vivo浏览器最新官方网站链接
vivo浏览器最新官方网站链接

vivo浏览器官方入口与核心体验全解析 很多用户都在寻找vivo浏览器的最新官方入口。别急,关于其网页版如何直接访问,以及它能带来怎样的体验,咱们这就来详细聊聊。 它的最新官方网站链接是:https://browser.vivo.com.cn。记住这个地址,就能直达核心。 平台核心功能介绍 首先,来

夸克浏览器登录异常怎么办
夸克浏览器登录异常怎么办

网络不稳、缓存堆积或是账号安全机制触发,都可能是夸克登录异常的“元凶”。别急,顺着网络、缓存和权限这几条线排查下来,绝大多数情况都能快速搞定。 当夸克浏览器突然“拒签”,登录按钮怎么点都没反应时,别先怪手速。这事儿多半出在几个最常见的环节上。咱们按顺序来,从外到内捋一遍,问题往往就迎刃而解了。 检查

百度浏览器如何清除浏览器历史记录
百度浏览器如何清除浏览器历史记录

百度浏览器历史记录清理全指南 很多朋友在用百度浏览器时,都想把上网痕迹清理干净,但可能不太清楚具体从哪里下手。这通常是因为历史记录没有主动去清理。其实,方法很全面,涵盖了从电脑端、手机App到云端账户的各个层面。 如果您在使用百度浏览器时希望移除已保存的访问痕迹,但不确定具体操作路径,则可能是由于历

Safari浏览器如何清除缓存和历史记录
Safari浏览器如何清除缓存和历史记录

Safari浏览器的缓存清理指南:五种方法应对不同场景 不知道你有没有遇到过这样的情况:用Safari打开网页,要么加载慢得像蜗牛,要么排版错乱,甚至刚刚登录的账号莫名其妙就掉线了。很多时候,这些问题背后的“元凶”并不是网络,而是浏览器里积压已久的缓存文件和历史记录在“作祟”。今天咱们就来系统盘一盘

火车头采集器如何使用Cookie进行登录
火车头采集器如何使用Cookie进行登录

火车头采集器登录需正确配置cookie:一、浏览器提取有效cookie;二、任务中设自定义cookie请求头;三、内置浏览器自动捕获;四、发布模块复用cookie;五、fiddler截获复杂登录cookie。 在使用火车头采集器抓取需要登录才能访问的页面时,如果总是跳回到登录页,或者看到一片空白甚至

AO3最新镜像入口 | 2025稳定访问Archive of Our Own官网
AO3最新镜像入口 | 2025稳定访问Archive of Our Own官网

AO3最新镜像入口 | 2025稳定访问Archive of Our Own官网 AO3官方唯一网址为archiveofourown.org,建议直接输入访问并添加书签防走失,镜像站如ao3.cubeart.club可作备用,但应优先使用官网以确保安全。 如何稳定访问Archive of Our O

using namespace 使用中遇到的问题怎么解决
using namespace 使用中遇到的问题怎么解决

命名空间的基本概念与常见引入问题在C++等编程语言中,命名空间(namespace)是一种将代码标识符(如变量、函数、类名)封装在特定名称下的机制,其主要目的是避免命名冲突,尤其是在大型项目或使用多个第三方库时。使用“using namespace”指令可以将指定命名空间中的所有名称引入当前作用域,

c语言函数递归 实操经验总结:这些技巧很实用
c语言函数递归 实操经验总结:这些技巧很实用

理解递归的基本原理在C语言中,递归是一种函数调用自身的编程技术。要掌握它,首先需要理解其核心思想:将一个复杂的大问题,分解为一个或几个与原问题相似但规模更小的子问题,直到子问题足够简单,可以直接求解。这个过程通常包含两个关键部分:递归出口和递归体。递归出口定义了问题何时不再继续分解,即最简单、可直接

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。