servlet中的数据存储

在servlet基础中,我们:

用以下几种方式实现数据存储和共享:
1)在客户端页面和服务器端程序之间,用request中的getParameter()方法共享数据

 

2)在请求和请求之间,可以用get/setAttribute方法来共享数据(转发的时候)

 

3)同一个servlet对象,可以用servletConfig(xml)来共享数据(主要是获取配置信息)

getServletName();获取servlet的名称,也就是我们在web.xml中配置的servlet-name

getServletContext(); 获取ServletContext对象

getInitParameter(String); 获取在servlet中初始化参数的值。这里注意与全局初始化参数的区分。这个获取的只是在该servlet下的初始化参数

getInitParameterNames(); //获取在Servlet中所有初始化参数的名字,也就是key值

 

4)在整个web应用范围内,通过ServletContext的set/getAttribute方法共享数据

ServletContext: 代表的是整个应用。一个应用只有一个ServletContext对象。是单实例。

在一定范围内(当前应用),使多个Servlet共享数据。

 

现在我们说一个新的话题:会话管理

session/cookie

什么是会话?

  会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。

会话过程中要解决的一些问题?

每个用户不可避免各自会产生一些数据,程序要想办法为每个用户保存这些数据。

例如:用户点击超链接通过一个servlet购买了一个商品,程序应该想办法保存用户购买的商品,以便于用户点结帐servlet时,结帐servlet可以得到用户购买的商品为用户结帐。

Cookie

Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

HttpSession

Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的HttpSession对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

总结:cookie存在客户端,session存在服务器端

cookie:

API:

public Cookie(String name,String value)

setValue与getValue方法

setMaxAge与getMaxAge方法 (秒)

setPath与getPath方法

setDomain与getDomain方法

getName方法

使用cookie的大概步骤:

1)创建并向客户端发送Cookie

创建Cookie对象

调用Cookie的构造方法,给出Cookie的名称和Cookie的值,二者都是字符串

Cookie c = new Cookie(“userName”,”a1234”)

设置最大时效

如果要告诉浏览器将Cookie存储到磁盘上,而非仅保存在内存中,使用setMaxAge方法(参数为秒数)

c.setMaxAge(60*60*24*7)//一周(正数)

Cookie放入到HTTP响应中

使用response.addCookie(c)

如没有这一步,将不会有任何Cookie被发送到浏览器

2)从客户端读取Cookie

