Session和Cookie

news2024/10/5 14:23:34

回顾

1.Servlet API
2.HttpServlet
DoXXX处理哪种Http方法会调用到对应的方法
init/destroy/service—>servlet的生命周期
3.HttpServletRequest Http请求 get系列方法
协议名(版本号)
url
query string
header
query String/body
HttpServletResponse Http响应 set系列方法

状态码
各种header
body


正文

当前表白墙写了多个DataSourse,使用单例模式优化
饿汉:类加载创建实例
懒汉:效率更高(首次调用创建实例)

public class DBUtil {
    private static DataSource dataSource=null;
    public DataSource getDataSource(){
        //首次调用的时候创建实例
        if(dataSource==null){
            dataSource=new MysqlDataSource();
            ((MysqlDataSource)dataSource).setURL("jdbc:/mysql://127.0.0.1:3306/java105?characterEncoding=utf8&useSSL=false");
            ((MysqlDataSource)dataSource).setUser("root");
            //数据库的密码
            ((MysqlDataSource)dataSource).setPassword("1309411303");
        }
        return dataSource;
    }
}

还要注意线程安全问题:
多个线程同时判定dataSouce为null,会创建多个实例
Servlet代码中,涉及到多线程/线程安全问题,
Servlet写的是一个服务器,同一时刻,可能要处理多个客户端的请求,一旦有多个客户端发送多个请求,服务器务必需要同时处理多个请求
Tomcat内部正式使用了多线程的方式

解决方案:
1.加上volatile

private static  volatile DataSource dataSource=null;

2.加锁
在这里插入图片描述
3.构造方法私有
在这里插入图片描述

Cookie 和 Session
Cookie 是浏览器在本地持久化保存数据的一种方案
一个典型的使用方式,存储登录信息
在这里插入图片描述
在Servlet中也专门提供了相关的Api,让我们来操作Cookie和Session

理解会话机制

服务器同一时刻收到的请求是很多的. 服务器需要清除的区分清楚每个请求是从属于哪个用户, 就需要在服务器这边记录每个用户令牌以及用户的信息的对应关系
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
写一个模拟登录的案例:
1.登录页面,用户可以填写用户名+密码
2.Servlet来处理登录请求
3.使用另一个Servlet来生成主页内容(登录成功后,跳转到的页面)

1.构造form表单发给Servlet处理(注意三点匹配关系)
name(getParameter),method ,action
在这里插入图片描述
2.Servlet进行判定
当用户点击提交的时候,就会把刚才input框的name的值作为key,把input框里用户的输入,作为value,把这个键值对,放到body中提交给服务器,name属性决定了键值对中的建,通过服务器getParameter获取值
在这里插入图片描述
这里将字符串写到前面,肯定不是空的,一定不会出现空指针异常(好处double check),虽然equls内部已经针对参数为null进行从处理了

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

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

相关文章

【配准和融合相互作用,交互】

RFNet: Unsupervised Network for Mutually Reinforcing Multi-modal Image Registration and Fusion (RFNet:一种互增强的多模态图像配准与融合的无监督网络) 本文提出了一种在相互增强的框架RFNet中实现多模态图像配准与融合的新方法。我们…

第八章 集成学习

8.1 个体与集成 集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类系统、基于委员会的学习等。 下图显示出集成学习的一般结构:先产生一组个体学习器,再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训…

Redis实战——分布式锁

目录 1 一人一单并发安全问题 2 分布式锁的原理和实现 2.1 什么是分布式锁? 2.2 分布式锁的实现 1 一人一单并发安全问题 之前一人一单的业务使用的悲观锁,在分布式系统下,是无法生效的。 理想的情况下是这样的:一个线程成功…

计算机中数的表示和运算

定点数 编程时需要确定小数点位置难以表示两个大小相差较大的数存储空间利用率低 这种用二进制来表示十进制的编码方式,叫作BCD 编码(Binary-Coded Decimal)。 浮点数 小数点的位置可以左右移动的数 规格化浮点数: IEEE 754规格化的尾数…

基于Java+Swing+Mysql实现《黄金矿工》游戏

基于JavaSwingMysq实现《黄金矿工》游戏一、系统介绍二、功能展示三、其他系统一、系统介绍 《黄金矿工》游戏是一个经典的抓金子小游戏,它可以锻炼人的反应能力。。该游戏中,可以通过“挖矿”获得积分,游戏道具:有3瓶药水&#…

cubeIDE开发, 如何结合FreeRTOS开发STM32程序

一、STM32CubeIDE使用内置的FreeRTOS 不同于STM32CubeIDE使用像RTThread这些第三方物联网系统,STM32CubeIDE在安装时就已经在MiddleWare中间件一栏直接支持了FreeRTOS操作系统。 既然STM32CubeIDE已经把FreeRTOS深度整合到了自家的系统中,所以移植及使用…

