cookie

图解HTTP学习(2):简单的HTTP协议

我的未来我决定 提交于 2020-03-01 14:12:39
1. HTTP协议用于客户端和服务器端之间的通信 规定:请求从客户端发出,服务器端响应请求,即客户端开始建立通信,报文格式如下 (1)请求报文格式;请求方法+请求URI+协议版本+可选的请求首部字段+内容实体 (2)响应报文格式:协议版本+状态吗+解释状态码的原因短语+可选的响应首部字段以及实体主体 2. HTTP是不保存状态的协议 (1)无状态协议,即不做持久化处理,之前的访问信息不予记录,每一次都是新的请求,后为了保持状态引入了cookie技 术。 (2)HTTP请求URI定位资源,如果不是访问特定资源而是对服务器本身发起请求,可以使用*代替URI 3. 告知服务器意图的HTTP方法 (1)GET:当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL 定位的资源放在响应报文的数据部分,回送给客户端,即向服务器请求某个资源。使用GET 方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。如果请求资源是文本,原样返回;如果是CGI,返回执行后的结果 (2)POST:用来传输实体的主体(get也可以但一般不用),主要目的并不是获取响应的主体内容,当客户端给服务器提供信息较多时可以使用POST 方法,POST

java 常见面试题

倖福魔咒の 提交于 2020-03-01 12:44:31
基本问题 基本数据类型和对象的区别 (1) 基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的栈上的,数据本身的值就是存储在栈空间里面,Java语言里面八种数据类型是这种存储模型; (2) 引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java堆和栈来进行这种类型的数据存储,简单地讲,“引用”(存储对象在内存堆上的地址)是存储在有序的栈上的,而对象本身的值存储在堆上的; 不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于引用类型来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上。 JAVA中的数据类型及其各自的特点。 分为基本类型和引用类型,基本类型有八个,数值型的有byte(1字节),short(2字节),int(4字节),long,float,double,布尔类型的bool和字符类型的char。引用类型有类,接口,数组。 JAVA面向对象的特征? 封装、继承、多态、抽象 封装:通过类来体现,将实体封装成类,其中包含属性和方法 继承:类与类之间可以继承特点,使得代码重用 多态:通过传递给父类对象引用不同的子类从而表现出不同的行为 抽象: 将一类实体的共同特性抽象出来

Tomcat中session的管理机制

与世无争的帅哥 提交于 2020-03-01 12:21:24
1. 请求过程中的session操作: 简述:在请求过程中首先要解析请求中的sessionId信息,然后将sessionId存储到request的参数列表中。然后再从 request获取session的时候,如果存在sessionId那么就根据Id从session池中获取session,如果sessionId不 存在或者session失效,那么则新建session并且将session信息放入session池,供下次使用。 (1) SessionId解析过程时序图: 概述:首先用户发送一个http请求传递给Http11Processor,经由Http11Processor解析封装在 org.apache.coyote.Request然后传递给CoyoteAdapter,coyoteAdapter是一个适配器,将coyote框 架封装的org.apache.coyote.Request适配给org.apache.catalina.connector.Request(这个 流程不多说,之前都有总结过),转换完之后会调用parsePathParameters方法去解析路径参数中的cookie信息(因为当cookie被 浏览器禁用时,会将cookie信息重写进url),先尝试从url中尝试解析出sessionId. 然后会调用parseSessionCookiesId

web服务器集群(多台web服务器)后session如何同步和共享

☆樱花仙子☆ 提交于 2020-03-01 10:20:28
在访问量上去以后,很多人会采用web集群的方式在满足逐渐增长的用户量。这时候就不得不面对一个问题,那就是在多个服务器下,每次请求都会因为负载均衡而分配到不同的服务器上。用户在登录服务器后,下一次请求被分配到另一个服务器上,这时候session不同步,用户就无法继续使用原先的session。下面我就聊聊如何解决这个问题。 一、利用Mysql数据库共享Session数据的方式 使用一个mysql服务器做共享服务器,把所有的session的数据保存mysql服务器上,所有的web服务器都来这台mysql服务器来获取session数据。这里有一个关键的地方,用来存放session的数据表不要跟其他 数据库 表放在一起,要 独立开 来,专门放在一个低端的服务器上面。不然,数据库本身压力就很大了,再加上 session是需要频繁的读取 的,这使得数据库很容易达到瓶颈,从而导致过高的响应延迟。 二、利用cookie共享Session数据 当用户请求后产生的session,我们把他的 sessionId和值都存在cookie里面 。这样,当你访问a服务器后,产生了session放在客户端的cookie里面,你在访问被分配到b服务器上。这时候,b服务器先判断本身服务器上有没有这个用户的session,如果没有,在去看看客户端的cookie里面有没有这个session,如果有

Laravel请求和输入

微笑、不失礼 提交于 2020-03-01 09:39:09
该篇文章主要介绍Laravel获取用户请求和输入信息的方法。 获取基本输入信息: //获取输入数据,不用担心所使用的HTTP方法 $id = Input::get('id'); //可以指定默认值 $id = Input::get('id', 1); //检测提交信息是否存在 if(Input::has('id')) { echo Input::get('id'); } //获取提交的所哟信息 print_r(Input::all()); //获取指定的几个提交信息 print_r(Input::only('id')); //获取排除执行信息外的信息 print_r(Input::except('name')); //用点符号获取数组形式的输入信息 $input = Input::get('users.0.name'); Cookie信息: 所有cookie值都本laravel加密,擅自修改cookie将会被废弃; //获取一个cookie的值 $value = Cookie::get('name'); //给响应添加新的cookie $response = Response::make('Hello World'); $response->withCookie(Cookie::make('name', 'value', $minutes)); //在响应之前添加到cookie队列

