当前位置: 首页 > news >正文

Web保存状态的手段(Session的使用)

一,JSP中的page指令

1. <%@ page language=“java” session=“true”%>

  •  session:此页面是否使用session,默认值为true

二,使用Session完善之前的登录程序

1. 如何禁止直接输入URL地址进入登录功能的欢迎界面?

首先,我们需要创建一个登录Servlet,用于处理用户的登录请求,并在用户成功登录后设置Session:

​
package com.haina.web;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;@WebServlet("/check")
public class CheckServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String u = req.getParameter("userName");String s = req.getParameter("password");String auto=req.getParameter("autoLogin");Map<String,String>map=new HashMap<>();map.put("admin","123");map.put("test","456");map.put("abc","xyz");//通过用户名,去map中查找密码,如果用户名存在,则可以找到,否则为空String x=map.get(u);//Set<String> k=map.keySet();if (x!=null&&x.equals(s)/*k.contains(u) && map.get(k).equals(s)*/) {//auto!=null表示勾选了自动登录if (auto!=null){//我们使用login作为cookie的键,用这个cookie来实现自动登录Cookie c=new Cookie("login",u);c.setMaxAge(60);resp.addCookie(c);}//从请求对象获取session对象HttpSession session = req.getSession();//把当前登录的用户名存放在session,key是abcsession.setAttribute("abc",u);//如果要实现退出登录功能,可以使用removeAttribute,删除登陆时存放的session数量//session.removeAttribute();//跳转到成功页面//只有第一个参数前面有问号,后续的都是&符号// eg:?name=&age=20&gender=trueresp.sendRedirect("welcome.jsp?name="+u);}/*else if("test".equals(u)&&"456".equals(s)){resp.sendRedirect("welcome.jsp?name="+u);}else if ("abc".equals(u)&&"xyz".equals(s)){resp.sendRedirect("welcome.jsp?name="+u);}*/else {//跳回到登陆页面resp.sendRedirect("login2.jsp");}}
}​

然后,在需要保护的页面(例如welcome.jsp)中,我们在页面顶部添加以下代码,以检查用户是否已经登录:

<%--Created by IntelliJ IDEA.User: ***Date: 2024/7/18Time: 17:03To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>欢迎页面</title>
</head>
<body><%Object o=session.getAttribute("abc");if (o==null){//未登录禁止访问登陆页面,直接跳转回登陆页面response.sendRedirect("login2.jsp");}
%>
<h1>登陆成功,欢迎:<%=request.getParameter("name")%>
</h1></body>
</html>

在这个例子中,我们首先获取当前的Session对象(如果用户没有登录,则Session对象为null)。然后,我们检查Session对象中是否存在名为“username”的属性。如果不存在,我们将用户重定向到登录页面。

2.Login流程图

3.Check流程图

三,Session

1. session:保存在服务器端的内存中,以“key-value”对的形式保存数据,与客户端相关。


2. 客户端支持Cookie

  •  在服务器端创建session,把SessionID保存在客户端内存中

3. 接口HttpServletRequest中处理session的方法:

  •  HttpSession getSession(boolean isNew)
  •          如果session已经存在,则返回一个HttpSession对象,如果不存在并且isNew为true,则会新建一个HttpSession对象
     

4. HttpSession接口的常用方法

  •  void setAttribute(String name,Object value)
  •          绑定一个session的对象
  •  Object getAttribute(String name)
  •         返回session,如果没有返回null
  •  long getCreateTime()
  •         返回session的创建时间
  •  String getId()
  •         返回session的id
  •  void invalidate()
  •         销毁当前session
  •  void removeAttribute(String name)
  •         销毁指定的session内容

相关文章:

Web保存状态的手段(Session的使用)

一&#xff0c;JSP中的page指令 1. <% page language“java” session“true”%> session&#xff1a;此页面是否使用session&#xff0c;默认值为true 二&#xff0c;使用Session完善之前的登录程序 1. 如何禁止直接输入URL地址进入登录功能的欢迎界面&#xff1f; …...

第五十四章 安全元素的详细信息 - DerivedKeyToken 详情

文章目录 第五十四章 安全元素的详细信息 - <DerivedKeyToken> 详情详情消息中的位置 第五十四章 安全元素的详细信息 - 详情 <DerivedKeyToken> 的目的是携带发送者和接收者可以独立使用的信息来生成相同的对称密钥。这些方可以使用该对称密钥对 SOAP 消息的相关…...

kafka 的高可用机制是什么?

大家好&#xff0c;我是锋哥。今天分享关于【kafka 的高可用机制是什么&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka 的高可用机制是什么&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Apache Kafka 是一个分布式消息系统&am…...

4.1.3 网站通信技术

文章目录 1. 网站通信方式2. URL - 统一资源定位符定义格式演示 3. 发送请求的4种形式在地址栏中输入URL访问超链接href属性指定URLform表单在action中指定URL通过AJAX请求后端数据 4. 两种不同返回的请求发送URL&#xff0c;后端处理完响应页面发送AJAX请求&#xff0c;后端处…...

Java-图书管理系统

我的个人主页 欢迎来到我的Java图书管理系统&#xff0c;接下来让我们一同探索如何书写图书管理系统吧&#xff01; 1管理端和用户端 2建立相关的三个包&#xff08;book、operation、user&#xff09; 3建立程序入口Main类 4程序运行 1.首先图书馆管理系统分为管理员端和…...

python如何通过json以及pickle读写保存数据

记录信息 比如说我写了这样一段程序&#xff0c;记录了爱吃的食物&#xff1a; food_list []while True:c input("输入1添加新的食物&#xff0c;输入2查询已添加的食物&#xff0c;输入exit退出&#xff1a;")if c "1":new_food input("输入你…...

【SPIE出版,EI检索稳定】2024年人机交互与虚拟现实国际会议(HCIVR 2024,11月15-17日)

2024年人机交互与虚拟现实国际会议&#xff08;HCIVR 2024&#xff09; 2024 International Conference on Human-Computer Interaction and Virtual Reality 官方信息 会议官网&#xff1a;www.hcivr.org 2024 International Conference on Human-Computer Interaction and …...

Linux vim编辑器

前言&#xff1a; 首先我们来了解一下什么是编辑器&#xff0c;通常我们在widow系统下例如C/C我们进行写代码时&#xff0c;我们通过vs2022等等编译器进行&#xff0c;这里的编译器是一种IDE&#xff08;集成开发环境&#xff09;&#xff0c;集成开发环境是将代码编辑器、编译…...

普推知产:申请商标名称从4字改成3字下了初审!

近日7月的时候普推知产老杨帮客户申请的水果猕猴桃31类商标&#xff0c;初步审定公告下来了&#xff0c;基本没什么问题三个月公告结束后一个月内就可以拿到商标注册证&#xff0c;客户所在地全国有名猕猴桃之县&#xff0c;同质化竞争还得需要商标才可以。 刚开始了解到这位做…...

Flink 状态精准一次性特性

Flink 的一个重大价值在于&#xff0c; 它既保证了 exactly-once &#xff0c;也具有低延迟和高吞吐 的处理能力 。 1.端到端&#xff08;End-To-End&#xff09;状态一致性 端到端的一致性保证&#xff0c;意味着结果的正确性贯穿了整个流处理应用的始终&#xff1b;每 一…...

算法笔记day08

1.游游的水果大礼包 这道题很容易让人想到贪心&#xff0c;但是其实是一道枚举题&#xff0c;只需举一个反例&#xff0c;贪心无非就是哪个礼包价值大&#xff0c;就优先组成哪个礼包。 算法思路&#xff1a; 设可以组成x个a礼包&#xff0c;y个b礼包&#xff0c;求ax by的最…...

在Selenium中有哪些元素对象操作方法?( ̄﹃ ̄)

在Selenium中&#xff0c;driver.find_element() 方法用于定位页面上的单个元素。一旦你定位到了一个元素&#xff0c;你可以对这个元素执行多种操作。此外&#xff0c;driver.find_element() 只是定位元素的方法之一&#xff0c;它还有其他一些相关的方法和属性&#xff0c;但…...

sqli-labs靶场安装以及刷题记录-docker

sqli-labs靶场安装以及刷题记录-docker sqli-labs靶场安装-dockersqli-labs靶场刷题less-1 单引号less-2 数字型less-3 单引号括号less-4 双引号括号less-5 单引号布尔盲注less-6 双引号布尔盲注less-7 单引号加括号、输出到文件less-8 单引号布尔盲注less-9 单引号时间盲注les…...

谷歌仓库管理工具repo

Google 的仓库管理工具 Repo 是一个用于管理包含多个 Git 仓库的大型项目的命令行工具。它最初由 Google 为 Android 操作系统开发&#xff0c;以简化和协调众多子项目的版本控制和协作过程。以下是对 Repo 的详细解释&#xff1a; 主要功能与特点 多仓库管理&#xff1a; Rep…...

C#的自定义Tip窗体 - 开源研究系列文章

上次编写了自定义的提示和对话框窗体&#xff0c;这次记录的是自定义的Tip窗体&#xff0c;用于显示提示操作。有时间没编程了&#xff0c;这次就当进行了记录。 1、 项目目录&#xff1b; 2、 源码介绍&#xff1b; 1) 实现&#xff1b; 2) 应用&#xff1b; 3、 运行界面&…...

目前最新 Reflector V11.1.0.2067版本 .NET 反编译软件

目前最新 Reflector V11.1.0.2067版本 .NET 反编译软件 一、简介二、.NET Reflector的主要功能包括&#xff1a;1. **反编译**: 反编译是将已编译的.NET程序集&#xff08;如.dll或.exe文件&#xff09;转换回可读的源代码。这使得开发者可以查看和学习第三方库的实现细节&…...

软考:CORBA架构

CORBA过时了吗 CORBA指南 个人小结&#xff1a; IPC&#xff0c;进程间通信&#xff0c;Socket应用在不同机器之间的通信 RPC是一种技术思想而非一种规范 但站在八九十年代的当口&#xff0c;简单来说&#xff0c;就是我在本地调用了一个函数&#xff0c;或者对象的方法&…...

qt QSaveFile详解

QSaveFile 是 Qt 提供的一个类&#xff0c;用于安全地保存文件。它的主要特点是在写入文件时确保数据完整性&#xff0c;以防止文件损坏。使用 QSaveFile&#xff0c;您可以创建一个临时文件&#xff0c;并在成功写入后将其重命名为目标文件&#xff0c;这样可以避免在写入过程…...

【Linux】线程池详解及其基本架构与单例模式实现

目录 1.关于线程池的基本理论 1.1.线程池是什么&#xff1f; 1.2.线程池的应用场景&#xff1a; 2.线程池的基本架构 2.1.线程容器 2.2.任务队列 2.3.线程函数&#xff08;HandlerTask&#xff09; 2.4.线程唤醒机制 3.添加单例模式 3.1.单例模式是什么&…...

运输层知识点汇总3

目录 前言 二、为什么在TCP首部中有一个首部长度字段&#xff0c;而UDP的首部就没有这个字段&#xff1f; 三、一个TCP报文段的数据部分最多为多少字节&#xff1f;为什么&#xff1f;如果用户要传送的数据的字节长度超过TCP报文段中的序号字段可能编出的最大序号&#xff0…...

AOP 代理的陷阱

大家有没有问过这个问题&#xff1a;为什么 this 调用会失效&#xff1f;代理对象何时生成&#xff1f;给方法加了 Transactional&#xff0c;结果数据库事务没回滚&#xff1f;给方法加了 Async&#xff0c;结果代码还是同步执行的&#xff1f;明明配置了日志切面&#xff0c;…...

告别玄学调试:手把手教你用Keil MDK分析STM32的.map和启动文件,定位那些‘上电就挂’的坑

从.map文件到启动代码&#xff1a;STM32上电死机全流程诊断指南 当你的STM32开发板在按下电源键后毫无反应&#xff0c;或者刚连接调试器就触发HardFault时&#xff0c;那种挫败感足以让任何嵌入式工程师抓狂。本文将以Keil MDK为武器&#xff0c;带你直击这些"上电即挂&q…...

OpenClaw+GLM-4.7-Flash自动化办公:会议纪要自动生成实践

OpenClawGLM-4.7-Flash自动化办公&#xff1a;会议纪要自动生成实践 1. 为什么选择这个方案 去年我接手了一个跨时区的项目协调工作&#xff0c;每周至少要参加5场会议。最痛苦的不是开会本身&#xff0c;而是会后整理纪要的过程——录音转文字要手动操作&#xff0c;关键信息…...

Kimi-VL-A3B-Thinking惊艳效果:MMMU 61.7分多学科图文推理能力实测

Kimi-VL-A3B-Thinking惊艳效果&#xff1a;MMMU 61.7分多学科图文推理能力实测 1. 模型核心能力展示 Kimi-VL-A3B-Thinking作为一款高效的多模态视觉语言模型&#xff0c;在多个专业领域展现出令人印象深刻的能力。这款开源混合专家模型仅激活2.8B参数&#xff0c;却能达到与…...

STM32实现CANFD转串口双向透传方案

目录 一、核心设计思路 1. 协议规则 2. CAN FD 帧格式定义&#xff08;64 字节&#xff09; 3. 关键特性 二、完整代码实现&#xff08;STM32H7 为例&#xff09; 1. 头文件定义&#xff08;canfd_uart_trans.h&#xff09; 2. 核心实现代码&#xff08;canfd_uart_tran…...

Ray Train + PyTorch分布式训练实战:从单机到集群的完整配置指南

Ray Train PyTorch分布式训练实战&#xff1a;从单机到集群的完整配置指南 当你的PyTorch模型在单机上训练时间从几小时延长到几天&#xff0c;当数据集规模突破单机内存上限&#xff0c;分布式训练就不再是可选项&#xff0c;而是必选项。Ray Train作为新兴的分布式训练框架&…...

贪心策略的路径寻优——Dijkstra算法核心思想与实现解析

1. 从地图导航到算法本质&#xff1a;Dijkstra为何能找最短路径&#xff1f; 每次用手机地图导航时&#xff0c;你有没有好奇过它怎么在秒级内算出最优路线&#xff1f;这背后藏着一位1956年诞生的算法巨星——Dijkstra算法。我在第一次实现这个算法时&#xff0c;被它那种&quo…...

AI编程助手实战:5分钟用Claude Code调用万象熔炉·丹青幻境生成图片

AI编程助手实战&#xff1a;5分钟用Claude Code调用万象熔炉丹青幻境生成图片 最近有个朋友问我&#xff0c;说想在自己的小工具里加个图片生成功能&#xff0c;但一想到要写API调用、处理错误、还要做个简单界面&#xff0c;就觉得头大。我告诉他&#xff0c;现在不用这么麻烦…...

智能助手新选择:GLM-4.6V-Flash-WEB搭建教程,打造你的本地视觉问答AI

智能助手新选择&#xff1a;GLM-4.6V-Flash-WEB搭建教程&#xff0c;打造你的本地视觉问答AI 你是否曾想过&#xff0c;让电脑“看懂”屏幕上的内容&#xff0c;并像朋友一样回答你的问题&#xff1f;比如&#xff0c;截一张软件安装界面的图&#xff0c;问它“下一步该点哪里…...

【花雕动手做】华航 HOTRC DS600 6 通道单手遥控器

华航 HOTRC DS600 6 通道单手遥控器 一、产品定位 DS600 是华航 HOTRC 出品的 2.4GHz 6 通道单手数字遥控系统&#xff0c;采用单手手枪式轻量化设计&#xff0c;搭配小型 LCD 状态屏&#xff0c;自带定速巡航、混控、失控保护&#xff0c;专为车船、低速工程模型、DIY 智能小车…...