cookie&sessionWebStageDay11

web核心66-day11笔记

1.cookie和session技术
目的:
为了保证在网络交互过程中保存一些临时产生的数据

2.session会话技术
会话:
当你去访问某个网站的时候,打开网站 我们称会话开始了,关闭浏览器我们称会话结束了

3.cookie:
保存数据在浏览器端的
小甜点 小饼干

4.cookie的工作流程:
当咱们浏览器访问服务器的时候,除了正常业务逻辑之外,服务器可以让我们编程决定准备一个键值对数据(key,value) cookie对象
这时候在正常业务逻辑返回的时候,顺便带上cookie对象(底层通过 set-cookie的响应头来做)
返回浏览器内容,浏览器正常解析,除此之外,还会将偷偷返回的cookie 保存下来,

接下来,再次访问服务器的时候,浏览器会根据一定规则  自动偷偷的把cookie带上,(底层通过一个cookie的请求头做到),
request向服务器端获取cookie 提供好方法 直接获取

5.cookie的api:
1)创建cookie对象
cookie cookie=new cookie(“名字”,”值”);
2)响应头带上cookie
response.addCookie(cookie)

3)获取cookie
    cookie[] cookie=request.getCookies();

4)cookie自己方法
    getName();//获取cookie的名字
    getValue();//获取cookie的值

5)cookie的有效期级别:
    会话级别:浏览器关了 浏览器销毁了 ,cookie就没有了;

    持久化级别:
        setMaxAge(int 秒值) 
            正数:写多少存多少秒
            0: 立即删除该cookie 同名同路径
            负数:表示会话级别
        setPath("路径:");给你当前cookie设置一个路径,在下一次发送请求的时候,我们的浏览器会检查 cookie的路径 是否包含此次请求的路径;

        默认情况下,路径为当前请求路径的父目录

            例子:
                请求 /day1101/xx/yy/zz  服务器返回cookie 没有设置path
                cookie的path为 /day1101/xx/yy/,此路径下都可以应用cookie;(此处path说的是 urlPatterns ="/cookie/path")

                接下来访问服务器的时候,
                    /day1101/xx/yy/ww
                    /day1101/xx/yy/ww/xx/asdas
                    以上这些 都可以带上
                如果这些:
                    /day1101/xx
                    /day1101/aa/bb/cc

        主动调用方法设置cookie路径:(设置路径后,怎么取出该cookie?)
            path路径写法 以/打头 跟上项目名 后面自定义

            一般使用 都是要求大家设置为项目名 一般都是整个项目都有效的意思

6.cookie注意事项:
1).cookie 数据大小不要超过4kb
2).cookie 不支持中文 建议不要用中文
3).cookie不能跨浏览器
4).cookie规范:

要求浏览器产商 每一个网站最多给浏览器设置20个cookie 浏览器最多保存300个cookie

7.session技术:
会话技术服务器端技术

7.1..session工作机制
    当你去访问服务器的时候,服务器内部会去检查你是否携带了一个名字叫做 JESSIONID 的 cookie --> Cookie("JESSIONID",随机字符串);
    7.1.1.第一次访问服务器:
        没有带:
            服务器中 可以调用api 为你开辟一块内存空间 底层 new Session()对象
            紧接着调用方法 随机生成一个唯一的字符串(32位?) ,
            将刚刚创建好的session对象跟字符串 映射起来 (术语叫做放入session池)
            相当于放入到了一个map集合中
            {
                随机字符串1:session对象1,
                随机字符串2:session对象2,
                随机字符串3:session对象3,
                随机字符串4:session对象4,
                ......
            },
            紧接着 随机的字符串会被 包装成一个cookie --> new Cookie("JESSIONID",随机字符串);
            并且cookie的path为项目路径 age是-1 ----> 此cookie以后不管项目任何资源都可以调用,并且是会话级别的;
            随着响应带回cookie给浏览器,浏览器将此cookie保存;
    7.1.2.第二次访问服务器:
        带着呢:
            服务器可以取出cookie的随机字符串,拿着随机字符串去session池中 取出对应的session对象;
            你想要对自己session做什么 自己决定 

    7.1.3.如果被劫持了呢?
        随机字符串去session池中有可能 也会查找不到

        若查不到,服务器重新开始 第一个过程:
            服务器中 可以调用api 为你开辟一块内存空间 底层 new Session()对象
            紧接着调用方法 随机生成一个字符串  32位 ,
            将刚刚创建好的session对象跟字符串 映射起来 (术语叫做放入session池)
            相当于放入到了一个map集合中
            {
                随机字符串1:session对象1,
                随机字符串2:session对象2,
                随机字符串3:session对象3,
                随机字符串4:session对象4,
                ......
            },
            紧接着 随机的字符串会被 包装成一个cookie  new Cookie("JESSIONID",随机字符串)
            并且cookie的path为项目路径 age是-1 ---->cookie以后不管项目任何资源都可以 并且会话级别的
            随着响应带回给浏览器


7.2..session的api:
    1).创建session
        //第一次创建
        Httpsession session = request.getSession()
    2).获取seesion
        //第二次是获取
        Httpsession session = request.getSession()

    3).session提供方法是
        getAttribute()
        setAttribute()
        removeAttribute()