Cookie[] cookies = request.getCookies();
if(cookies != null){for(Cookie cookie : cookies){if("userId".equals(cookie.getName())){//doSomethingWith(cookie.getValue());	       }}
}

 

session:

同一颜色为一次逻辑,顺序为1,2,3,4

session 主要API:

getAttribute()

从会话对象中提取出一个之前存储的属性值

如果没有找到与名称相关联的值,则返回null

setAttribute()

设置会话对象的属性名称和属性值

removeAttribute()

移除与名称关联的值

getAttributeNames()

返回会话中所有属性的名称

getId()

返回唯一的标识符

使用session的大概步骤:

//获取HttpSession对象,设置相关属性

HttpSession session = req.getSession();

session.setAttribute("userName", userName);

//获取HttpSession对象,取出相关属性

HttpSession session = req.getSession();

session.getAttribute("userName", userName);

分享一张尚学堂的我觉得很好的图

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

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

相关文章

Linux(2)-tar,find,grep,xargs

常用命令1. 打包压缩/解包解压缩 tar1.1 打包 tar -czvf xxx.tar.gz xxx1.2 解压 tar -xzvf xxx.tar.gz2.文件/目录搜索2.1 find文件/目录查找2.2 grep文本匹配3. 复合命令3.1 > 重定向3.2 | 管道.shutdown1. 打包压缩/解包解压缩 tar tar和gzip是对黄金搭档:ta…

servlet——三兄弟的另外两个:过滤器/监听器

过滤器 我们写多了servlet会发现,很多代码和功能是重复的,比如:解决中文乱码问题、权限验证、日志的记录等,他们的特点是:代码相同或相似、分散在不同位置、不利于维护。 过滤器就是他们的解决办法。 过滤器是请求到…

kaggle(05)---Event Recommendation Engine Challenge(基础版)

文章目录目录1.比赛相关介绍1.1 比赛介绍1.2 数据集介绍1.3 评价标准介绍1.4 个人理解2. 解决方案2.1 统计用户和event信息2.2 计算用户相似度2.3 用户社交关系信息处理2.4 构建event和event相似度数据2.5 活跃度/event热度数据2.6 构建特征2.7 模型构建和预测3. 遇到的问题4. …

Python(2)-第一个python程序、执行python程序三种方式

第一个Python 程序1. 第一个Python 程序2. 常用两Python个版本3. 程序执行的三种方式3.1 解释器3.2 交互式运行Python程序3.3 IDE(集成开发环境)-pycharm1. 第一个Python 程序 Python 源程序就是一个特殊格式的文本文件,所以可以采用任意的文…

推荐算法---FM,协同过滤

文章目录目录1.FM算法产生背景2.FM算法模型3.FM算法VS其他算法4.推荐算法总结目录 1.FM算法产生背景 在传统的线性模型如LR中,每个特征都是独立的,如果需要考虑特征与特征直接的交互作用,可能需要人工对特征进行交叉组合;非线性…

借助桶排序思想完成的一道题

问题: 数组排序之后的相邻数的最大差值; 嗯,你可以排序,然后找相邻的最大差值。 但是你觉得这么简单我写他干啥。 最优解:时间复杂度O(N),空间O(1) 那我们开始说这种方法: 1)遍…

Python(3)-Pycharm基本使用技巧

初识Pycharm1.界面2.恢复初始设置3.第一次打开Pycharm4.打开一个项目5.设置解释器的版本。6.新建项目7.编辑器、控制台的字体设置Pycharm–适合于开发管理大型项目,项目是用以解决复杂功能的软件。1.界面 导航区–主要有什么文件 编辑区–编辑具体的文件 控制台窗口…

推荐算法概述(01)

1.什么是推荐系统 用户没有明确的需求,你需要的是一个自动化的工具,它可以分析你的历史兴趣,从庞大的电影库中找到几部符合你兴趣的电影供你选择。这个工具就是个性化推荐系统。 推荐系统的主要任务 推荐系统的任务就是联系用户和信息&…

何为布隆过滤器

问题的提出 我们有一个不安全网页的黑名单,包含了100亿个黑名单网页的URL,每个网页URL最多占用64B.。 现在我们要设计一个网页过滤系统,这个系统要判断该网页是否在黑名单里,但是我们的空间有限,只有30GB. 允许有万分之一的判断…

推荐算法--利用用户行为数据(02)

文章目录目录1.什么是用户行为数据?1.1用户行为分类2.用户行为数据如何使用?2.1 用户活跃度和物品流行度的分布2.2 用户活跃度和物品流行度的关系2.3 协同过滤算法3.实验设计和算法评测4.基于邻域的的推荐算法4.1 基于用户的协同过滤算法4.2 基于物品的协…

《Head First设计模式》第九章(2)组合模式

组合模式 ​ 基于前一篇迭代模式的案例进行需求更新,餐厅的菜单管理系统需要有煎饼屋菜单和披萨菜单。现在希望在披萨菜单中能够加上一份餐后甜点的子菜单。 在迭代模式中,披萨菜单是用数组维护的,我们需要让披萨菜单持有一份子菜单&#xf…

Python(4)--Pycharm安装、使用小技巧

Pycharm安装1.专业版Pycharm 安装2.设置Pycharm桌面快捷图标3.Linux卸载一个软件4.教育版Pycharm的安装5.多文件项目演练(Pycharm针对学生和教师开发了免费使用版)1.专业版Pycharm 安装 1.官网下载安装包 .tar.gz 2.解压缩 tar -zxvf 文件名 3.移动解压…

推荐算法--推荐系统冷启动问题(03)

文章目录目录1.什么是冷启动问题?1.1冷启动问题1.2 冷启动问题的分类1. 用户冷启动2 物品冷启动3 系统冷启动2.如何解决冷启动问题?2.1利用用户注册信息2.2选择合适的物品启动用户的兴趣2.3利用物品的内容信息2.4 发挥专家的作用目录 1.什么是冷启动问题…

《Head First 设计模式》第十章-状态模式 状态模式

状态模式 策略模式和状态模式是双胞胎,在出生时才分开。你已经知道,策略模式是围绕可以互换的算法来创建成功业务的,然而,状态走的是更崇高的路,它通过改变对象内部的状态来帮助对象控制自己的行为。 定义状态模式 …

推荐算法--利用用户标签数据(04)

文章目录流行的推荐系统通过3种方式联系用户兴趣和物品 (1):利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品,这是基于物品的算法。 (2):利用和用户兴趣相似的其他用户…

Python(5)-注释

Python注释1.单行注释2. 多行注释(块注释)3.注释的使用和代码规范pyhton 的注释 使用自己熟悉的语言(中文),解释代码。Python解释器在执行文件时不会执行井号右边边的内容。1.单行注释 # 井号后面跟着注释内容 灰灰的虚…

网络原理知识点总结

第一章: 计算机网络系统由资源子网和通信子网组成。 计算机网络系统主要由网络通信系统、操作系统和应用系统构成 互联网基础结构发展的三个阶段: 第一阶段:从单个网络 ARPANET 向互联网发展的过程。 第二阶段:建成了三级结构…

推荐算法--时效性(05)

时效性 推荐系统应该考虑时间效应,因为用户的兴趣是有时间变化的。用户一年前喜欢的东西现在不一定感兴趣,相比于推荐过去喜欢的物品,推荐用户近期喜欢的物品更有参考价值。而在新闻更是如此,推荐过去跟用户兴趣一致的新闻已经失去…

推荐算法--推荐系统架构(06)

外围架构一般来说,每个网站都有一个 UI 系统,UI 系统负责给用户展示网页并和用户交互。网站会通过日志系统将用户在 UI 上的各种各样的行为记录到用户行为日志中。 从上面的结构可以看到,除了推荐系统本身,主要还依赖两个条件--界…

Python(6)-算数运算符

算数运算符1.算数运算符2.优先级1.算数运算符 加 减- 乘* 除/ 取商// 取余数% 幂**(能算n次方: 2**38,一直以为只能算平方) 扩展: 乘法用于字符串:字符串重复指定的次数,要拼接的次数很长时,用乘号很方便…