当前位置: 首页 > news >正文

听说你叫Java(二)–Servlet请求

图片描述

Servlet客户端HTTP请求

当浏览器发送请求到服务器的时候,这个请求是不能被直接读取的,请求中包含了非常多的信息,而需要被读取的,只是请求中的一部分。

如图

图片描述

我们可以看一下请求头有哪些常用的信息,以及它们的作用是什么

Accept-Charset

这个头信息告诉服务器处理表单数据所需要使用的字符集。

我们知道,在<form>中有一个属性叫做accept-charset,就是用来设置请求头中Accept-Charset属性的值的。

常用的值有ISO-8859-1UTF-8

Connection

我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接(HTTP协议为无连接的协议)

当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服 务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。

Cookie

Cookie大家应该都非常熟悉了,这个信息就是用来存放Cookie,并传给服务器的。

If-Modified-Since&If-Unmodified-Since

这两个头信息的值都是Date格式,用来告诉服务器所需要的文件的日期范围。

如果服务器上没有更新或者更旧的文件,就会返回一个304的状态码,表示文件并没有改动,可以直接从缓存中加载。

User-Agent

这个信息记录了发出请求的客户端的信息,包含了浏览器类型、版本等信息。通过这个信息可以做浏览器类型判断。

Servlet服务器HTTP响应

当客户端发送了一个请求给服务器,服务器也会返回一个响应给客户端,同样的,这个响应中也包含了除数据之外的很多信息。

如图

图片描述

Control-Allow-Origin

Access-Control-Allow-Origin是HTML5中定义的一种解决资源跨域的策略。

如果设置为我们自己当前页面的域名时,浏览器才会允许我们拿到这个响应的数据,并进行下一步的处理。当设置为*的时候,表示该资源谁都可以用。

Content-Type

这个头信息告诉浏览器这个响应的数据格式及编码类型。

常用值为application/json;charset=utf-8

Server

通过服务器的响应头,我们还能知道服务器的类型。

Set-Cookie

Web服务器通过传送HTTP 包头中的Set-Cookie 消息把一个cookie 发送到用户的浏览器中。

完整的Set-cookie格式如下

Set-Cookie:customer=huangxp; path=/foo; domain=.ibm.com; 
expires= Wednesday, 19-OCT-05 23:12:40 GMT; [secure]

path=/foo 控制哪些访问能够触发cookie 的发送。如果没有指定path,cookie会在所有对此站点的HTTP传送时发送。

如果path=/directory,只有访问/directory 下面的网页时,cookie才被发送。

domain=.ibm.com 指定cookie被发送到哪台计算机上。

正常情况下,cookie只被送回最初向用户发送cookie的计算机。如果domain 被设为空,domain就被设置为和提供cookie 的Web 服务器相同。如果domain不为空,并且它的值又和提供cookie的Web服务器域名不符,这个Cookie将被忽略。

expires= Wednesday, 19-OCT-05 23:12:40 GMT 指定cookie 失效的时间。如果没有指定失效时间,这个cookie 就不会被写入计算机的硬盘上,并且只持续到这次会话结束。

secure 如果secure 这个词被作为Set-Cookie 头的一部分,那么cookie 只能通过安全通道传输(目前即SSL通道)。否则,浏览器将忽略此Cookie。

最后

这么多的属性留给我们去使用,去交互数据,它们就像一个个的座位,Servlet的HTTP请求就像一辆在客户端和服务器之间往返的大巴。

一个复杂的Web应用正是因为这些大巴组成的交通网才能畅通无阻。

下一章——大巴司机HttpServletResponseHttpServletRequest

图片描述

相关文章:

  • BZOJ 3172 Tjoi2013 单词 后缀数组
  • C#基础_MD5
  • Protobuf3 语法指南
  • Oracle数据库服务器IO高的分析方案和案例探讨
  • yii2清空模态框表单的数据,每次点击开始之前让数据清空
  • 依赖类型语言Idris发布1.0版本
  • asp.net请求处理过程
  • 查看符号
  • 教主泡嫦娥[有趣的dp状态设计]
  • Android popupwindow 演示样例程序一
  • 我的朗科运维第七课
  • 正则表达式 re.findall 用法
  • Python中文件操作
  • 云计算与虚拟化的区别
  • JMM-java内存模型
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Angular6错误 Service: No provider for Renderer2
  • canvas 五子棋游戏
  • Flannel解读
  • golang中接口赋值与方法集
  • Java反射-动态类加载和重新加载
  • PHP的类修饰符与访问修饰符
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Python学习之路16-使用API
  • redis学习笔记(三):列表、集合、有序集合
  • Selenium实战教程系列(二)---元素定位
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Spring Cloud Feign的两种使用姿势
  • zookeeper系列(七)实战分布式命名服务
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 解决iview多表头动态更改列元素发生的错误
  • 区块链分支循环
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 移动端唤起键盘时取消position:fixed定位
  • 智能网联汽车信息安全
  • 带你开发类似Pokemon Go的AR游戏
  • #if #elif #endif
  • #微信小程序:微信小程序常见的配置传旨
  • (06)Hive——正则表达式
  • (1)Nginx简介和安装教程
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Note)C++中的继承方式
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .bashrc在哪里,alias妙用
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NetCore 如何动态路由
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题