PHP _ session 详解

左心房为你撑大大i 提交于 2020-03-01 09:18:16
http协议是WEB服务器与客户端(浏览器)相互通信的协议,它是一种无状态协议。所谓无状态,指的是不会维护http请求数据,http请求是独立的,非持久的。而越来越复杂的WEB应用,需要保存一些用户状态信息。这时候,Session这种方案应需而生。PHP从4.1开始支持Session管理。 session是很抽象的一个概念。我们不妨先从与它几个息息相关的有迹可寻的小切入点入手,然后逐渐地认识了解它。 session存储 首先,我们为什么需要Session,就是因为我们需要存储各个用户的状态数据。那么试问,如果由你来设计解决这个需求的方案,那么也许你会设置这样一个数据表用与存储各个用户的状态信息: uid created data max_age 94c55770fdf044a7 1270802787 jtUsername=admin 14400 2c37df64277e4409 1270822787 jtUsername=Joe;jtBooks=8; 14400 … … … … uid : 用户唯一标识符,区分其它用户 created : 记录产生时间 data : 存放与用户相关的数据 max_age : 记录的有效时间 同样地,PHP设计管理session方案也大致如此,它分别包含了以下信息: 1. session id 用户session唯一标识符,随机生成的一串字符串

EL表达式中的隐含对象

时光怂恿深爱的人放手 提交于 2020-03-01 08:07:25
如果你对EL表达式基础不熟悉的话请看我前面的两篇博客: EL表达式语言(一) 以及 EL表达式语言(二) 为了能够获得web应用程序中的相关数据,EL表达式中定义了一些隐含的对象。这些对象共有11个: 隐含对象 对象类型 说明 pageContext javax.servlet.jsp.PageContext 用于访问jsp内置对象 param java.util.Map 包含页面所有参数的名称和对应值的集合 paramValues java.util.Map 包含页面所有参数的名称和对应多个值的集合 header java.util.Map 包含每个header名和值的集合 headerValues java.util.Map 包含每个header名和可能的多个值的集合 cookie java.util.Map 包含每个cookie名和值的集合 initParam java.util.Map 包含Servlet上下文初始请求参数名和对应值的集合 pageScope java.util.Map 包含page页面范围内的属性值的集合 requestScope java.util.Map 包含request请求范围内属性值的集合 sessionScope java.util.Map 包含session绘画范围内的属性值的集合 applicationScope java.util.Map

JSP EL表达式详细介绍

。_饼干妹妹 提交于 2020-03-01 07:22:40
一、JSP EL语言定义 E L(Expression Language) 目的:为了使JSP写起来更加简单。 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算。JSP 2.0 将 EL 表达式添加为一种脚本编制元素。 二、JSP EL简介 1、语法结构 ${expression} 2、[ ]与.运算符 EL 提供“.“和“[ ]“两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用“[ ]“。例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如: ${sessionScope.user[data]}中data 是一个变量 3、变量 EL存取变量数据的方法很简单,例如:$

PHP大型Web应用入门(三)

拈花ヽ惹草 提交于 2020-03-01 07:04:14
PHP大型Web应用入门(三) 接上一篇:还是郁字符长度的限制。 早期版本的PHPWIND论坛的cache机制是很差的,虽然它很快,但是很脆弱,一旦cache文件损坏或丢失,它不会自己去创建它,而是直接导致程序无法运行,这种只能叫做临时文件,而不能叫cache。我不知道现在的PHPWIND什么样,因为我一直没兴趣去看它…… 下面的部分是mSession的实现,它只是模拟了session的存取过程,并对系统session进行了改进。它用了Hash目录。它的缺点是在程序结束部分还要Rewrite一下,把数据更新到session文件里,当然这个很容易被改进。 < ? php class BsmSession { var $ sid ; var $ sess_file ; function mSession_Start ( ) { // Special Function...session_start() global $ cookie_sess_id_varname , $ cookie_path , $ sess_liftime , $ mSession ; $ sid = $ _COOKIE [ $ cookie_sess_id_varname ] ? $ _COOKIE [ $ cookie_sess_id_varname ] : $ this - > _Gen_Sid ( ) ;

session和cookie学习

风格不统一 提交于 2020-03-01 05:25:49
1. session和cookie学习 1.1. 技术的需求 以京东未登录时添加购物车为例,在京东上购买东西(未登录)可以添加到购物车,这时候有个问题是京东如何存储没有登录的你添加的购物车物品?我们肯定想到域对象,request、ServletContext域对象 request对象有个问题:request是请求一次,产生一次,如果继续请求就会释放掉,也就是说request就有一个,就在本次请求中。这种特性显然是不行的,因为假如你添加了一个物品进入购物车,然后添加另一个物品,这是第二个请求,就会将第一个请求给覆盖掉。因此用request域对象来做购物车的添加是不可行的。 ServletContext域对象,这个也有问题,这个对象是全局的,不管谁添加购物车,都会集中在一起,在付账时会发现你会付账所有人添加的购物车,这显然是不可取的。 我们的需求是:当我们添加一个物品到购物车时,我们可以多次添加。也就是说由服务器给我们创造一个个人空间,这就引出了另一个域对象session对象 1.2. 会话技术学习 会话技术:从打开一个浏览器访问某个站点开始,到关闭这个浏览器的整个过程,成为一次会话。会话技术就是记录这次会话中客户端的状态与数据。 会话技术分为两种:cookie和session技术。cookie,数据存储到客户端本地,减少服务器存储压力,安全性不好,客户端可以清除cookie