Java课题笔记~ 会话跟踪

3.1 Cookie

【案例1 记住密码】

==实现效果==

当勾选“记住密码”复选框时,下次访问登录页面,会自动记住账号,密码信息。

【案例2 上次访问时间】

==实现效果== 首次登录,显示“欢迎您,XXX” 下次登录,显示“欢迎您,XXX,您上次登录时间为 yyyy年MM月dd日 hh:mm:ss”

1. 概念: Cookie是客户端会话技术,将数据保存在客户端,以保留了各种跟踪信息。

2. 识别用户包括三个步骤:

(1)服务器脚本向浏览器发送一组 Cookie。例如:姓名、年龄或识别号码等。

(2)浏览器将这些信息存储在本地计算机上,以备将来使用。

(3)当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookie 信息发送到服务器,服务器将使用这些信息来识别用户。

3. 通过 Servlet 设置 Cookie 包括三个步骤:

(1) 创建一个 Cookie 对象:您可以调用带有 cookie 名称和 cookie 值的 Cookie 构造函数,cookie 名称和 cookie 值都是字符串。

Cookie cookie = new Cookie("key","value");

请记住,无论是名字还是值,都不应该包含空格或以下任何字符:

[ ] ( ) = , " / ? @ : ;

(2) 设置最大生存周期:您可以使用 setMaxAge 方法来指定 cookie 能够保持有效的时间(以秒为单位)。

下面将设置一个最长有效期为 24 小时的 cookie。

cookie.setMaxAge(60*60*24); 

setMaxAge的参数有如下三种情况:

  1. 正数:将Cookie数据写到硬盘的文件中。持久化存储,并指定cookie存活时间,时间到后,cookie文件自动失效

  2. 负数:默认值,当浏览器关闭后,Cookie数据被销毁

  3. 零:删除cookie信息

(3) 发送 Cookie 到 HTTP 响应头

您可以使用 response.addCookie 来添加 HTTP 响应头中的 Cookie,如下所示:

response.addCookie(cookie);

4.通过 Servlet 读取 Cookie

要读取 Cookie,您需要通过调用 HttpServletRequest 的 getCookies( ) 方法创建一个 javax.servlet.http.Cookie 对象的数组。然后循环遍历数组,并使用 getName() 和 getValue() 方法来访问每个 cookie 和关联的值。

Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {if (cookie.getName().equals("username")){username = cookie.getValue();}if (cookie.getName().equals("password")){password = cookie.getValue();}
}

5.通过 Servlet 删除 Cookie

删除 Cookie 是非常简单的。如果您想删除一个 cookie,那么您只需要按照以下三个步骤进行:

(1)读取一个现有的 cookie,并把它存储在 Cookie 对象中。

(2)使用 setMaxAge() 方法设置 cookie 的年龄为零,来删除现有的 cookie。

(3)把这个 cookie 添加到响应头。

//JSP Cookie 保存中文内容,需要对中文进行编码与解码,方法如下:
String str = java.net.URLEncoder.encode("中文","UTF-8");            //编码
String str = java.net.URLDecoder.decode("编码后的字符串","UTF-8");   // 解码

3.2 Session

【案例1 登录、退出系统案例】

==实现效果==

1.登录系统后可在各个页面可以显示登录用户名。

2.当退出系统后,访问非登录页面,显示“请登录”超链接。

(创建/获取Session,删除Session会话数据)

【案例2 购物车案例】

==实现效果== 1. 2.

概念:Session是服务端会话技术,将数据保存在服务端,以保留了各种跟踪信息。 提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式。

使用步骤

常用方法

(1)获取Session HttpSession session = request.getSession();

(2)设置属性 session.setAttribute("key",value);

(3)获取属性 Object value = session.getAttribute("key");--根据情况,进行类型转换

(4)删除属性 session.removeAttribute("key");

(5)销毁session session.invalidate();

3.3 隐藏的表单域

3.4 URL重写

