博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入分析java Web技术内幕
阅读量:5234 次
发布时间:2019-06-14

本文共 1741 字,大约阅读时间需要 5 分钟。

B/S架构带来的两方面好处:

1.客户端使用统一的浏览器(Browser)

2.服务端(server)基于统一的HTTP协议

CDN架构图

 

 
 
       不管网络架构如何变化,但是始终有一些固定不变的原则需要遵守.

解析一:

互联网上所有资源都要用一个URL来表示,URL就是统一资源定位符,如果你要

发布一个服务或者一个资源到互联网上,让别人能够访问到,那么你首先必须要有一

个世界上独一无二的URL,不要小看这个URL,它几乎包含了整个互联网的架构精髓

解析二:

必须基于HTTP协议与服务端交互,不管你要访问的是国内的还是国外的数据,是文本

数据还是流媒体,都必须按照套路出牌,也就是都得采用统一打招呼的方式,这样人家

才会明白你要的是什么

解析三:

数据展示必须在浏览器中进行,当你获取到数据资源后,必须在浏览器上才能恢复

它的容貌               

 

                            只要满足上面的几点,一个互联网应用基本上就能正确地运转起来了

当然这里面还有好多细节,这些细节在后面进行详细讲解

 

如何发起一个请求

简单来说:就是指当你在浏览器里输入一个URL时,按回车键后这个HTTP请求就发起了

,很快你就会看到这个请求的返回结果

 

复杂:就是指能否不借助浏览器也能发起请求,这里的”不借助”有两层含义,一是指不能

自己组装一个符合HTTP协议的数据包,二是处理浏览器还有哪些方式也能简单地发起

一个HTTP请求,下面就按照这两层含义来解释如何发起一个HTTP请求.

 

如何发起一个HTTP请求和如何建立一个Socket连接区别不大,只不过outputStream.write写的

二进制字节数格式要符合HTTO协议,浏览器在建立Socket连接之前,必须根据地址栏里输入的

URL的域名DNS解析出IP地址.再根据这个IP地址和默认80端口与远程服务器建立Socket连接,

然后浏览器根据这个URL组装成一个get类型的HTTP请求头,通过outputStream.write发送到

目标服务器,服务器等待inputStream.read返回数据,最后断开这个连接

 

     当然,不同浏览器在如何使用这个已经建立好的连接,以及根据什么规则来管理连接,有各种不同

的实现方法,一句话,发起一个HTTP请求的过程就是建立一个Socket通信的过程

 

 

 

        既然发起一个HTTP连接本质上就是建立一个Socket连接,那么我们完全可以模拟浏览器来

发起HTTP请求,这很好实现.也有很多方法实现,如HttpClien就是一个开源的通过程序实现的处理

HTTP请求的工具包,当然如果你对HTTP协议的数据结构非常熟悉,你完全可以自己再实现另外一个

HttpClient,甚至可以自己写个简单的浏览器

 

下面是一个基本的HttpClient的调用示例:

     HttpClient httpClient =createHttpClient();

         PostMethod postMethod;

         String domainName=Switcher.domain;

         postMethod=new PostMethod(domainName);

         postMethod.addRequestHeader("Content-Type","application/x-www-form-urlencoded;

charset=GBK");

         for(){}

 

        for (FilterData filterData : filterDatas) {
            postMethod.addParameter("ip", filterData.ip);
            postMethod.addParameter("count", String.valueOf(filterData.count));
        }
        try {
            httpClient.executeMethod(postMethod);
            postMethod.getResponseBodyAsString();
        } catch (Exception e) {
            logger.error(e);
        }

 

常见的HTTP请求头

 

 

 

常见的HTTP响应头

 

 

 

转载于:https://www.cnblogs.com/gaoweixiao99/p/4963527.html

你可能感兴趣的文章
TL-WR703 USB不稳定/当前的总结
查看>>
[Android] 环境配置之基础开发环境(SDK/Android Studio)(转)
查看>>
ABP框架系列之二十五:(Embedded-Resource-Files-嵌入式资源文件)
查看>>
学习笔记:mysql
查看>>
前端面试送命题
查看>>
PyTorch使用总览
查看>>
redis 可视化工具下载地址
查看>>
简单批处理脚本片段
查看>>
ios 动画
查看>>
【模板】线性基
查看>>
python基础2
查看>>
No.1110_第十一次团队会议
查看>>
图解 & 深入浅出 JavaWeb:Servlet必会必知
查看>>
20155201 2016-2017-2 《Java程序设计》第八周学习总结
查看>>
django-orm操作
查看>>
VS2010 MFC中 窗口分割的实现
查看>>
POJ1753 Flip Games
查看>>
chm文件转换成html文件,解决chm文件无法使用浏览器打开的问题
查看>>
poj 2955(区间dp)
查看>>
一个非常有用的算法---统计二进制数中1的个数
查看>>