session特性:
    存储是私有的,session池存储在服务器.

8.session的生命周期:
1).创建:
Httpsession session = request.getSession()
2).销毁:
2.1.超时销毁
tomcat而言 默认是30分钟
选择性遗忘方法 可以做
setMaxInactiveInterval(int interval)
2.2.手动销毁
invalidate()//立即杀死session–>重要
2.3.正常关闭服务器
服务器会将还没有到期的session进行钝化
下次启动的时候 我们称之为 活化
2.4.非正常关闭服务器 卡死了 断电了
3).session它存在时间多久 —–> 会话级别的(浏览器关闭即销毁cookie)

4).当有请求时候,创建session对象;当到时或浏览器关闭(cookie是会话级别,关闭浏览器则丢失此cookie)时候,销毁.

session可以存储数据,存在服务器端 存储是私有的


案例二 一次性验证例子
需求:
访问登录页面,填入账号密码 验证码,提交表单

    如果不输入验证或验证码为空格:
        在页面提示 验证码必须输入
    如果输入 验证是否正确 
        错误:
        在页面提示 验证码错误重新输入
        正确:
            下一步验证账号密码
                错误了:
                    提示账号密码错误
                正确了:
                    登录成功,跳转首页 在首页显示当前登录人名字

步骤分析:
1.复制原来的项目(包含页面/登陆/注册/查询用户/验证码产生)
2.复制CodeSevrlet(验证码产生Servlet);
1).登录页面 改造验证码(2处)–>
–img标签改为点击(刷新)会变化的验证码(src=”http://localhost/code”),
–验证码input输入框起名字(提交表单),
2).在CodeServlet 中将产生的字符串验证码–>存入session中;
–request.getSession().setAttribute(“标识名”,”验证码内容msg”);
3.提交表单,指向loginServlet,改造loginServlet,增加验证码逻辑判断:
1).验证码(null或空格)逻辑判断;
–页面错误提示:创建login.jsp,login.html中的登陆链接也改位login.jsp;
–loginservlet中获取session,设置属性–>jsp页面显示验证码错误信息
–重定向给login.jsp页面,用session获取要显示的错误信息(没获取到展示null),并展示出来
2).验证码错误逻辑判断:
–错误则重定向给login.jsp(同上),
3).账号密码逻辑判断;
–错误则重定向给login.jsp(同上)
–成功,重定向到首页index.jsp–>首页标识登陆状态,将当前登陆的对象放入session中
4).index.jsp页面,获取session,获取标识user对象,判断是否登陆成功:
–成功,显示”xxx欢迎您”
–未登陆,不显示.
5).退出登陆
–把退出登陆,指向loginoutServlet
–把session销毁,重定向到首页index
6).浏览器回退问题(没有发请求,只是从浏览器内存中)
–让验证码只能用一次–>在loginserlet中,用完即删除验证码信息的session
–if(session==null),重定向login.jsp–>”验证码只能使用一次”

重点总结:
cookie的产生原理/工作原理/生命周期;
session的产生原理/工作原理/生命周期;
登陆/注册/查询用户/验证码产生 案例中,各种细节注意事项,需要考虑非常全面(思维逻辑).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧农业是一种结合了现代信息技术,包括物联网、大数据、云计算等,对农业生产过程进行智能化管理和监控的新模式。它通过各种传感器和设备采集农业生产中的关键数据,如大气、土壤和水质参数,以及生物生长状态等,实现远程诊断和精准调控。智慧农业的核心价值在于提高农业生产效率,保障食品安全,实现资源的可持续利用,并为农业产业的转型升级提供支持。 智慧农业的实现依赖于多个子系统,包括但不限于设施蔬菜精细化种植管理系统、农业技术资料库、数据采集系统、防伪防串货系统、食品安全与质量追溯系统、应急追溯系统、灾情疫情防控系统、农业工作管理系统、远程诊断系统、监控中心、环境监测系统、智能环境控制系统等。这些系统共同构成了一个综合的信息管理和服务平台,使得农业生产者能够基于数据做出更加科学的决策。 数据采集是智慧农业的基础。通过手工录入、传感器自动采集、移动端录入、条码/RFID扫描录入、拍照录入以及GPS和遥感技术等多种方式,智慧农业系统能够全面收集农业生产过程中的各种数据。这些数据不仅包括环境参数,还涵盖了生长状态、加工保存、检验检疫等环节,为农业生产提供了全面的数据支持。 智慧农业的应用前景广阔,它不仅能够提升农业生产的管理水平,还能够通过各种应用系统,如库房管理、无公害监控、物资管理、成本控制等,为农业生产者提供全面的服务。此外,智慧农业还能够支持政府监管,通过发病报告、投入品报告、死亡报告等,加强农业产品的安全管理和质量控制。 面对智慧农业的建设和发展,存在一些挑战,如投资成本高、生产过程标准化难度大、数据采集和监测的技术难题等。为了克服这些挑战,需要政府、企业和相关机构的共同努力,通过政策支持、技术创新和教育培训等手段,推动智慧农业的健康发展。智慧农业的建设需要明确建设目的,选择合适的系统模块,并制定合理的设备布署方案,以实现农业生产的智能化、精准化和高效化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值