指的是将Session的会话标识号以参数的形式附加在超链接的URL地址后面。

在HttpServletResponse接口中,定义了两个用于完成URL重写的方法:

<1>encodeURL(String url):用于对超链接和form的action中设置的url重写。

<2>encodeRedirectURL(String url): 用于对要传递给response.sendRedirect方法的url重写。

注意:在重写URL是,前面要通过getSession()方法获取Session对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/34651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Bean 生命周期的执行流程

问题描述 Spring 生命周期全过程大致分为五个阶段&#xff1a; 1、创建前准备阶段 2、创建实例阶段 3、依赖注入阶段 4、 容器缓存阶段 5、销毁实例阶段 下图是 Spring Bean 生命周期完整流程图&#xff0c;其中对每个阶段的具体操作做了详细介绍&#xff1a; 一、创建前准备阶…

java 把list转成json

在Java中&#xff0c;将List转换成JSON格式是非常常见的任务。JSON是一种轻巧的数据交换格式&#xff0c;非常适合于Web应用程序&#xff0c;特别是前端开发。 使用Java将List转换成JSON格式的最简单方法是通过JSON库。最常用的JSON库是 Jackson&#xff0c;它提供了快速&…

阶梯费用计算(配置化_最小demo)

本文旨在提供一种配置化思路计算阶梯费用&#xff0c;更高级的做法则是通过数据库配置&#xff0c;注册中心等&#xff1b;在表达式上可以采用自定义或者spel表达式等其他方式进行处理&#xff1b;(代码仅展示最小demo,部分不完善地方自行补充) 思路&#xff1a;N个区间对应N个…

Spring Boot 项目应用消息服务器RabbitMQ(简单介绍)

一、背景 本章讲述的是在用户下单环节&#xff0c;消息服务器RabbitMQ 的应用 1.1 消息服务器的应用 在写一个电商项目的小demo&#xff0c;在电商项目中&#xff0c;消息服务器的应用&#xff1a; 1、订单状态通知&#xff1a;当用户下单、支付成功、订单发货、订单完成等…

【MFC】10.MFC六大机制:RTTI(运行时类型识别),动态创建机制,窗口切分,子类化-笔记

运行时类信息&#xff08;RTTI&#xff09; C: ##是拼接 #是替换成字符串 // RTTI.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <afxwin.h>#ifdef _DEBUG #define new DEBUG_NEW #endifCWinApp th…

六种不同的CRM系统类型分别有哪些特点?

企业想要管理销售&#xff0c;可以选择CRM系统&#xff1b;企业想要优化业务流程&#xff0c;可以选择CRM系统&#xff1b;企业想要提高收入&#xff0c;可以选择CRM系统。下面来说说&#xff0c;CRM是什么&#xff1f;六种常见CRM系统类型对比。 什么是CRM&#xff1f; CRM是…

优秀的 Modbus 从站(从机、服务端)仿真器、串口调试工具

文章目录 优秀的 Modbus 从站&#xff08;从机、服务端&#xff09;仿真器、串口调试工具主要功能软件截图 优秀的 Modbus 从站&#xff08;从机、服务端&#xff09;仿真器、串口调试工具 官网下载地址&#xff1a;http://www.redisant.cn/mse 主要功能 支持多种Modbus协议…

Java课题笔记~ Spring 集成 MyBatis

Spring 集成 MyBatis 将 MyBatis 与 Spring 进行整合&#xff0c;主要解决的问题就是将 SqlSessionFactory 对象交由 Spring 来管理。所以该整合&#xff0c;只需要将 SqlSessionFactory 的对象生成器SqlSessionFactoryBean 注册在 Spring 容器中&#xff0c;再将其注入给 Dao…

Linux 搭建Minio

第一步&#xff1a;创建&#xff1a;/xxx/xxx/minio 第二步&#xff1a;在创建&#xff1a;/xxx/xxx/data 第三步&#xff1a; Minio下载网址: https://min.io/download#/linux 然后将这个文件放入你刚刚创建的文件夹 第四步&#xff1a;配置环境变量把Minio的账号密码配置一…

