IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 2021-12-02---Cookie和Session -> 正文阅读

[网络协议]2021-12-02---Cookie和Session

1.Cookie
----什么是Cookie?
1.Cookie翻译过来是饼干的意思
2.Cookie是服务器通知客户端保存键值对的一种技术
3.客户端有了Cookie后,每次请求都发送给服务器
4.每个Cookie的大小不能超过4kb

----如何创建Cookie
在这里插入图片描述
Servlet 程序中的代码:
protected void createCookie(HttpServletRequest req,HttpServletResponse resp)throw
ServletException, IOException{
//1.创建Cookie对象
Cookie cookie= new Cookie(“key4”,“value4”);
//2.通知客户端保存Cookie
resp.addCookie(cookie);
//1.创建Cookie对象
Cookie cookie1=new Cookie(“key2”,“value2”);
//2.通知客户端保存Cookie
resp.addCookie(cookie1);
resp.getWrite().write(“Cookie创建成功”)
}
----服务器如何获取Cookie
服务器获取客户端的Cookie只需要一行代码:req.getCookie():Cookie[]
在这里插入图片描述
Cookie的工具类:
public class CookieUtils{
/*
查找指定名称的Cookie对象
@param name
@param cokies
*/
public static Cookie findCookie(String name,Cookie[] cookies){
if (namenull || cookie == null || cookie.lenght0){
return null;
}
for(Cookie cookie:cookies){
if(name.equals(cookie.getName())){
return cookie;
}
}
return null;
}
}

----Servlet程序中的代码:
protected void getCookie (HttpServletRequest req,HttpServletResponse resp)throw ServletException,
,IOException {
Cookie[] cookies=req.getCookies();
for(Cookie cookie:cookies){
//getName方法返回Cookie的key(名)
//getValue 方法返回Cookie的value值
resp.getWrite().write(“Cookie[”+cookie.getName()+"="+cookie.getValue()+"]
")
}
Cookie IWantCookie=CookieUtils.findCookie(“key1”,cookies);
if(IWantCookie!=null){
resp.getWrite().write(“找到了需要的Cookie”);
}
}
----Cookie值的修改
方案一:
1.先创建一个要修改的同名(值的就是key)的Cookie对象
2.在构造器,同时赋予新的Cookie值
3.调用response.addCookie(Cookie);
方案二:
1.先查找需要修改的Cookie对象
2.调用setValue()方法F悆的Cookie值
3.调用response.addCookie()通知客户端保存修改
浏览器查看Cookie:
谷歌浏览器如何查看Cookie:
在这里插入图片描述
----Cookie生命控制
Cookie的声明控制指的是如何管理Cookie什么时候被销毁(删除)
setMaxAge()
正数,表示在指定的秒数后过期
负数,表示浏览器乙肝,Cookie就会删除(默认值是-1)
零,表示马上删除

//设置存活一小时
protected void life3600(HttpServletRequest req,HttpServletresponse resp)throws ServletException
,IOEception{
Cookie cookie=new New(“life3600”,“life3600”);
cookie.setMaxAge(60*60);//设置Cookie一小时后自动删除.无效
resp.addCookie(cookie);
resp.getWrite().write(“已经创建了一个存活一小时的Cookie”)
}

//删除一个Cookie
protected void deleteNow(HttpServletRequest req,HttpResponse resp)throw ServletException,
IOEception{
//先找到你要删除的Cookie对象
Cookie cookie=CookieUtils.findCookie(“key4”,req.getCookies());
if(cookie!=null){
//diaoyong setMaxAge(0)
cookie.setMaxAge(0);
//调用response,addCookie(cookie)
resp.addCookie(cookie);
resp.getWriter().write(“key4de Cookie已经被删除”);
}
}
默认的会话级别Cookie
protected void defaultLife(HttpServletRequest req ,HttpServletresponse resp)throw ServletException,
IOException{
Cookie cookie=new Cookie(“defaultLife”,“defaultLife”);
cookie.setMaxAge(-1);//设置存活时间
resp.addCookie(cookie);
}
----Cookie练习—免输入用户名登录
在这里插入图片描述
login,jsp页面

用户名:

密码:



LoginServlet程序:
protected void doget(HttpServletRequest req ,HttpServletResponse resp)throws ServletException,
IOEception{
String username=req.getParamater(“username”);
String password=req.getParameter(“password”);if(“wzg168”.equals(username)&&“123456”.equals(password))
{
//登陆成功
Cookie cookie=new Cookie(“username”,username);
cookie.setMaxAge(606024*7);//当前Cookie一周内有效
resp.addCookie(cookie);
System.out.println(“登录成功”);
}else{
//登录失败
System.out.println(“登录失败”);
}
}

-----------------------------------------------------------------------------------------------------
Session会话

什么是Session会话?
1.Session就是一个接口(HttpSession).
2.Session就是会话,他就是用来维护一个客户端和服务器之间关联的一种技术
3.每个用户端都有自己的一个session会话
4.session会话中,我们经常用来保存用户登录之后的信息

如何创建Session和获取(id号,是否为新)

如何创建和获取Session.他们的Apu是一样的

request.getSession()
第一次调用是:创建Session会话
之后调用都是:获取前面创建好的Session会话对象.
IsNew():判断到底是不是刚创建出来的(新的)
true表示刚创建
false表示获取之前创建

每个会话都有一个身份证号,也就是ID值.而且这个ID是唯一的
getid()得到Session的会话id值

Session域数据的存储

protected void setAttribute(HttpSercletRequest req,HttpServletResponse resp)throws ServletException,
IOEception{
rep.getSession().setAttribute(“key1”,“value1”);
resp.getWriter().write(“已经往Session中保存了数据”);
}

protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
Object attribute = req.getSession().getAttribute(“key1”);
resp.getWriter().write(“从 Session 中获取出 key1 的数据是:” + attribute);
}

----Session声明周期控制
public void setMaxInactiveInterval(int interval)设置 Session的超时时间(以秒为单位),超过指定时长
,Session就会被销毁.
值为整数时,设定Session的超时时长.
负数表示不超时(极少使用)

public int getMaxInactiveinterval()获取Sessionde 超时时间
public void invalidate() 让当前Session会话马上无效.

Session 默认的超时时长是多少?
Session默认的超时时间长为30分钟.

因为在Tomcat服务器的配置文件web.xml中默认有一下的配置,他表示配置了当前Tomcat服务器
下所有的Session超时配置默认时长为:30分钟.

30

如果说,你希望你的web工程,默认的Session的超时时长为其他时长.你可以在你自己的web.xml配置
文件中做以上相同配置,就可以修改你的web工程所有session的默认超时时长

20

如果你想只修改个别 Session 的超时时长。就可以使用上面的 API。
setMaxInactiveInterval(int interval)来进行单独的设置。
session.setMaxInactiveInterval(int interval)单独设置超时时长。

Session 超时的概念介绍
在这里插入图片描述
示例代码:
protected void life3(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
// 先获取 Session 对象
HttpSession session = req.getSession();
// 设置当前 Session3 秒后超时
session.setMaxInactiveInterval(3);
resp.getWriter().write(“当前 Session 已经设置为 3 秒后超时”);
}

Session 马上被超时示例:

protected void deleteNow(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
// 先获取 Session 对象
HttpSession session = req.getSession();
// 让 Session 会话马上超时
session.invalidate();
resp.getWriter().write(“Session 已经设置为超时(无效)”);
}

----浏览器和 Session 之间关联的技术内幕
Session 技术,底层其实是基于 Cookie 技术来实现的。
在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-03 13:23:39  更:2021-12-03 13:23:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/6 8:38:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码