会话技术Cookie
1.会话技术的概念
- 会话∶浏览器和服务器之间的多次请求和响应。
- 为了实现一些功能,浏览器和服务器之间可能会产生多次的请求和响应,从浏览器访问服务器开始,到访问服务器结束(关闭浏览器、到了过期时间)。这期问产生的多次请求和响应加在一起就称之为浏览器和服务器之间的一次会话。
- 会话过程中所产生的一些数据,可以通过会话技术( Cookie和Session )保存。
2.Cookie的概念
- Cookie :客户端会话管理技术把要共享的数据保存到客户端。
- 每次请求时,把会话信息带到服务器端,从而实现多次请求的数据共享!
- 作用:可以保存客户端访问网站的相关内容,从而保证每次访问时先从本地缓存中就取,以此提高效率
- -cookie有大小和个数限制:每个网站最多只能存20个Cookie,所有网站加起来最多只能存300个Cookie。每个Cookie的大小不能超过4KB
3.Cookie的添加和获取
//cookie把数据保存在客户端
//Session把数据保存在服务端,且依赖于cookie
@WebServlet("/ServletDemo1")
public class ServletDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置请求字符编码,防止乱码req.setCharacterEncoding("utf-8");//设置浏览器响应编码[html类型的文本,字符集为utf-8]resp.setContentType("text/html;charset=utf-8");//1.通过响应对象写出提示信息PrintWriter pw = resp.getWriter();pw.write("最后浏览时间为<br/>");//2.创建Cookie对象,用于记录最后访问时间Cookie cookie = new Cookie("time", System.currentTimeMillis() + "");//3.设置最大存活时间cookie.setMaxAge(3600);//4.将cookie对象添加到客户端resp.addCookie(cookie);//5.获取cookieCookie[] cookies = req.getCookies();for (Cookie c : cookies) {//if("time".equals(c.getName())){if(c.getName().equals("time")){String value = c.getValue();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");pw.write(sdf.format(new Date(Long.parseLong(value))));}}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
4.Cookie的路径限制
【取自第一次访问的资源路径前缀,只要以这个前缀为开头(包括子级路径)。获取到反之获取不到】
@WebServlet("/servlet/aaa/ServletDemo4")可以获取到
@WebServlet("/bbb/servlet/ServletDemo5")不可以获取
//cookie的路径限制
@WebServlet("/servlet/ServletDemo3")
//取自第一次访问的资源路径前缀,只要以这个前缀为开头(包括子级路径)。获取到反之获取不到
public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//创建Cookie并添加Cookie cookie = new Cookie("username", "zhangsan");cookie.setMaxAge(3600);//sresp.addCookie(cookie);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
5.例子:最后浏览时间
@WebServlet("/ServletDemo2")
public class ServletDemo2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置请求字符编码,防止乱码req.setCharacterEncoding("utf-8");//设置浏览器响应编码[html类型的文本,字符集为utf-8]resp.setContentType("text/html;charset=utf-8");//1.获取所有的Cookie对象//需要加非空判断PrintWriter pw = resp.getWriter();Cookie[] cookies = req.getCookies();if(cookies==null){//如果为空,说明第一次访问,使用Cookie记录这一次访问的时间Cookie cookie = new Cookie("lasttime", System.currentTimeMillis() + "");cookie.setMaxAge(3);resp.addCookie(cookie);pw.write("欢迎光临,第一次访问");return;}//2.查找lasttime名称的Cookie是否存在int index = -1;for (int i = 0; i < cookies.length; i++) {//可以加个cookies[i]判空if (cookies[i].getName().equals("lasttime")) {index = i;break;}}//如果不存在,说明第一次访问,使用Cookie记录这一次访问的时间if (index == -1) {Cookie cookie = new Cookie("lasttime", System.currentTimeMillis() + "");cookie.setMaxAge(3);resp.addCookie(cookie);pw.write("欢迎光临,第一次访问");}//如果存在,说明不是第一次访问,使用Cookie响应给浏览器这一次的时间if (index != -1) {String value = cookies[index].getValue();SimpleDateFormat sdt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");pw.write("欢迎回来,上次访问时间</br>" + sdt.format(new Date(Long.parseLong(value))));//并设置新时间cookies[index].setValue(System.currentTimeMillis() + "");resp.addCookie(cookies[index]);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
会话技术Cookie相关推荐
- java ee会话_Java EE会话技术Cookie和Session
会话技术 一.定义 会话技术是帮助服务器记住客户端状态的(区分客户端的).将客户访问的信息存在本地的叫Cookie技术,存在服务器上的叫Session技术. 注意: 一次会话何时开始?从打开一个浏览器 ...
- PHP自学之路----会话技术(cookie session)
会话技术 l 什么是会话 打开浏览器,访问某个网站的很多资源(页面=)通过超链接),当你关闭浏览器后,一个会话结束. l 思考一个问题 在意个会话中,用户会产生一些数据,比如购物车,每个用户查看购 ...
- 会话技术 —— Cookie 实现原理 || 在idea编辑器中设置代码的模板
会话技术 1. 会话:一次会话中包含多次请求和响应. * 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 2. 功能:在一次会话的范围内的多次请求间,共享数据 3. ...
- PHP会话技术cookie
为什么要使用会话技术 我们在浏览网站的时候,访问每一个Web页面都是使用HTTP协议来实现的.由于HTTP协议是一个无状态的协议.这就会导致当一个用户请求一个页面以后,再请求该网站的其他页面,HTTP ...
- 四、PHP基础——会话技术Cookie 和 Session
会话技术初步认识 会话技术介绍 web会话可简单理解为:用户开一个浏览器,访问某一个web站点,在这个站点点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. HTTP协 ...
- Java Web 项目入门指南(http、Servlet、Request、Response、ServletContext、会话技术[cookie、session]、Filter、Listener)
概述 web 服务器.项目.资源概述 web 服务器:可以被浏览器访问到的服务器 常见的 web 服务器: tomcat:中小型的服务器软件,免费开源,支持 JSP 和 Servlet apache ...
- Java中 操作Servlet域中的值以及会话技术 cookie
XML文件<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="ht ...
- 大数据WEB阶段(十二)会话技术、Cookie、Session及两者的区别
会话技术 – Cookie与Session及其两者的区别 (一)会话技术 一.概述 1. 一个浏览器为了实现某一个功能对服务器产生了多次请求响应.从第一个请求开始访问服务器,会话开始,到最后一个页面访 ...
- Java Web 七 会话技术 八 Cookie 九 Session
七 会话技术 打开浏览器,访问服务器中资源,关闭浏览器:这个过程就是会话 分类 * Cookie会话技术:浏览器会话技术* Session会话技术:服务器会话技术 作用 解决ServletContex ...
最新文章
- 后台开发之IO缓冲区管理
- 说说JSON和JSONP,也许你会豁然开朗
- 布局文件中fill_parent、match_parent和wrap_content有什么区别?
- htmlparser 获取某a标签地址_HTML常用标签
- Linux的关机命令和重启命令
- STM32中stm32f0xx_flash.icf文件的作用详解!
- android 4.0.4 usb调试,安卓手机4.0怎么打开usb调试?图文详解附视频
- mysql三表where查询_mysql三表查询sql语句
- JAVA学习day07 1
- 【linux C】C语言中常用的几个函数的总结【二】
- 如何将道具传递给{this.props.children}
- java架构专题涨价_关于单量预测和动态定价的一些思考
- 福建省12.5米DEM数字高程数据
- Android View事件分发机制
- 1.2 win10下Docker 和 Docker Compose的安装
- 第二十四章 SQL函数 CEILING
- TF卡/SD卡 异常问题,识别不了
- 互联网行业,回暖了?
- 类似qq新闻提示窗口样码(cpy)
- 腾讯云对象存储空间分片、断点续传功能的封装与使用
热门文章
- POJ-2069 Super Star(最小球覆盖)
- 2020 Jiangsu Collegiate Programming Contest
- P3642 [APIO2016]烟火表演(左偏树、函数)
- 2021牛客OI赛前集训营-树数树【树上启发式合并,堆】
- P4168-[Violet]蒲公英【分块】
- nssl1249-C【数论】
- 【做题记录】CF1428E Carrots for Rabbits—堆的妙用
- 18、java中的泛型
- Hadoop入门(十)Mapreduce高级shuffle之Sort和Group
- 这些面试中的智力题,你都会了吗