缓存

Web浏览器多年来已知在缓存页面和图片

如果对于与网站的图片每一个页面上重复出现

浏览器一般只会加载一次,将其保存在缓冲中,每次加载的时候会从缓存中重新加载

一些HTTP首部可以控制缓存

一般情况下:

一般认为使用GET通过HTTP访问的页面可以缓存,也应当缓存

使用HTTPS或者POST访问的页面通常不应缓存

HTTP首部可以对此做出调整:

Java的Web缓存

默认情况下,Java并不完成缓存

要安装URL类使用的系统级缓存

ResponseCache

public abstract CacheResponseget(URI uri, String rqstMethod, Map<String, List<String>> rqstHeaders)    throws IOException;

public abstract CacheRequest put(URI uri, URLConnection conn)  throws IOException;

put()方法返回一个CacheRequest对象,包装一个OutputStream

URL将把读取可缓存数据写入这个输出流

CacheRequest是一个抽象类 :

public abstract OutputStream getBody() throws IOException;

public abstract void abort();

子类的getOutputStream()方法应当返回一个OutputStream

指向缓存中的数据库

这个数据库与同时传入put()方法的URI对应

复制出现问题就会调用abort()方法,从缓存中删除这个请求存储的的所有数据

配置连接

URLConnection类有7个保护的实例字段

定义了客户端如何向服务器做出请求

可以通过相关方法进行设置和访问这些数据:

只能在URLConnection连接之前修改这些字段

获取方法和设置昂发定义了所有URLConnection实例的默认行为

1、protected URL url

url指定这个URLConnection连接的URL

构造函数会在创建对象时设置这个字段,此后不能再改变

可以通过getURL()方法获取这个字段的值

2、protected boolean connected

如过连接已经打开值为true

连接关闭则为false

由于创建一个新的URLConnection对象时连接尚未打开,所以初始值为fasle

3、protected boolean allowUserInteraction

是否允许用户交互,默认为false

可以读取和修改该值:

4、protected boolean doInput

URLConnection可以用于读取服务器、写入服务器,同时用于读/写服务器

可以用来读取保护类型booleab字段doInput就为true,否则会false

可以是哟个瓯宁宫方法进行访问和修改这个值

5、protected boolean doOutput

程序可以使用URLConnection将输出发回服务器

可以用于写入、保护类型boolea字段都Output就为true,否则为false

提供了公共的访问和修改方法

6、protected boolean ifModifiedSince

许多客户端会保留以前获取文档的缓存

再次获取可以再缓存中获取

再最后一次获取这个文档之后,服务器上的文档可能改变,需要判断是否有变化,唯一的办法就是询问服务器

提供公共方法进行获取和修改:

 7、protected boolean userCaches

禁用缓存,确保每次获取的请求都是最新版本

两个公共方法用于获取和修改这个字段

超时

有4个方法可以查询和修改连接的超时设置

底层的Socket等待远程服务器的响应时间

等待多长时间后会抛出SocketTimeoutException

相关方法:

配置客户端请求HTTP首部

Web服务器可以根据这个信息向不同的客户端提供不同的页面

获取和设置cookie等

每个URLConnection会在首部默认设置一些不同名-值

使用setRequestProperty()方法为HTTP首部增加字段

使用该方法指定的名和值为这个URLConnection的首部增加一个字段

这个放法只能再连接打开之前使用

如果已经打开,会抛异常

getRequestProperty()方法用于返回这个URLConnection所用的HTTP首部中的字段值

HTTP允许一个制定名字的属性有多个值

各个值之间用逗号隔开

addRequestProperty(String key, String value)

用于增加新的属性值

服务器一般会忽略无法识别的首部

HTTP确实对首部字段的名和值的内容进行一些限制

如:名不可包含空白符、值不能包含任何 换行符

转载于:https://www.cnblogs.com/Mrchengs/p/10928327.html