多目标优化算法之樽海鞘算法(MSSA)

樽海鞘算法的主要灵感是樽海鞘在海洋中航行和觅食时的群聚行为。相关文献表示&#xff0c;多目标优化之樽海鞘算法的结果表明&#xff0c;该算法可以逼近帕雷托最优解&#xff0c;收敛性和覆盖率高。 通过给SSA算法配备一个食物来源库来解决第一个问题。该存储库维护了到目前为…

Docker镜像查看下载删除镜像文件的相关命令

1.镜像相关命令 本地查看有哪些镜像文件&#xff1a; docker images镜像的名称就是我们常见的一些软件&#xff0c;镜像相当于把软件和软件所需要的运行环境打包到一个镜像文件里面&#xff0c;将来在通过这个镜像文件创建出对应的容器&#xff0c;容器有了以后这些软件自动的…

java线程的优先级、守护线程的概念

1.线程的调度 抢占式调度 非抢占式调度 1.1 抢占式调度 优先级越高&#xff0c;抢到cpu的概率越高 1.2 守护线程 守护线程&#xff0c;非守护线程。当其他的非守护线程执行完毕以后&#xff0c;守护线程会陆续结束。 守护线程的应用场景

【Linux】网络协议总结

目录 网络协议总结 应用层 传输层 网络层 数据链路层 网络协议总结 应用层 应用层的作用&#xff1a;负责应用程序间沟通&#xff0c;完成一系列业务处理所需服务。能够根据自己的需求&#xff0c;设计对应的应用层协议。了解HTTP协议。理解DNS的原理和工作流程。 传…

插入排序(Java实例代码)

目录 插入排序 一、概念及其介绍 二、适用说明 三、过程图示 四、Java 实例代码 InsertionSort.java 文件代码&#xff1a; 插入排序 一、概念及其介绍 插入排序(InsertionSort)&#xff0c;一般也被称为直接插入排序。 对于少量元素的排序&#xff0c;它是一个有效的算…

CNN(四):ResNet与DenseNet结合--DPN

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 前面实现了ResNet和DenseNet的算法&#xff0c;了解了它们有各自的特点&#xff1a; ResNet&#xff1a;通过建立前面层与后面层之间的“短路…

Nginx中间件安全基线配置与操作指南-翻译

1、日志配置 安全基线项目名称 Nginx日志审计安全基线要求项 安全基线编号 Nginx-001 安全基线项说明 配置Nginx日志记录和审核 设置操作步骤 (1)编辑 nginx.conf 配置文件 将 error_log 前的“#”去掉&#xff0c;记录错误日志&#xff1b; 将 access_log 前的“#”去…

云原生核心原则和特征

云原生&#xff08;Cloud Native&#xff09;是一种软件开发和部署方法论&#xff0c;旨在充分利用云计算的优势来构建和管理应用程序。云原生应用程序是专为在云环境中设计、构建和运行的应用程序。 以下是云原生的一些核心原则和特征&#xff1a; 微服务架构&#xff1a;云…

TSINGSEE青犀视频安防监控视频平台EasyCVR设备在线,视频无法播放的原因排查

可支持国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等多种协议接入的安防监控视频平台EasyCVR基于云边端一体化架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;可在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、…

IDEA全局设置MyBatis中写SQL语句提示

第一步&#xff1a;把这两个设置改成MySQL即可&#xff1a; 第二步&#xff1a;找到设置>编辑器>语言注入>店家加号&#xff0c;选择MySQL

微信小程序在使用vant组件库时构建npm报错

在跟着vant官方进行使用步骤一步步操作时&#xff0c;由于要构建NPM&#xff0c;但NPM包在App配置文件的外部 所以在做下图这一步时&#xff1a; 接着再进行npm构建时会报错 message:发生错误 Error: F:\前端学习\前端框架\小程序\project\demo\miniprogram解决方法 &#xf…