javaweb学习之会话技术CookieSession05

news2024/11/18 20:30:44

目录

1.会话技术

2.快速入门

3.实现原理

4.cookiel的细节

2.cookie能不能存中文

3.cookie共享问题

4.Cooie的特点和作用

5.综合案例 记录上一次访问时间


1.会话技术

1会话:一次会话中包含多次请求和响应。
*一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止
2功能:在一次会话的范围内的多次请求间,共享数据
3,方式:
1,客户端会话技术:Cookie
2,服务器端会话技术:Session
Cookie
1,概念:客户端会话技术,将数据保存到客户端

2.快速入门

*使用步骤:
1,创建Cookie对象,绑定数据
new Cookie(string name,string value)
2,发送Cookie对象
response.addcookie(Cookie cookie)

package com.hzw.cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/cookie01")
public class Cookie01 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       //1.创建cookie对象
        Cookie cookie = new Cookie("hzw", "kuku");
        //2.发送cookie
        response.addCookie(cookie);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}


3,获取Cookie,拿到数据
Cookie[]  request.getcookies()

package com.hzw.cookie;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/cookie02")
public class Cookie02 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     //2.获取cooki
        Cookie[] cookies = request.getCookies();
        //获取数据遍历
        if (cookies!=null){
            for (Cookie cookie : cookies) {
                String name = cookie.getName();
                String value = cookie.getValue();
                System.out.println(name);
                System.out.println(value);
            }
        }
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

3.实现原理

*基于响应头set-cookie和请求头cookie实现

4.cookiel的细节

1.一次可不可以发送多个cookie?
*可以
*
可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。
2,cookie?在浏览器中保存多长时间?
1.默认情况下,当浏览器关闭后,Cookie数据被销毁
1.持久化存储
setMaxAge(int seconds)
1.正数:将Cookie数据写到硬盘的文件中。持久化存储。cookie存活时间。
2.负数:默认值 关闭浏览器删除cookie信息
3.零:削除cookie信息

2.cookie能不能存中文

*在tomcat8之前cookie中不能百接存储中文数据。
需要将中文数据转码--,一般采用URL编码(%E3)
*在tomcat8之后,cookie支持中文数据。

3.cookie共享问题


1.假设在一个tomcat服务器中,部署了多个web项目,那么在这些web项目中cookie能不能共享?
*默认情况下cookie不能共享
setPath(String path):设置cookie的获取范国。默认情况下,设道当前的虚拟目录
素如果要共享,则可以将path设置为“/“
2,不同的tomcat服务器间cookie共享问题?
常setDomain(string path):如果设置一级域名相同,那么多个服务器之间cookie可以共享I
*setDomain(",baidu.com"),那么tieba,baidu,com和news,baidu,com中cookie可以共享

4.Cooie的特点和作用

1,cookie存储数据在客户端浏览器
2,浏览器对于单个cookie的大小有限制(4kb)以及对同一个域名下的总cookie数量也有限制(20个)
*作用:
1,cookie一般用于存出少量的不太敏感的数据
2,在不登录的情况下,完成服务器对客户端的身份识别

5.综合案例 记录上一次访问时间

 

package com.hzw.cookie;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/cookie03")
public class CookieTest extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        boolean flag=false;  //cookie 是否有LastTime
        //1.获取cookies
        Cookie[] cookies = request.getCookies();
        //2.获取数据遍历
        if (cookies!=null &&cookies.length>0){
            for (Cookie cookie : cookies) {
                //3.获取cookie名称
                String name = cookie.getName();
                if ("lastTime".equals(name)){
                   flag=true;  //有lastTime 的cookie
                    //设置Cookie的value
                    //获取当前时间的字符串,重新设置Cookie的值,
                    Date date = new Date();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
                    String date1 = sdf.format(date);
                    //设置cookie持久化存活时间
                    cookie.setMaxAge(60*60*24);
                    response.addCookie(cookie);
                    //获取cookie
                    String value = cookie.getValue();
                   //响应:
                    response.getWriter().write("<h1>您上次访问时间:"+value+"</h1>");
                    break;
                }
            }
        }
        if (cookies==null ||cookies.length==0||flag==false){
            //
            //获取当前时间的字符串,重新设置Cookie的值,
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
            String date1 = sdf.format(date);
            Cookie cookie = new Cookie("lastTime", date1);
            //设置cookie持久化存活时间
            cookie.setMaxAge(60*60*24);
            response.addCookie(cookie);
            response.getWriter().write("<h1>您好,欢迎您第一次来到天堂</h1>");
        }
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

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

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