深度学习中的正则化——L1、L2 和 Dropout

正则化是一组技术,可以防止神经网络中的过度拟合,从而在面对来自问题域的全新数据时提高深度学习模型的准确性。 在本文中,我们将介绍最流行的正则化技术,称为 L1、L2 和 dropout。 文章目录1. 回顾:过拟合2.什么是正则…

【并发编程】AQS ReentrantLock 底层实现原理

一、概述 synchronized上锁机制是通过对象头来实现的,通过锁升级的过程来完成加锁。(https://blog.csdn.net/zhangting19921121/article/details/106002751) 但是synchronized锁升级的过程犹如一个黑盒,我们无法掌控。因此&…

常见的损失函数

1. 损失函数、代价函数与目标函数 损失函数(Loss Function):是定义在单个样本上的,是指一个样本的误差。   代价函数(Cost Function):是定义在整个训练集上的,是所有样本误差的平均…

07_openstack之安全组与浮动IP

目录 一、环境准备 二、浮动IP 1、浮动IP介绍 2、创建和分配浮动IP 三、安全组 1、安全组介绍 2、创建安全组 3、给云主机绑定安全组 一、环境准备 部署openstack私有云环境:02_openstack私有云部署_桂安俊kylinOS的博客-CSDN博客 创建项目和用户&#xf…

Mac电脑系统降级至10.15 Catalina(2020末代intel)

目录起因前期准备降级系统步骤&#xff08;联网&#xff09;选定开机阶段需要按的快捷键进入简化的macOS激活锁页面macOS实用工具页面抹除磁盘安装降级系统Catalina关于从U盘重装系统相关参考博客起因 这部分碎碎念可以不看> < 20年7月买mac是为了找工作&#xff0c;找到…

[附源码]计算机毕业设计校园商铺Springboot程序

项目运行 环境配置&#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…

[附源码]计算机毕业设计药品仓库及预警管理系统Springboot程序

项目运行 环境配置&#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…

libcef.dll文件丢失怎么办?丢失对电脑有什么影响?

提到电脑中的系统文件可能大家都是不太了解的&#xff0c;毕竟平时使用电脑的时候也接触不到那些复杂的文件&#xff0c;最多大家只会使用电脑上面的各种功能&#xff0c;不过虽然接触不到但是大家也要适当的了解一下&#xff0c;就比如libcef.dll文件丢失了就会造成电脑系统出…

Word2Vec详解

Word2Vec 基本思想&#xff1a;通过训练将每一个词映射成一个固定长度的向量&#xff0c;所有向量构成一个词向量空间&#xff0c;每一个向量&#xff08;单词)可以看作是向量空间中的一个点&#xff0c;意思越相近的单词距离越近。 如何把词转换为向量&#xff1f; 通常情况…

用Python做个学生管理系统,这不简简单单

前言 最近因为疫情&#xff0c;各大高校都开始放假了&#xff0c;要不就是回家上网课 我朋友的老师真有趣&#xff0c;硬是要我朋友做个学生管理系统打包成exe文件发给他&#xff0c;才能回家 这不就找上我来了&#xff0c;我写完就顺便发篇文章咯 准备工作 环境准备 Pyth…

Java基于springboot+vue的保健用品销售购物商城系统 前后端分离

随着人们生活水平的提高&#xff0c;人们对日常的保健工作也越来越重视&#xff0c;如何拥有一个更加健康的体魄成为当下很多人的一个追求&#xff0c;尤其是我国当下人口老龄化验证&#xff0c;老人因为身体机能的下降所以也要经常补充一些蛋白核矿物质。当下的年轻人也因为生…

【Java】ArrayList扩容规则

文章目录初始大小扩容规则总结初始大小 ArrayList的初始大小由你选定的构造函数决定&#xff0c;如果你使用无参构造函数&#xff0c;那么初始大小为0&#xff0c;是一个空数组。 而如果你选用有参数的构造函数&#xff0c;那么初始大小为你输入的大小 因此如果问你ArrayLis…

[附源码]计算机毕业设计基于springboot的4s店车辆管理系统

项目运行 环境配置&#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…

货架穿梭车控制方案

穿梭车控制系统结构示意图 系统组成结构示意图穿梭车服务端模块 PLC设备输出的控制客户端4个电机动作的开关量信号 共8个开关量信号&#xff0c;PNP电路接口,接线端子Q3.0&#xff5e;Q3.7&#xff1b;每个继电器由两个开关量的值共同作用&#xff0c;其控制表如下&#xff1a…