5、URLConnection(2)相关推荐

  1. 终端(terminal)、tty、shell、控制台(console)、bash之间的区别与联系

    1.终端(terminal) 终端(termimal)= tty(Teletypewriter, 电传打印机),作用是提供一个命令的输入输出环境,在linux下使用组合键ctrl+alt+T打开的就是 ...

  2. 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。...

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...

  3. R语言普通最小二乘(OLS)回归说明、以及构建普通最小二乘(OLS)回归需要满足的四个假设(Normality(正态性)、Independence(独立性)、Linearity(线性度)、方差齐性)

    R语言普通最小二乘(OLS)回归说明.以及构建普通最小二乘(OLS)回归需要满足的四个假设(Normality(正态性).Independence(独立性).Linearity(线性度).方差齐性) ...

  4. R语言使用lm构建线性回归模型、并将目标变量对数化实战:可视化模型预测输出与实际值对比图、可视化模型的残差、模型系数(coefficient)、模型总结信息(summary)、残差总结信息

    R语言使用lm构建线性回归模型.并将目标变量对数化(log10)实战:可视化模型预测输出与实际值对比图.可视化模型的残差.模型系数(coefficient).模型总结信息(summary).残差总结信 ...

  5. R语言应用substr函数和substring函数抽取(extract)、删除(Remove)、替换、匹配(Match)特定的字符串、并对比两个函数的异同、grepl检查子字符串是否存在于字符串中

    R语言应用substr函数和substring函数抽取(extract).删除(Remove).替换(Replace).匹配(Match)特定的字符串.并对比substr函数和substring函数在 ...

  6. R语言plot函数可视化、ggplot2可视化把图像标题(title)的部分内容着色实战:标题的部分内容配置不同的色彩、副标题(subtitle)的内容配置不同的色彩

    R语言plot函数可视化.ggplot2可视化把图像标题(title)的部分内容着色实战:标题的部分内容配置不同的色彩.副标题(subtitle)的内容配置不同的色彩 目录

  7. R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy、Precision、Recall(sensitivity)、F1、Specificity指标

    R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy.Precision.Recall(sensitivity).F1.Specificity指标 ...

  8. R语言ggplot2可视化指定图像标题(title)、副标题(subtitle)的内容、字体大小、字体类型、色彩、对齐方式等实战

    R语言ggplot2可视化指定图像标题(title).副标题(subtitle)的内容.字体大小.字体类型.色彩.对齐方式等实战 目录

  9. Python使用SQLAlchemy连接数据库并创建数据表、插入数据、删除数据、更新表、查询表(CRUD)

    Python使用SQLAlchemy连接数据库并创建数据表.插入数据.删除数据.更新表.查询表(CRUD) 目录 Python使用SQLAlchemy连接数据库并创建数据表 #SQLAlchemy # ...

最新文章

  1. IBM发布迄今最强的量子处理器,面向商业和科研用途
  2. Linux下LAMP环境的安装之编译安装过程(五)
  3. 一文了解 Apache Flink 核心技术
  4. pycharm安装pyqt5失败_PyQt5安装与Pycharm集成配置开发环境
  5. Mingw下g++编译执行顺序错误
  6. Android Studio之导入安卓项目gradle编译出现问题分析日志思路
  7. Mybatis源码之与Spring集成包
  8. linux ps ax tl,Linux常用指令 - osc_wa6fkyf0的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. 多语言界面 Web 站点的几个 Tip
  10. centos 利用yum更新git
  11. Keil 5 解锁被锁定的文件 修改其中的代码 STM32
  12. Ubuntu(Linux)腾达U12网卡驱动的离线安装
  13. <笠翁对韵>全文及译文(上卷)
  14. Excel自动批量发邮件
  15. python--如何进行去重
  16. 计算机对教育的重要性 英语作文,关于教育的英语作文 教育重要性英语作文!
  17. ldconfig是个什么东东
  18. Java Logging之JUL系列——Logger Hierarchy
  19. python四级是什么水平_四级能过的水平大概什么水平?
  20. mysql写周报_mysql 数据分析如何实现日报、周报、月报和年报?

热门文章

  1. Spring -Bean的作用域
  2. Discuz! Ucenter API for JAVA jar包和测试代码
  3. 数据挖掘学习06 - 《数据挖掘导论》导读
  4. Oracle UNDO表空间损坏时的处理办法
  5. 赋能数据智慧,InfoBeat让业务跃动起来
  6. 同源策略——浏览器安全卫士
  7. Android中FTP服务器、客户端搭建以及SwiFTP、ftp4j介绍
  8. SQL SERVER 2008 中分页方法
  9. [转]工程师进阶之路(三)
  10. 安装nagios_grapher,有图有真相。