相关文章

新冠确诊阳性后的第二篇博客,一文带你学习文件上传漏洞

新冠确诊阳性后的第二篇博客&#xff0c;一文带你学习文件上传漏洞1.什么是文件上传漏洞2.不要使用黑名单规定上传文件类型3.绕过文件上传检查功能4.Apache文件解析问题5.IIS文件解析问题6.设计安全的文件上传功能1.什么是文件上传漏洞 文件上传漏洞是指用户上传了一个可执行的…

RabbitMQ管理界面

&#x1f341;博客主页&#xff1a;&#x1f449;不会压弯的小飞侠 ✨欢迎关注&#xff1a;&#x1f449;点赞&#x1f44d;收藏⭐留言✒ ✨系列专栏&#xff1a;&#x1f449;Linux专栏 &#x1f525;欢迎大佬指正&#xff0c;一起学习&#xff01;一起加油&#xff01; 目录&…

记录我の秋招之旅【23届 CV算法岗】

文章目录碎碎念春招实习华为实习魔幻秋招尘埃落定碎碎念 今年(2022年)的秋招不能说"非常困难"吧&#xff0c;只能说是"地狱难度"&#xff0c;相信参与或者从侧面了解过的同学们也能感同身受。从今年的三月份开始着手秋招&#xff0c;期间也一直忙着实验室…

【基于Transformer和可逆神经网络】

Effective Pan-Sharpening With Transformer and Invertible Neural Network &#xff08;基于Transformer和可逆神经网络的有效泛锐化&#xff09; 可逆神经网络1 可逆神经网络2 在遥感成像系统中&#xff0c;全色锐化是从高分辨率全色图像及其对应的低分辨率多光谱图像获得…

30岁之后想转行,可行吗?这20条建议让你少走弯路!

都说三十而立&#xff0c;可眼看着到了意气风发的年龄&#xff0c;却突然意识到自己仍一事无成&#xff0c;甚至连养活自己都是问题。30多岁&#xff0c;大多数人还要开始买房、买车、结婚生子&#xff0c;养家糊口&#xff0c;于是各种压力逼迫之下&#xff0c;就想到了转行&a…

移动硬盘中安装ubuntu系统——Vmware Workstation安装

一. 简介 对于一个程序开发者来说&#xff0c;电脑系统开发环境非常重要。要使用相同的系统环境&#xff0c;可以的方式有&#xff1a;1、携带电脑&#xff0c;2、携带安装了系统的移动硬盘。相比来说&#xff0c;第二种方式更理想&#xff0c;如果是第一种方式携带电脑的话&a…

基于java+springboot的民宿预订信息网站-计算机毕业设计

运行环境 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven 项目介绍 随着国民生…

大学没有学好专业,毕业如何转行?

大学颓废度过&#xff0c;毕业工作一无所长&#xff0c;颠沛流离&#xff01; 本人17届某二流专科毕业&#xff0c;模具设计与制造专业。其实对模具毫无兴趣&#xff0c;只怪当初没有主见听从没有出过县城的老爸的命令选择了模具这个专业。大学期间上课睡觉玩手机&#xff0c;…

2023年元旦倒计时案例

文章目录基于HTML实现2023年倒计时代码实现基于HTML实现2023年倒计时 代码实现 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>2023倒计时</title> <!-- <link rel"stylesheet" href"sty…

傻白探索Chiplet,Chiplet的通信结构(八)

