web基础之会话技术
一、会话技术之Cookie
Cookie技术是将数据存储到客户端
1.怎样去向客户端写出一个cookie
1)创建Cookie对象
Cookie cookie = new Cookie(name,value);
2)向客户端写出cookie
response.addCookie(cookie );
客户端:客户端解析http响应,响应头中有一个cookie,客户端会自动将cookie的信息存储到客户端的缓存中
2.怎样从客户端获取一个Cookie
1)获得客户端携带的所有的cookie
Cookies[] request.getCookies();
2)获得具体的某个cookie
遍历所有的cookie
通过getName()获得某一个cookie的名字
通过getValue()获得某一个cookie的值
3.显示用户上次的访问时间

4.设置Cookie时的细节
1)会话级别的cookie和持久级别的cookie
会话级别的cookie:会话结束cookie就清空
持久级别的cookie:会cookie存储到磁盘上
保存在磁盘上的时间
cookie.setMaxAge(秒);
注意:如果要想删除磁盘已经存储的cookie
将同名的cookie的持久化时间设置为0
将要删除的cookie的路径设置成与磁盘上存储的cookie的路径一致(即两个cookie的setPath一致)
2)设置cookie的携带的路径
cookie在默认情况下 会在产生的cookie资源的所在的目录下都携带
http://localhost/testweb_fr/accessTime
访问http://localhost/testweb_fr/下的所有的资源都携带
http://localhost/testweb_fr/abc/accessTime
访问http://localhost/testweb_fr/abc下的所有的资源都携带
cookie.setPath(携带cookie的路径);
设置cookie的携带路径时以/开头,/代表本web服务器
例如:
cookie.setPath(“/”), cookie在访问web服务器下的所有资源的都携带
cookie.setPath(“/testweb_fr”),在testweb_fr应用时携带cookie
cookie.setPath(“/testweb_fr/abc”),访问这个testweb_fr应用下的 abc目录下的资源时才携带cookie
cookie.setPath(“/testweb_fr/abc/accessTime”),只有访问accessTime 才携带cookie
3)设置三方cookie(了解)
cookie.setDomain(域名);
三方cookie具有进攻性
5.以上代码实现
response.setContentType("text/html;charset=UTF-8");
//1、创建时间的Cookie
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String accessTime = format.format(new Date());
Cookie cookie = new Cookie("accessTime",accessTime);
//1.1 设置cookie的持久化的时间----在磁盘上存储的时间
//cookie.setMaxAge(60*10);
//1.2 设置cookie的携带路径 /代表web应用
cookie.setPath("/testweb_fr/abc/accessTime");
//2、将cookie写给客户端
response.addCookie(cookie);
//3、获取客户端携带的时间的cookie
String accessTime_client = null;
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(Cookie coo:cookies){
//取出美哟个cookie对象的名字
String cookieName = coo.getName();
if("accessTime".equals(cookieName)){
//取出该cookie的值
accessTime_client = cookie.getValue();
}
}
}
//4、为用户显示上次访问时间
if(accessTime_client!=null){
response.getWriter().write("您的上一次访问时间是: "+accessTime_client);
}else{
//第一次访问
response.getWriter().write("您是第一次访问");
}
二、会话技术之Session
1.怎样去创建session/获得session
HttpSession session = request.getSession();
上述方法的内部原理:
当request在调用getSession方法时,内部会去查看一下该用户是否在web应用的内部存在一块内存区域,如果有直接返回这个内存区域的地址,如果没有就创建一个新的session区域
服务器端通过什么判断用户是否已经存在session的呢?
根据session的编号id--->JSESSIONID
2.session的生命周期
创建:第一次调用request.getSession()
销毁:
1)服务器关闭 session销毁
2)session超时 默认30分钟
计算点从何时开始:最后一次操作该站点后的30分钟
3)手动销毁session
session.invalidate();
3.Session是一个域对象
Session是借助于Cookie的,同一个Session的标志就是JSESSIONID相同。
如果将浏览器关闭,在打开访问资源,会重新创建session
怎样将session持久化----->存储JSESSIONID的Cookie持久化
抓包工具获得:(抓包工具我用的是httpwatch)
Set-Cookie: JSESSIONID=6232D4782FC69B1D780261E93DFA5FBB; Path=/testweb_fr/;
手动创建一个Cookie 在上面的cookie的基础上 多一个max-age
如果客户端禁用Cookie,客户端不能在存储Cookie,JSESSIONID丢失,解决?
解决方案:URL重写,在每个url地址后都使用分号;拼接JSESSIONID
response.ecodeURL()
response.ecodeRedirectURL()
http://localhost/testweb_fr/index.jsp;jsessionid=377B2F0501FF9FE643D7D88F4E883FFD
web基础之会话技术的更多相关文章
- Web基础知识和技术
WEB是一个外延广泛的概念,不单单指网站,乌徒帮专注拥有WEB界面的网站开发,帮助初学者或已经进入开发的朋友们提供参考讨论平台,然而并不一定能将所有的WEB知识讲全讲透,只是能满足初涉者的建站需求,能 ...
- JAVA基础之会话技术-Cookie及Session
至此,学习Servlet三个域对象:ServletContext(web项目).request(一次请求).Session(一个客户端)!均有相同的方法! 从用户开始打开浏览器进行操作,便开始了一次会 ...
- Web核心之会话技术Cookie&Session
什么是会话技术? http协议是无状态协议.为了满足在多次请求之间数据进行交互,推出了会话技术. 会话概念:一次会话,指的是从客户端和服务器建立起连接开始,到客户端或服务器断开连接为止.中间可能进行多 ...
- Asp.NetCore Web开发之会话技术
这节讲一下会话技术,首先了解一下什么是会话,会话是指浏览器打开到关闭的过程中,多次与服务器发送接收数据的过程. 由于HTTP是无状态协议,一次请求响应过后,产生的数据就随之释放了,可是在某些情况下,我 ...
- web基础笔记整理(一)
一.程序的分层 1.界面层: 某种类型的应用程序 a.DOS(控制台运行) b.桌面应用程序--独立安装,独立运行 c.web类型--现在流行的 单机版:电脑上要安装,程序升级之后,电脑上也要升级-- ...
- 2017-2018-2 20155314《网络对抗技术》Exp8 Web基础
2017-2018-2 20155314<网络对抗技术>Exp8 Web基础 目录 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 macOS下Apache的配置 2 macOS ...
- 2017-2018-2 《网络对抗技术》20155322 Exp8 web基础
[-= 博客目录 =-] 1-实践目标 1.1-实践介绍 1.2-实践内容 1.3-实践要求 2-实践过程 2.1-Web前端HTML 2.2-Web前端javascipt 2.3-Web后端 2.4 ...
- 2018-2019-2 网络对抗技术 20165318 Exp 8 Web基础
2018-2019-2 网络对抗技术 20165318 Exp 8 Web基础 原理与实践说明 实践内容概述 基础问题回答 实践过程记录 1.Web前端:HTML 2.Web前端:javascipt ...
- 2018-2019 2 20165203 《网络对抗技术》Exp8 Web基础
2018-2019 2 20165203 <网络对抗技术>Exp8 Web基础 实验要求 1.本实践的具体要求有: (1) Web前端HTML(0.5分) 能正常安装.启停Apache.理 ...
随机推荐
- IOS简单画板实现
先上效果图 设计要求 1.画笔能设置大小.颜色 2.有清屏.撤销.橡皮擦.导入照片功能 3.能将绘好的画面保存到相册 实现思路 1.画笔的实现,我们可以通过监听用户的 平移手势 中创建 UIBezie ...
- PRINCE2学习
今天对PRINCE2中提及的7大主题进行学习,主要的内容是通过概述和PMBOK之间的对比做一些总结,每个主题所包含的过程和方法并没有太多涉及,没有对整个体系有全面深入的学习,有些断章取义的地方也请博友 ...
- llinux svn安装
1,安装SVN服务端 直接用apt-get或yum安装subversion即可(当然也可以自己去官方下载安装) [plain] view plain copy print? sudo apt-get ...
- 使用HTML5的canvas做图片剪裁
前言 图片裁剪上传,不仅是一个很贴合用户体验的功能,还能够统一特定图片尺寸,优化网站排版,一箭双雕. 需求就是那么简单,在浏览器里裁剪图片并上传到服务器. 我第一个想到的方法就是,将图片和裁剪参数(x ...
- mysql 分析第一步
分析mysql 慢的原因 思路 通过脚本观察 status -->看是否会出现周期性波动 一般由访高峰或缓存崩溃引起 加缓存更改 缓存失效策略 使失效时间分散 或夜间定时失效 --&g ...
- linux 常用命令之一
---恢复内容开始--- Applications->Accessories->Terminal(终端) 终端运行起来会启动一个Shell为我们服务 1.提示符是"#" ...
- PIC32MZ Live update bootloader
PIC32MZ 的 flash memory 支持live update, 这是个全新的特性,在之前的所有PIC不管是8位还是16位的单片机上面都没有这个特性.我写过很多PIC 8位和16位单片机的b ...
- Python爬虫 正则表达式
1.正则表达式概述 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来 ...
- 在 redhat 6.4上安装Python 2.7.5
在工作环境中使用的是python 2.7.*,但是CentOS 6.4中默认使用的python版本是2.6.6,故需要升级版本. 安装步骤如下: 1,先安装GCC,用如下命令yum install g ...
- 微信小程序,前端大梦想(二)
微信小程序的视图与渲染 今天我们从四个方面来了解小程序: •组件的基本使用 •数据绑定 •渲染标签 •模板的使用 一.组件的基本使用: 微信小程序为我们的开发提供了丰富的UI组件 ...