Servlet(3):Cookie和Session
一. Cookie
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了
1. 使用cookie记录用户上一次访问的时间
public class CookieTest extends javax.servlet.http.HttpServlet {
boolean flag=false;
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { //乱码问题
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8"); //通过用户请求,检查它是否带有cookie
Cookie[] cookies = request.getCookies();
if(flag){
if(cookies!=null){
for (int i = 0; i < cookies.length; i++) {
Cookie cookie=cookies[i];
if(cookie.getName().equals("lastLoginTime")){
response.getWriter().println("你上次来的时间为:"+cookie.getValue());
}
}
}
}else {
response.getWriter().println("你是第一次来");
}
flag=true;<span class="hljs-comment">//服务端建立一个cookie,把这个cookie发给客户端</span>
response.addCookie(<span class="hljs-keyword">new</span> <span class="hljs-type">Cookie</span>(<span class="hljs-string">"lastLoginTime"</span>,<span class="hljs-type">System</span>.currentTimeMillis()+<span class="hljs-string">""</span>));
} <span class="hljs-keyword">protected</span> void doGet(javax.servlet.http.<span class="hljs-type">HttpServletRequest</span> request, javax.servlet.http.<span class="hljs-type">HttpServletResponse</span> response) <span class="hljs-keyword">throws</span> javax.servlet.<span class="hljs-type">ServletException</span>, <span class="hljs-type">IOException</span> {
doPost(request,response);
}
}
1,第一次访问时这个Servlet时,效果如下所示:
2,点击浏览器的刷新按钮,进行第二次访问,此时就服务器就可以通过cookie获取浏览器上一次访问的时间了,效果如下:
二. Session
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务
1. session实现原理
//session存入信息
//乱码问题
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("utf-8");<span class="hljs-comment">//Session由服务器自动创建;HttpSession 得到的sessioin对象</span>
HttpSession session = request.getSession(); <span class="hljs-comment">//得到sessionID,一次会话,一个seesionID;</span>
<span class="hljs-built_in">String</span> id = session.getId();
response.getWriter().println(<span class="hljs-string">"获得的session的ID:"</span>+id); <span class="hljs-built_in">String</span> name=<span class="hljs-string">"学java的闪电侠"</span>;
<span class="hljs-comment">//向session中存入一个值;</span>
session.setAttribute(<span class="hljs-string">"name"</span>,name);
response.getWriter().println(<span class="hljs-string">"存入信息成功:"</span>+name);
//获得session存入的信息
//乱码问题
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("utf-8");
//获得
HttpSession session = request.getSession();
String name = (String) session.getAttribute("name");
response.getWriter().println("得到的session存入的信息:"+name);
1,第一次访问时,服务器会创建一个新的sesion,并且把session的Id以cookie的形式发送给客户端浏览器
2,再次请求服务器,此时就可以看到浏览器再请求服务器时,会把存储到cookie中的session的Id一起传递到服务器端了
【注意:session.invalidate(); // 通过代码注销会话】
三. Session和Cookie的主要区别
- Cookie是把用户的数据写给用户的浏览器
- Session技术把用户的数据写到用户独占的session中
- Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象
Servlet(3):Cookie和Session的更多相关文章
- 动手学servlet(四) cookie和session
Cookie cookie是保存在客户端的一个“键值对”,用来存储用户的一些信息 cookie的应用: -在电子商务会话中标识用户 -对网站进行定制,比如你经常浏览哪些内容,就展示哪些页面给你 - ...
- JavaWeb之Servlet:Cookie 和 Session
会话 现实生活中我们会用手机跟对方对话,拿起手机,拨号,然后对面接听,跟着互相通话,最后会话结束. 这个过程也可以用我们的B/S模式来描述: 打开浏览器—>输入地址->发出请求->服 ...
- servlet(5) - Cookie和session - 小易Java笔记
1.会话概述 (1)会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. (2)会话过程中的数据不宜保存在request和servle ...
- 【学习】013 Servlet、Cookie、Session的简述
Servlet核心内容 Sevlet的生命周期(重点) Servlet重要的四个生命周期方法 构造方法: 创建servlet对象的时候调用.默认情况下,第一次访问servlet的时候创建servlet ...
- servlet中cookie和session操作
1.1 软件中的会话 一次会话: 打开浏览器 -> 访问一些服务器内容 -> 关闭浏览器 登录场景: 打开浏览器 -> 浏览到登陆页面 -> 输入用户名和密码 -> 访问 ...
- Servlet技术 Cookie与Session
会话过程:用户打开浏览器,点击链接访问资源,最后到关闭浏览器的整个过程称之为会话. 会话使用:与服务器进行会话的过程中产生数据,数据被保存下来,服务器根据数据对客户进行辨别,做出个性化的响应. 介绍两 ...
- Servlet之会话(Session)以及会话追踪技术(Cookie),(URL重写)和(隐藏表单域)
Session 什么是会话? 会话: Web应用中的会话 指的是一个客户端浏览器与Web服务器之间连续发生的一系列请求和响应的过程 会话状态: Web服务器和浏览器在会话的过程中产生的状态信息 作用: ...
- Servlet 会话技术cookie和session
会话技术 Cookie技术:会话数据保存在浏览器客户端. Session技术:会话数据保存在服务器端. 一.Cooke技术 1. 特点 Cookie技术:会话数据保存在浏览器客户端. 2 .Cooki ...
- Java开发工程师(Web方向) - 02.Servlet技术 - 第2章.Cookie与Session
第2章--Cookie与Session Cookie与Session 浏览器输入地址--HTTP请求--Servlet--HTTP响应--浏览器接收 会话(session):打开浏览器,打开一系列页面 ...
- Servlet Cookie、Session
HTTP不能保持连接,可使用会话保存用户信息. 常用的会话技术有2种:Cookie.Session. Cookie 1.原理 当用户第一次访问某个网站时,服务器设置Cookie,存储用户信息,放在响应 ...
随机推荐
- PyCharm Django Python 开发环境配置 详细教程
PyCharm Django Python 开发环境配置 详细教程 1. Python 下载及安装 (1)根据需要的版本去 Python 官网(https://www.python.org/downl ...
- K8S 部署 SpringBoot 项目(一篇够用)
现在比较多的互联网公司都在尝试将微服务迁到云上,这样的能够通过一些成熟的云容器管理平台更为方便地管理微服务集群,从而提高微服务的稳定性,同时也能较好地提升团队开发效率. 但是迁云存在一定的技术难点,今 ...
- C++的重载操作符(operator)介绍
原文转载至:https://blog.csdn.net/liitdar/article/details/80654324 https://blog.csdn.net/liitdar/article/d ...
- Spark SQL知识点大全与实战
Spark SQL概述 1.什么是Spark SQL Spark SQL是Spark用于结构化数据(structured data)处理的Spark模块. 与基本的Spark RDD API不同,Sp ...
- [nfls338]基本字典子串
1.前置知识 以下数字未特殊说明,取值范围均与$N$取交 以下字符串未特殊说明,下标均从1开始,且均为非空串,复杂度中的$n$指字符串长度 周期和border 对于非空集合$S$,定义$\ ...
- [bzoj4942]整数
考虑暴力,即需要考虑如何实现$\pm 2^{k}$,相当于要找到之后的第一个0或者之前的第一个1(维护区间是否全0/1即可),然后区间重置,可以用线段树维护,复杂度为$o(900n)$(a的划分和线段 ...
- KNN算法实现对iris数据集的预测
KNN算法的实现 import pandas as pd from math import dist k = int(input("请输入k值:")) dataTest = pd. ...
- js offset系列属性
offsetParent:返回该元素有定位的父级,如果父级都没有定位则返回body offsetTop:返回元素相对父级(带有定位的父级)上方的偏移 offsetLeft:返回元素相对父级(带有定位的 ...
- Codeforces 710F - String Set Queries(AC 自动机)
题面传送门 题意:强制在线的 AC 自动机. \(n,\sum|s|\leq 3\times 10^5\) 如果不是强制在线那此题就是道 sb 题,加了强制在线就不那么 sb 了. 这里介绍两种做法: ...
- LOJ 2555 & 洛谷 P4602 [CTSC2018]混合果汁(二分+主席树)
LOJ 题目链接 & 洛谷题目链接 题意:商店里有 \(n\) 杯果汁,第 \(i\) 杯果汁有美味度 \(d_i\),单价为 \(p_i\) 元/升.最多可以添加 \(l_i\) 升.有 \ ...