目录 一、SoC总线结构 二、NoC结构 2.1 NoC层次 2.2 NoC基本组成和属性 2.3 NoC常见的拓扑结构 2.3.1 2D Mesh 2.3.2 2D Torus 2.3.3 3D Mesh 2.3.4 Octagon/Spidergon结构 2.3.5 Cluster Mesh结构 2.3.6 树状结构 2.3.7 蝶状结构 2.4 各种结构之间的比较 2.5 …

网络技术期末复习~基础理论题

问题1.1试述五层协议的网络体系结构的要点&#xff0c;包括各层的主要功能。 解&#xff1a; 物理层&#xff1a;传输比特流。 数据链路层&#xff1a;传送以帧为单位的数据&#xff0c;实现网络中相邻两个节点直接的连接。 网络层&#xff1a;提供主机间的通信服务。&…

【小学信息技术教资面试】《数据计算》教案

1.题目&#xff1a;数据计算 2.内容&#xff1a; 3.基本要求 &#xff08;1&#xff09;掌握公式和函数的使用方法。 &#xff08;2&#xff09;试讲中体现学生的参与性。 &#xff08;3&#xff09;配合板书讲解。 《数据计算》教案 一、教学目标 1.了解公式的组成&#x…

Hadoop综合项目——二手房统计分析(起始篇)

Hadoop综合项目——二手房统计分析&#xff08;起始篇&#xff09; 文章目录Hadoop综合项目——二手房统计分析&#xff08;起始篇&#xff09;0、 写在前面1、项目背景与功能1.1 项目背景1.2 项目功能2、数据集和数据预处理2.1 数据集2.2 数据预处理2.2.1 字段空值处理2.2.2 无…

计算机毕设Python+Vue养生知识平台(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

浅析在线教育行业发展所面临的困境

2013年&#xff0c;在线教育行业悄然兴起&#xff0c;一时间引发讨论。到新冠疫情期间&#xff0c;受到疫情和政策的双重抨击&#xff0c;线下教育行业遭到重创&#xff0c;又有更多人开始关注到并开始看好在线教育。作为技术发展下的产物&#xff0c;在线教育跨越了时间、空间…

【小学信息技术教资面试】《认识Windows程序窗口》教案

1.题目&#xff1a;认识Windows程序窗口 2.内容&#xff1a; 3.基本要求&#xff1a; &#xff08;1&#xff09;学生掌握改变窗口大小和位置的方法。 &#xff08;2&#xff09;教学中注意师生间的交流互动。 &#xff08;3&#xff09;让学生明白Windows窗口组成。 《认识W…

超标量处理器设计——第七章_寄存器重命名

超标量处理器设计——第七章_寄存器重命名 参考《超标量处理器》姚永斌著 文章目录超标量处理器设计——第七章_寄存器重命名7.1 简述7.2 寄存器重命名方式7.2.1 用ROB进行寄存器重命名7.2.2 扩展ARF进行寄存器重命名7.2.3 使用统一的PRF进行寄存器重命名7.3 重命名映射表&…

UI 自动化测试实战(二)| 测试数据的数据驱动

关注公众号&#xff0c;获取测试开发实战干货合辑。本文节选自霍格沃兹《测试开发实战进阶》课程教学内容&#xff0c;进阶学习文末加群。 数据驱动就是通过数据的改变驱动自动化测试的执行&#xff0c;最终引起测试结果的改变。简单来说&#xff0c;就是参数化在自动化测试中的…

企业生产管理必备模板,助力企业数字化转型

如今企业在市场经济中快速发展&#xff0c;不少企业在市场中得到了更好的发展机遇。然而机遇与挑战往往是共存的&#xff0c;市场同时也给制造企业生产方面提出了更高要求——企业需要在产品结构优化、生产系统改良以及运作模式创新的基础上&#xff0c;注重管理思维模式的改进…

【实时数仓】DWM层订单宽表之维表关联优化 -- 异步查询

文章目录一 DWM层-订单宽表1 维表关联代码实现&#xff08;1&#xff09;优化2&#xff1a;异步查询a 封装线程池工具类b 封装维度异步查询的函数类DimAsyncFunctionc 自定义维度查询接口DimJoinFunctiond 使用DimAsyncFunction关联用户维度源码测试配置配置表历史数据同步总结…