Win10 IIS Web服务器安装与配置

安装 IIS

  • 打开 程序和功能,选择左边 启用或关闭 Windows 功能,建议根据下图勾选,确定后等待安装完成

%title插图%num

打开 IIS

  • 直接使用 Cortana 搜索管理工具,打开选择 Internet information Services(IIS)管理器

%title插图%num

点击左边栏,在 计算机 名下,网站 文件夹下已经默认存在一个网站

%title插图%num

配置 IIS

  • 选择默认的站点,点击右边高级设置,可设置网站的目录

默认在 C盘已经存在一个目录

  • 点击右边的 绑定,可修改网站的端口等信息

%title插图%num

其中:
IP地址 —— 一般填写本机的IP地址
端口 —— 任意端口都可用,不过需要注意不能被别的端口占用,默认为 80
主机名 —— 这里填写购买的域名,没有则使用上面 IP地址访问

 

测试验证

  • 选择右侧 启动,然后点击 浏览xx,浏览器中出现配置好的网页则成功

%title插图%num

图为 Win10 自带 IIS 默认网站样式,目录位于 C盘inetpub文件夹中

这里没有设置 IP地址,直接访问 http://localhost/ 直接进入,默认端口80,就相当于`localhost`
设置 IP地址后,则需要使用 IP地址才可访问,例如:

– IP地址:192.168.1.1,端口:4000
– 浏览器地址则为:http://192.168.1.1:4000

一般不能正常访问,原因都是出在「安装 IIS」处,应回去好好查看安装的功能

android手机访问本地电脑Web服务器

1.android网络编程知识复习
Android的网络编程分为2种:基于http协议的,和基于socket的。Socket一般应用于社交聊天的应用中,这里关联的比较少就不讲了,我们来说说基于HTTP协议的编程。

基本原理 : 它的工作原理特别的简单,就是客户端向服务器发出一条HTTP 请求,服务器收到请求之后会返回一些数据给客户端,然后客户端再对这些数据进行解析和处理就可以了。

HTTP请求:HttpURLConnection 和 HttpClient

服务器端返回客户端的内容:
1)以HTML代码的形式返回。
2)以XML字符串的形式返回。返回的数据需要通过XML解析(SAX、DOM,Pull,等)器进行解析。
3)以json对象的方式返回。

2. HTTP请求网络数据
HttpClient在API等级22:Android 5.1 Lollipop开始被google废弃

HttpURLConnection 请求网络:

private void getXMLWithHttpURLConnection(){
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection urlConnection = null;
try {
Log.e(TAG,”开始请求网络数据…”);
URL url = new URL(“http://192.168.31.139/people.xml”);
//利用HttpURLConnection对象从网络中请求网络数据
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod(“GET”); //设置请求方式GET,POST
//设置连接超时,如果网络不好,Android系统在超过默认时间会收回资源中断操作
urlConnection.setConnectTimeout(8000);
//connection.setReadTimeout(5000); //设置读取超时
if (urlConnection.getResponseCode() != 200) {
//对响应码进行判断,200为成功
throw new RuntimeException(“请求url失败”);
}
//从Internet获取网页,发送请求,将网页以流的形式读回来
InputStream inputStream = urlConnection.getInputStream();
////对输入流进行读取
BufferedReader bufferedReader =
new BufferedReader(new InputStreamReader(inputStream));
String line;
StringBuilder stringBuilder = new StringBuilder();
while ((line = bufferedReader.readLine())!=null){
stringBuilder.append(line);
}
//解析xml,下一节就讲
parseXMLWithPull(stringBuilder.toString());

} catch (Exception e) {
e.printStackTrace();
} finally {
Log.e(TAG,”关闭请求连接。”);
if (urlConnection!=null) urlConnection.disconnect();
}
}
}).start();
}

3.解析XML数据
3.1 PULL解析:

在Android上使用XmlPullParser是一中高效率和易维护解析XML的方法 。Android已经在历史上有两个实现这个接口实现类:

(1)KXmlParser,通过XmlPullParserFactory.newPullParser();
(2)ExpatPullParser,通过Xml.newPullParser();

/**
* PULL 解析 xml
* @param xmlString
*/
private void parseXMLWithPull(String xmlString){
try {
Log.d(TAG,”>>> 开始解析XML…”);
//获取XmlPullParser对象
//*种获取XmlPullParser对象的方式
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
//第二种获取XmlPullParser对象的方式
//XmlPullParser parser=Xml.newPullParser();

parser.setInput(new StringReader(xmlString));
int eventType = parser.getEventType();
String name =”姓名”;
String age =”年龄”;
String sex =”性别”;
while (eventType !=XmlPullParser.END_DOCUMENT ){
String nodeName = parser.getName();
switch (eventType){
//开始读取XML文档 ,对应people节点
case XmlPullParser.START_DOCUMENT:
break;
// 开始解析某个结点,对应name ,age,sex标签
case XmlPullParser.START_TAG:
if (“name”.equals(nodeName)) name = parser.nextText();
if (“age”.equals(nodeName)) age = parser.nextText();
if (“sex”.equals(nodeName)) sex = parser.nextText();
break;
// 完成解析某个结点,对应person节点
case XmlPullParser.END_TAG:
if (“person”.equals(nodeName)){
Log.d(TAG,”–name is:” + name);
Log.d(TAG,”–age is:” + age);
Log.d(TAG,”–sex is:” + sex);
}
break;
default:
break;
}
eventType = parser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
}

3.2 建立本地web服务器:

讲了这么多, 到这里才跟标题挂上钩,我也是醉了。
第2节HTTP请求网络数据中的链接 http://192.168.31.139/people.xml 就是在本地建立的一个服务器里的文件,192.168.31.139就是本人的ip地址,people.xml就是我新建的xml 文件。步骤如下:

1.在http://rj.baidu.com/soft/detail/14824.html?ald 下载 Apache HTTP Server软件,下载完成后双击下载文件httpd-2.2.25-win32-x86-no_ssl.msi安装,
%title插图%num

2.在安装路径…\Apache2.2\htdocs新建people.xml文件
3.在浏览器中输入http://127.0.0.1/people.xml,即可访问到我们刚刚建立的people.xml文件内容

%title插图%num

4.值得注意的问题
在手机上访问本地电脑web服务器,设置”localhost”或者”127.0.0.1”是不行的,在模拟器上将 ip设置为”10.0.2.2”是可以访问的,但到真机上此方法行不通。

真机连接方法:1.本地电脑搭建的服务器与手机共同连接到一个无线网络下。
2.服务器端需要关闭防火墙。

%title插图%num

Web服务器工作原理详解

概述:Web服务器概念较为广泛,我们*常说的Web服务器指的是网站服务器,它是建立在Internet之上并且驻留在某种计算机上的程序。Web服务器可以向Web客户端(如浏览器)提供文档或其他服务,只要是遵循HTTP协议而设计的网络应用程序都可以是Web客户端。

Web服务器和HTTP服务器可以说是同一个东西,当然非得细分的话,HTTP服务器是建立在HTTP协议之上的提供文档浏览的服务器,更多的是提供静态的文件。而Web服务器涵盖了HTTP服务器(这一点可以自行百度百科), Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。
Web服务器 约等于 HTTP服务器 + 其他服务

目前所熟知的Web服务器有很多,其*主流的是 Apache, Nginx, IIS
各大Web服务器的实现细节都不同,是为了某种情形而设计开发的。但是它们的基础工作原理是相同的,这也是本次基础篇所讲解的内容。

一、Web服务器工作原理图解
%title插图%num

首先我们暂时不考虑HTTP协议的各种请求方式,我们先跟着**(Web服务器工作原理总体描述01)这张图,将一次Web服务的工作流程过一遍,我们假设以浏览器作为客户端
(1) 用户做出了一个操作,可以是填写网址敲回车,可以是点击链接,可以是点击按键等,接着浏览器获取了该事件。
(2) 浏览器与对端服务程序建立TCP连接。
(3) 浏览器将用户的事件按照HTTP协议格式**打包成一个数据包,其实质就是在待发送缓冲区中的一段有着HTTP协议格式的字节流。
(4) 浏览器确认对端可写,并将该数据包推入Internet,该包经过网络*终递交到对端服务程序。
(5) 服务端程序拿到该数据包后,同样以HTTP协议格式解包,然后解析客户端的意图。
(6) 得知客户端意图后,进行分类处理,或是提供某种文件、或是处理数据。
(7) 将结果装入缓冲区,或是HTML文件、或是一张图片等。
(8) 按照HTTP协议格式将(7)中的数据打包
(9) 服务器确认对端可写,并将该数据包推入Internet,该包经过网络*终递交到客户端。
(10) 浏览器拿到包后,以HTTP协议格式解包,然后解析数据,假设是HTML文件。
(11) 浏览器将HTML文件展示在页面
以上为Web服务器工作基本原理。其实不难发现,这仅仅只是一个简单的网络通信。我们应该深信,作为一个服务器,其根本的工作无非有三个

接收数据 2. 发送数据 3. 数据处理
而Web服务器的本质就是 接收数据 ⇒ HTTP解析 ⇒ 逻辑处理 ⇒ HTTP封包 ⇒ 发送数据
高级的服务器无非就是将这三个部分更加细致的设计了。
二、Web服务器之提供静态文件工作原理图解
Web服务器*主要的功能是提供静态的文件。日常的上网浏览大多是网页浏览,少数时候才会有一些数据的提交操作。因此,我们结合上一张图示来重点讲解在GET请求下的Web服务器工作原理。

%title插图%num

其他流程基本不变,着重在于红色与蓝色部分。
(1) 当用户点击一个网页链接或浏览器加载一些资源(css,jpg …)时产生。
(6) 服务程序解包后,确定其为GET请求,并且是对该服务器上的某一资源的请求。首先服务程序会去确认该路径是否存在,再确定该路径的文件是否可以获取。
(7-1) 如果请求的路径有误,或者该资源不能被用户获取,则返回错误提示页面。很多服务器的错误页面只有404,更专业的应该是将错误分类并返回对应的错误代码页面。
(7-2) 如果该路径合法且文件可以被获取,那么服务程序将根据该文件类型进行不同的装载过程,记录其类型作为(8)中HTTP协议中对应的返回类型,并加入响应头。

假设以点击一个页面链接为例,浏览器首先将HTML文件请求过来,再以同样的流程对HTML文件中包含的资源文件路径进行依次请求。

%title插图%num

三、Web服务器之数据提交工作原理图解
仅仅只是网页的浏览并不能满足所有人的需求,客户端与服务器应当是有数据交互的。
即使单方面的资源请求任然是网络的主力军。
我们应该清楚的知道,数据提交对于用户来说有什么作用。
(1) 资源上传 (2) 登陆验证 (3) API接口调用 (4) 远程指令等
数据提交使得用户的操作性有了质的飞跃,它使得HTTP短连接获取静态文件的方式提升到了动态交互的层次上。该性质也催化出各式各样的编程语言、框架。例如PHP,JavaWeb。
如果你留意目前主流的那些大型服务器,你会发现再高级再牛逼的东西实际是也是*基础的东西建造的。那么我们还可以顺便学习一下*古老的动态技术CGI
%title插图%num

其他流程基本不变,着重在于红色与蓝色部分。
(1) 用户提交数据,假设用户点击一个按键提交填好的信息。在(3)中将以POST格式写入,并填入提交至服务端的可执行程序的路径。
(6) 服务端将参数与该CGI绑定,复制进程,用管道传递参数和接收结果
(7) 子进程执行CGI,接收(6)父进程传来的参数,运算完成返回结果。
*后父进程将结果装入静态模板文件,放入缓冲区

四、动态技术
我们得明白,Web服务器是以短连接为主,并且获取的数据到达浏览器的那一刻一定是静态的不变的。那么所谓动态实际是指两种情况

服务端产生:
(1) 用户POST提交数据到某个程序,程序根据该数据作为参数运行,得出结果并装入静态的模板页面中,返回该静态页面。但对于用户来说,同一个页面,做了一个操作后数据不一样了。好了,这就是动态页面。(CGI原理)
(2) PHP的原理是,用户GET请求一个php后缀的文件,服务器先执行该php后缀文件中的PHP代码,将结果填入代码的位置,再返回。当然也可以提交数据参与运算再返回。
客户端产生:
(1) 用户GET请求一个JavaScript文件,服务端不做任何运算返回该静态文件。浏览器收到该JS文件,在本地执行并更新页面。
(2) 用户POST提交数据到服务端,服务端根据该提交的数据指令返回静态文件,浏览器收到后执行并更新。

 

基于HTTP实现的小型web服务器

主要流程为:服务器获得请求–>响应并处理请求–>返回结果。

完整的HTTP过渡到TCP实现客户端与服务器的交互过程
1.当客户端执行网络请求的时候,从url中解析出url的主机名,并将主机地址转换成ip
2.从url解析出服务器的所用端口号
3.客户端用TCP连接服务器
4.连接成功后 获取输出流,将数据以报文的形式传递给服务器
5.当服务器接收到数据之后,进行判断和解析码,并回应一条响应报文
6.客户端从输入流中获取报文,然后进行解析
7.关闭网络连接

HTTP的特点

1、支持客户端/服务器的模式
2、简单快捷 客户向服务器发送请求服务时,只需要传送请求方法和路径,每种方法规定了客户与服务器联系的类型的不同,由于HTTP协议简单,使得HTTP服务器的规模小,因此通信速度很快.
3、灵活  允许传送各种类型的数据,数据类型用Content-Type标记
4、无连接:限制每次连接只处理一个请求,服务器处理完客户的请求,收到客户的应答后,随即断开连接,这种方式节省传输时间,请求应答机制会断开
5、无状态  HTTP协议是无状态的协议,即对事务处理没有记忆功能

关于URL

即统一资源定位符,每个网页都对应一个URL地址(俗称网址),具有全球唯一性。它包含的信息指出文件的位置以及浏览器应该怎么处理它。 一个完整的URL包括协议类型、主机类型、路径和文件名。
http协议的URL格式: http: //host[:port][abs_path] ,http表示使用http协议来进行资源定位;host是主机域名;port是端口号,一般有默认的;abs_path代表资源的路径。
这里我主要介绍项目中涉及的URL的两种格式—URL带参数和不带参数的。
%title插图%num

HTTP的请求与响应格式

%title插图%num

响应报头中的状态码和状态码描述,例如:当请求的资源不存在时,会收到“404 NotFound”的页面,404就是状态码,“NotFound”就是状态码描述,即请求的文件不存在。

1.实现支持GET和POST方法的小型http服务器
GET方法:如果GET方法只是简单的请求一份资源,而不传递参数的话则由服务器直接将资源返回即可。如果GET方法的url中带有参数的话,则就要使用CGI模式进行处理。
POST方法:POST方法要使用CGI模式进行处理,POST的参数在消息中文中出现。
使用GET方法使用的是带参数的url,传递的参数会使用?连接在资源后面POST方法使用的是不带参数的url 它的参数是通过http请求正文传递给服务器的,http的请求和响应模式

响应报头中的状态码和状态码描述,举个例子,当请求的资源不存在的时,会收到”404 NotFound”的页面,404就是状态码,

“NotFound”就是状态码描述,既请求的文件不存在

状态码表示响应类型

1×× 保留

2×× 表示请求成功地接收

3×× 为完成请求客户需进一步细化请求

4×× 客户错误

5×× 服务器错误

响应头的信息包括:服务程序名,通知客户请求的URL需要认证,请求的资源何时能使用

 

HTTP服务器实现框架

1.面向链接:http协议是基于TCP通信协议,因此实现web服务器的*步至少要能实现两个主机不同进程之间的TCP通信,并且需要解决高并发问题所以这里推荐使用多线程服务器来构建,每次创建出来一个新线程出来的时候将线程分离,然后让这个新线程去处理这个请求.
2.分析出请求行: 当服务器接收到请求后,首先知道的是HTTP服务器版本号,和请求方法。web服务器是要支持cgi模式: 请求的方法不同,cgi可能也不同,我们实现的知识比较简单单的处理GET和POST方法
3.判断cgi模式
//    1)当我们判断出来是GET请求时候,并且url中没有参数的话,就用非CGI模式,非CGI模式处理//起来比较简单,首先解析出来请求路径,判断是不是合法资源,如果是就直接返回这个资源。
//    2)当是CGI模式处理请求的时候,我们要fork一个子进程,对子进程exec替换CGI程序,这个
//过程中使用pipe进行父子进程之间的通信。所有需要的参数在exec之前,都将这些参数导出为环境变//量,就算exec的话,子进程还是能够通过环境变量获取所需的参数。
4.响应客户端:此时我们已经知道了方法以及是否为cgi模式,然后开始读取URL,这里有一个细节非cgi模式 请求参数会跟在url当中,如果cgi模式的话,参数在消息正文中,然后我们读取到路径,判断路径当中资源是否存在,如果存在判断这个资源是一个目录,普通文件还是一个可执行程序

这里分情况分析
1)如果是cgi模式,直接进入cgi内部运行;只要是POST方法就需要支持cgi,直接进入cgi函数内部运行.
2)如果是非cgi模式时一定是GET方法并且没有参数,此时进入wwwroot()函数内部即可,该函数会将所请求的资源以html的格式返回给浏览器.

 

接下来是解释运行cgi模式,首先服务器要从浏览器读取参数,然后创建出来一个子进程去执行cgi部分的可执行资源,父进程通过环境变量的方式传递给子进程,子进程运行完成之后呢,将结果交给父进程,父进程再将数据输出给浏览器. 所以父进程在这个例子当中就向是一个中介,只进行参数和结果的转交实际上并不会执行任何资源,因此将子进程的输入输出文件描述符重定向,就可以让子进程直接与浏览器”联系”.

 

%title插图%num

父进程做的事情

1.创建两个管道,并关闭相应的文件描述符
2.POST方法:继续读取数据,直到读完POST的参数部分GET方法:直接从子进程读取结果
3.将数据和方法全部交给子进程后等待子进程的结果
子进程做的事情

1.关闭管道适当的文件描述符
2.对标准输入输出进行重定向
3.通过环境变量传递参数
4.进行exec程序替换

一次完整的http请求的流程
%title插图%num

项目文件

%title插图%num

目录:
python:爬取小说和招聘信息的代码

sql_connect:存放mysql需要的lib库   连接mysql程序文件
wwwroot:web服务器工作的根目录,包含各种资源页面(例如默认的index.html页面,差错处理的404页面),以及执行cgi的可执行程序

文件:

makefile:编译整个项目
httpd.h:服务器的方法声明
httpd.c:方法实现
main.c:服务器的主逻辑

 

数据库中的操作
没有索引的时候会进行整个表的扫描
添加索引 索引会形成一颗二叉树  利用二分查找的方法。

遇到的问题:
1.运行cgi后不能显示在页面上,便尝试着写一个简单的CGI程序看自己的CGI是否真的能跑完,结果CGI没有问题,后来尝试用telnet工具模拟一次http,看看是否真的收到了网页回复,后来分析结果,对比之后发现返回的东西不能显示,之后给html加了一些p标签,便可以显示出来。
2. 经常会出现类似于:undefined reference to `sql_connecter::~sql_connecter()’的问题,文件编译的路径不对。
3.调用数据库的数据显示到html文件中出现乱码的问题,*初以为自己编码格式有问题,后来发现是数据库编码格式和浏览器的编码格式不一样,数据库使用utf8编码方式,浏览器是GB2312,后来浏览器使用utf8编码格式,能够正常显示。

4.代码中会需要int *和 void*的转换,用到C++强制转换形如  int*  data = reinterpret_cast<int*>(arg);

5.本地环回测试ok,Linux下的浏览器测试也可以,但不能接外部的浏览器访问(没有设置桥接模式) 在外部浏览器测试的话千万别忘记关闭防火墙

6.运行程序时会提醒挺行下载页面,因为在响应报头有问题中。而浏览器对于不能识别或解析的实体,都会提醒用户下载。

常见Web服务器简介

Web服务器也称为WWW (WORLD WIDE WEB)服务器、HTTP服务器,其主要功能是提供网上信息浏览服务。

Unix和Linux平台下的常用Web服务器有Apache,Nginx,Lighttpd,Tomcat,IBM WebSphere、BEA Weblogic等,其中应用*广泛的是Apache。而WindowsNT/2000/2003平台下*常用的服务器则是微软公司的IIS C Internet Information Server )。

下面对常见的WEB服务器进行简单介绍,后续对其中一些主要的服务器进行实际环境搭建。

1.  Apache服务器

%title插图%num

Apache仍然是世界上用得*多的Web服务器,市场占有率达60%左右。它源于NCSAhttpd服务器,在NCSA WWW服务器项目停止后,那些使用NCSA WWW服务器的人们开始交换用于此服务器的补丁,这也是Apache名称的由来(pache补丁)。世界上很多著名的网站都是Apache的用户,它的优势主要在于源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix, Windows. Linux系统平台上),以及其可移植性等。Apache的模块支持非常丰富,虽在速度、性能上不及其他轻量级W eb服务器,但是属于重量级产品,所消耗的内存也比其他Web服务器要高。

官方网站:http://httpd.apache.org/

2. Nginx服务器

%title插图%num

罗斯访问量第二的 Rambler.ru 站点开发的,*个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,是目前市面上唯一能和kangleweb server比拼的web server,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、腾讯等。

官方网站:http://nginx.org/

3.  Tomcat服务器

%title插图%num

Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的W eb应用软件容器。Tomcat Server是根据servlet和JSP规范执行的,因此也可以说Tomcat Server实行了Apache-Jakarta规范,且比*大多数商业应用软件服务器要好。但是,Tomcat对静态文件、高并发的处理比较弱。

官方网站:http://tomcat.apache.org

4.  Lighttpd服务器

%title插图%num

Lighttpd是由一个德国人写的开源软件,其目标是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的Web  Server环境。它具有内存开销低、CPU占用率低、效能好,以及模块丰富等特点。支持FastCGI、CGI. Auth、输出压缩(output compress )、URL重写及Alias等重要功能。Lighttpd跟Nginx一样,也是一款轻量级Web服务器,是Nginx的竞争对手之一。

官方网站:http://www.lighttpd.net/

5.  Microsoft IIS 服务器

%title插图%num

Microsoft的W eb服务器产品为Internet Information Server C IIS ) .  IIS是允许在公共Intranet或Internet上发布信息的Web服务器。它是目前*流行的Web服务器产品,很多著名的网站都是建立在IIS平台上的。IIS提供了一个图形界面的管理工具,称为Internet服务管理器,可用于监视配置和控制Internet服务。

IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI ( Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。

IIS只能运行在Microsoft Windows平台、LinuxNnix平台上,因此须要购买商业的Windows Server操作系统。

演示网站:http://www.yangyufei.com

6.  IBM WebSphere服务器

%title插图%num

WebSphere Application Server是一种T}}能完善、开放的Web应用程序服务器,是IBM电子商务计}}J的核心部分,它基于Java的应用环境,建立、部署和管理Internet和Intranet Web应用程序。这一整套产品目前己进行了扩展,以适应Web应用程序服务器的需要,范围从简单到高级,直到企业级。据IBM官方网站介绍,有10 000多个企业正在使用IBM WebSphere,相对于其他流行的Web服务器而言,应用的数量很少。

官方网站:http://www.ibm.com/developerworks/cn/websphere

7.  Oracle Weblogic服务器

%title插图%num

WebLogic是美商Oracle的主要产品之一,系并购得来。是商业市场上主要的Java(J2EE)应用服务器软件(applicationserver)之一,是世界上*个成功商业化的J2EE应用服务器, 已推出到12c(12.1.1) 版。而此产品也延伸出WebLogic Portal, WebLogic Integration等企业用的中间件(但当下Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业包),以及OEPE(Oracle Enterprise Pack for Eclipse)开发工具。

WebLogic*早由 WebLogic Inc. 开发,后并入BEA 公司,*终BEA公司又并入 Oracle公司。

webserver是用来构建网站的必要软件。可用来解析、发布网页等功能,它是用纯java开发的。weblogic本来不是由bea发明的,是它从别人手中买过来,然后再加工扩展。BEA已经被Oracle收购,目前Weblogic*新版本为Oracle Weblogic Server 12c(12.1.1)。其他J2EE Application Server还有IBM的websphere、Sun(Sun公司已经被ORACLE公司收购)的Glassfish、resin等。Apache Tomcat也是常用的Servlet/JSP Container。国内厂商生产的还有像中创软件的Loong AS 9.0(达四级等保,全面支持国产)、东方通的Tongweb、金蝶Apusic应用服务器等。

BEA WebLogicServer拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性。

与BEA WebLogic Commerce ServerTM配合使用,BEA WebLogic Server可为部署适应性个性化电子商务应用系统提供完善的解决方案。

WebLogic长期以来一直被认为是市场上*好的J2EE工具之一。像数据库或邮件服务器一样,WebLogic Server 对于客户是不可见的,为连接在它上面的客户提供服务。WebLogic *常用的使用方式是为在internet 或intranet 上的Web 服务提供安全、数据驱动的应用程序。WebLogic对J2EE 架构的支持:WebLogic Server 提供了对SUN J2EE 架构的支持。SUN公司的J2EE 架构是为企业级提供的一种支持分布式应用的整体框架。为集成后端系统,如ERP系统,CRM系统,以及为实现企业级计算提供了一个简易的,开放的标准。

官方网站:http://www.oracle.com/us/corporate/acquisitions/bea/index.html

8.  Boa服务器

%title插图%num

BOA 服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。由于它是一个单任务的Web服务器,只能一次完成用户的请求,而不会fork出新的进程来处理并发的链接请求。但是Boa支持Cgi,能够为Cgi程序fork出一个进程来执行相应的客户请求。

官方网站:http://www.boa.org/

9.  W3C  Jigsaw服务器

Jigsaw是W3C推出的开源的Web服务器平台,使用Java语言编写,可以安装在有Java运行环境的系统上。做为W3C(World WideWeb Consortium)开发的服务器产品,其作用主要是对新技术的实现做一个示例,而非全功能的商业服务器产品。

不过就Jigsaw 2.0版本而言,它的功能还是超过了目前Web服务器的平均水平。*重要的是,它体现了未来HTTP协议和基于对象的Web服务器技术的发展。如果你希望你的平台支持所有下一代技术,Jigsaw是一个好的选择。

官方网站:http://www.w3.org/Jigsaw/

服务器定义、服务器特点、服务器分类、服务器软件

服务器定义
广义:专门给其他机器提供服务的计算机系统
狭义:一台高性能的计算机,通过网络提供外部计算机一些业务服务

(个人PC内存大概8G 16G 服务器内存128G起步)

服务器特点

可用性
可靠性、持续性。服务器一般需要7*24H不间断工作(如Web网站)
可利用性
服务器要为多用户提供服务,因此需要较高的连接和运算性能(性能要高)
可扩展性
服务器需要具备可扩展空间和冗余件(可以增加内存、硬盘等)
可管理性
保证在设备不停机的情况下修复服务器故障(一般服务器有两个电源,坏了一个还有一个)
服务器还需要具备如双机备份、系统备份、在线诊断、故障预警等功能。
服务器分类

按应用层次划分:
入门级服务器:小型企业、小部门需求。主要用于完成文件、打印服务等
工作组服务器:中型部门等、不复杂的业务,比如没有大型数据库需要管理。
部门级服务器:能够承载中大型数据库、网站等,具有较高的可用性、可靠性、可扩展性、可管理性。
企业级服务器:企业级服务器主要应用于需要处理大量数据,对处理速度和可靠性要求*高的大型企业和重要行业(如金融、交通、通信等行业)。
按体系架构划分:
非X86服务器:包括大型机、小型机和Unix服务器。使用RISC或EPIC处理器
X86服务器:即CISC架构服务器,也就是我们常说的PC服务器。
复杂指令集和简单指令集:

X86架构:

是微处理器执行的计算机语言指令集(复杂指令集),指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。

RISC指令集是以后高性能CPU的发展方向。它与传统的CISC(复杂指令集)相对。相比而言,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。使用RISC指令集的体系结构主要有ARM、MIPS。

按用途划分
通用服务器:没有为某种服务专门设计的,可以提供各种服务功能的服务器。
功能服务器(专用服务器):专门为某一种或某几种功能专门设计的服务器,可以实现“即插即用”,无需专业人员进行专门的软硬件配置。
按外形划分
可以分为:

机架式服务器
塔式服务器
刀片式服务器
机柜式服务器
钉钉(连续两天一天扩容一万台)、Welink
机架式服务器

特点:

现阶段销售数量*多的服务器
机箱尺寸比较小
在机柜中可以同时放置多台
单位:U

机架式服务器高度的计量方式

1U=1.75inch=44.45mm

华为常见的机架服务器有:RH1288H、RH2288H、RH5288、RH2488/2488H、RH5885H等

特点:

早期的服务器形式
较大的机箱尺寸
内部扩展能力较强
占用面积大
现在基本已经淘汰
刀片式服务器
刀片服务器是指在标准高度的机架式机箱内可插装多个卡式的服务器单元,是一种实现HAHD(High Availability High Density,高可用高密度)的低成本服务器平台,为特殊应用行业和高密度计算环境专门设计。刀片服务器就像“刀片”一样,每一块“刀片”实际上就是一块系统主板。

优点:

超高密度服务器
节省能源
集中化管理
快速部署
缺点:

前期成本高(前期部署成本高、需要特殊的供电需求等)
无论刀片服务器内置的冗余是多少,都存在所有刀片服务器宕机和故障的可能性。
对于拥有一个或两个刀片中心的企业用户来说,购买备用的部件可能很不划算(如备用机箱等)。
机柜式服务器
在一些高端企业服务器中由于内部结构复杂,设备较多,有的还具有许多不同的设备单元或者几个服务器都放在一个机柜中,这样的服务器就是机柜式服务器。

机柜式服务器一般为大型企业使用,如云服务提供商(华为云、阿里云等)。一般一次部署就是很多台。如:疫情期间,大家都线上办公和网课,钉钉曾连续两天连续扩容一万台服务器。

服务器软件
服务器软件工作在客户端-服务器(C/S)或浏览器-服务器(B/S)的方式,有很多形式的服务器,常用的包括:

文件服务器(File Server)
数据库服务器(Database Server)
邮件服务器(Mail Server)
网页服务器(Web Server)
FTP服务器(FTP Server)
域名服务器(DNS Server)
时间同步服务器(NTP Server)
代理服务器(Proxy Server)

C/S:

服务器-客户机,即Client-Server(C/S)结构。C/S结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。

B/S:

B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端*主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。

文件服务器

%title插图%num

文件服务器是一台具有特殊功能的计算机,其主要目的是向客户机提供文件共享服务。文件服务器可以是一台能够运行其他应用的通用服务器,也可以是一台专门提供文件服务的功能服务器。

数据库服务器
运行在局域网中的一台或多台计算机和数据库管理系统软件共同构成了数据库服务器,为客户应用提供服务,这些服务是查询、更新、事务管理、索引、高速缓存、查询优化、安全及多用户存取控制等。

%title插图%num

数据库服务器建立在数据库系统基础上,具有数据库系统的特性,且有其独特的—面。主要功能如下:

数据库管理功能,包括系统配置与管理、数据存取与更新管理、数据完整性管理和数据安全性管理。
数据库的查询和操纵功能 ,该功能包括数据库检索和修改。
数据库维护功能,包括数据导入/导出管理,数据库结构维护、数据恢复功能和性能监测。
数据库并行运行,由于在同一时间,访问数据库的用户不止一个,所以数据库服务器必须支持并行运行机制,处理多个事件的同时发生。
注意:数据作为企业中非常重要的财产,所以一般在数据库服务器旁都会部署防火墙。

tomcat是干什么的

这个软件用来装载你的javaweb程序,可以称它为web容器,你的jsp/servlet程序需要运行在Web容器上,Web容器有很多种,JBoss、WebLogic等等,Tomcat是其中一种。tomcat是一种web服务器,也可以称作运行在服务器(物理意义上的计算机)上的一种软件包。用来对服务器上的HTML文档提供访问权限控制。
以上的说法可能太专业化,一时难以理解。其实用通俗的语言来讲,万维网本质上就是“超文本文档”(HTML文档)组成的一个通过超级链接互相访问交互网络。你从甲计算机上的文档A通过超链接访问乙计算机上的文档B,而B必须放在Web服务器(Tomcat)里才能被访问。Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,*新的Servlet和Jsp规范总能在Tomcat中得到体现。
与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(WebArchive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。
Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可。

总结:就是web应用放到tomcat里面才能跑得起来,而tomcat里面对项目有规定特定的格式,就是war包的格式,这就是为什么我们需要把项目打成war才能丢进去

简单总结下,tomcat是一个中间件,在B/S架构中,浏览器发出的http请求经过tomcat中间件,转发到*终的目的服务器上,响应消息再通过tomcat返回给浏览器。

tomcat所做的事情主要有:开启监听端口监听用户的请求,解析用户发来的http请求然后访问到你指定的应用系统,然后你返回的页面经过tomcat返回给用户。

通俗点说他是jsp网站的服务器之一,就像asp网站要用到微软的IIS服务器,php网站用apache服务器一样,
因为你的jsp动态网站使用脚本语言等写的,需要有服务器来解释你的语言吧,服务器就是这个功能。如果你的网页是纯html的,
浏览器就可以直接解释查看效果,但是你的网页一但是.jsp .asp .php 等的动态网页时浏览器自己就无法解释了,需要上面说到的服务器
。tomcat便可以解释jsp等java编写的网站。

Java中 Tomcat 是干什么的?

Tomcat是web容器。它的作用稍后给你解释。
你在做web项目时,多数需要http协议,也就是基于请求和响应,比如你在百度输入一行内容搜索,
那么百度服务器如何处理这个请求呢,他需要创建servlet来处理,servlet其实就是java程序,只是在服务器端的java程序,
servlet通过配置文件拦截你的请求,并进行相应处理,然后展示给你相应界面,那么servlet如何创建? 这时候tomcat用到了,
它就是帮助你创建servlet的东西,所以也称web容器,没有它,没法运行web项目。相对应的web容器有很多,
比如JBOSS,WEBLOGIC等。
Tomcat是一个应用服务器。他可以运行你按照J2EE中的Servlet规范编写好的Java程序。
简单的说它是一个Web网站的运行容器,把你写好的网站放进去就可以运行。
Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展,处理动态网页部分。
Eclipse+tomcat=网络应用,如JSP类应用

Tomcat服务器结构浅析

*近有点懒,博客更新少,补上一篇之前的欠债。。。这篇博客内容基于《Tomcat架构解析》,这里把Tomcat主要的结构介绍了下,更详细的内容大家可以参考该书。

Tomcat是全世界*著名的基于Java语言的轻量级应用服务器,是一款完全开源免费的Servlet容器实现。同时,它支持HTML,JS等静态资源的处理,因此也可作为轻量级的WEB服务器来使用。在以前的WEB开发当中,我们主要通过将程序打包,将打包文件放到webapps下来进行访问,而在使用SpringBoot作为开发框架的情况下,由于SpringBoot已内嵌Tomcat,不需要将打包文件放在特定的文件夹下,而是直接运行程序即可。这篇博客*部分内容将介绍Tomcat的整体架构,第二部分介绍SpringBoot内嵌Tomcat的实现。

Tomcat总体架构
首先,让我们来看一张图:
%title插图%num

Tomcat总体的设计便是围绕着这张图来的。下面我们依次对上图中的各个部分做一下介绍。

Lifecycle 接口
该接口主要定义了容器整个生命周期过程中的各个阶段

public interface Lifecycle {
public void init() throws LifecycleException;

public void start() throws LifecycleException;

public void stop() throws LifecycleException;

public void destroy() throws LifecycleException;

public void addLifecycleListener(LifecycleListener listener);


}

该接口包含了容器初始化,开始,停止,销毁等过程。其实现类的各个组件在容器的工作过程当中需要做的工作,即在这几个函数中来完成。

Server
表示整个Servlet容器,因此Tomcat运行环境中只有唯一一个Server实例。在该接口的唯一实现类StandardServer中,除了表示Service的一个对象数组外,主要是一些关于Tomcat的属性,比如port,address等。该容器的这些属性,可以通过properties文件或者yaml文件进行配置(比如端口通过server.port=8080进行配置),或者是原来的开发方式,通过Server.xml进行配置。

Service
Service表示一个或者多个Connector的集合,这些Connector共享同一个Container(即Engine)来处理其请求。在同一个Tomcat实例内可以包含任意多个Service实例,它们彼此独立。Service其实是作为Tomcat中接收请求,以及处理请求的容器的纽带存在的。tomcat中的实现类StandardService有以下几个重要的属性:

public class StandardService extends LifecycleMBeanBase implements Service {
private Server server = null;
protected Connector connectors[] = new Connector[0];
private Engine engine = null;
protected final Mapper mapper = new Mapper();
}

server表示其所属Server,Engine作为处理该service中Connector的容器。Mapper可以看作是映射器,要来处理请求地址到处理该请求的容器及Servlet的映射。

Engine
在Tomcat中,Engine为*高层级的容器对象。尽管Engine不是直接处理请求的容器,却是获取目标容器的入口。

Host
Host 作为一类容器,表示Servlet引擎(Engine) 中的虚拟机, 与一个服务器的网络名有关,如域名等。客户端可以使用这个网络名连接服务器,这个名称必须要在DNS服务器上注册

Context
Context作为一类容器,用于表示ServetContext ,在Servlet规范中, 一个ServletContext表示一个独立的Web应用

Wrapper
Wrapper作为一类容器, 用于表示Web应用中定义的Servlet(其实是对Servlet进行了一层封装)。

Connector
表示Tomcat中的链接器,其主要作用是监听并转化Socket请求,并交由Container处理。其实就是对不同协议及协议处理器进行的封装。下面是我们需要关注的几个属性域:

public class Connector extends LifecycleMBeanBase {
protected Service service = null;
protected final ProtocolHandler protocolHandler;
}

Service是其父容器,ProtocolHandler表示协议处理器

ProtocolHandler
ProtocolHandler表示协议处理器,是一个接口,其实现类有以下几种:

%title插图%num

从图中我们大概能够猜到,其中的每一个实现类,其实都代表着一种I/O协议的处理过程,我们以同步非阻塞I/O的处理器Http11NioProtocol为例,其*初继承于抽象类AbstractProtocol,它的定义如下:

public abstract class AbstractProtocol<S> implements ProtocolHandler,
MBeanRegistration {
private final AbstractEndpoint<S> endpoint;
private Handler<S> handler;
private final Set<Processor> waitingProcessors = Collections.newSetFromMap(new ConcurrentHashMap<Processor, Boolean>());
}

AbstractEndpoint代表的是协议端点,比如,Nio使用的是NioEndpoint类,即为nio的实现逻辑,对nio类型的Socket进行监听, Handler作为AbstractEndpoint接收到I/O后,用来处理I/O的处理器。

请求处理过程
当我们的浏览器或者是其他工具发起一个Http请求时候,Tomcat的整个处理过程如下:

%title插图%num

从一开始的Endpoint监听到Http请求后,调用Processor进行处理,Process调用CoyoteAdapter进行处理,CoyoteAdapter通过Mapper获取到处理该请求的顶级容器Engine,通过一层层的查找,*终获取到处理该请求的Wrapper,经过Tomcat中定义的一系列过滤器(Filter)后,*终由Servlet(在SpringMVC中,便是被DispatcherServlet)进行了消费。Tomcat整个处理的流程便是这样的。

SpringBoot内嵌Tomcat
再完成了Tomcat简单的解析之后,我们还要问,在启动SpringBoot应用的过程当中,是如何启动Tomcat的呢?在Tomcat中,其已经为我们提供了一个表示其实例的Tomcat类,通过查找,我们知道,该类的实例是在TomcatEmbeddedServletContainerFactory类的getEmbeddedServletContainer函数中被创建的。启动一个简单的SpringBoot应用,通过断点,我们能够看到它被调用的路径:

%title插图%num

从上图可知,到Springboot应用刷新容器的时候,会在该过程当中创建Tomcat的实例,我们来下看下函数的实现过程:

public class TomcatEmbeddedServletContainerFactory
extends AbstractEmbeddedServletContainerFactory implements ResourceLoaderAware {
@Override
public EmbeddedServletContainer getEmbeddedServletContainer(
ServletContextInitializer… initializers) {
// 创建Tomcat的实例
Tomcat tomcat = new Tomcat();

// 为Tomcat设置应用的根目录
File baseDir = (this.baseDirectory != null ? this.baseDirectory
: createTempDir(“tomcat”));
tomcat.setBaseDir(baseDir.getAbsolutePath());

// 根据Springboot使用的I/O协议,创建Connector,默认的协议是`String DEFAULT_PROTOCOL = “org.apache.coyote.http11.Http11NioProtocol`,及NIO协议(同步非常阻塞)
Connector connector = new Connector(this.protocol);
// 为Service添加Connector,若Tomcat还没有Service,则getService函数中会创建
tomcat.getService().addConnector(connector);
customizeConnector(connector);
tomcat.setConnector(connector);

// 通过配置autoDeploy禁止虚拟主机自动部署Web应用
tomcat.getHost().setAutoDeploy(false);

// 配置Tomcat的顶级容器Engine
configureEngine(tomcat.getEngine());

// 添加额外的自定义协议的Connector
for (Connector additionalConnector : this.additionalTomcatConnectors) {
tomcat.getService().addConnector(additionalConnector);
}

// 配置虚拟主机Host,其内会进一步初始化Host的字容器
prepareContext(tomcat.getHost(), initializers);

// 对Tomcat进行包装,返回TomcatEmbeddedServletContainer的实例
return getTomcatEmbeddedServletContainer(tomcat);
}
}

关于Tomcat的内容其实还有很多,只是由于时间限制,不能在这里更深入地讲解,若后期有机会,会继续更加深入地介绍Tomcat的各个组件,这篇内容就做为Tomcat容器系列的*篇吧~

 

 

tomcat服务器、http

一、Tomcat服务器(会)
1、Web开发概述
javaSE:

javaEE:13种

javaME:

JavaEE规范: 13种技术的总称。Servlet/Jsp  JDBC  JNDI JTA…

Tomcat:Servlet/Jsp容器,轻量级服务器。

 

2、Tomcat的安装与配置
3.1、安装:
直接解压到指定目录即可。(注:目录不要太深;目录不要有中文或空格)

3.2、启动服务器:
F:\apache-tomcat-7.0.52\bin\startup.bat

启动服务器的前题:

配置JAVA_HOME:jdk的安装路径  path=%JAVA_HOME%\bin

进入到F:\apache-tomcat-7.0.52\bin>startup.bat才能执行命令

配置CATALINA_HOME: 没必要配置

F:\apache-tomcat-7.0.52

 

startup.bat 启动命令

shutdown.bat 停止命令

 

 

如果tomcat端口被占用,解决办法

> 修改F:\apache-tomcat-7.0.52\conf\server.xml

第70行:  <Connector port=”8081″/>

> 关闭端口号对应的进程:

cmd–>netstat-ano –>找到pid–>任务管理器–>显示pid–>关闭进程

3.3、测试服务器是否启动成功
http://localhost:8080

 

 

3.4、Tomcat的主要目录:(重要)
3、标准的JavaWeb应用的目录结构(很重要:记住)
应用:

MyApp

1.html

Css

myStyle.css

Js

My.js

WEB-INF : 注意:固定写法。此目录下的文件不能被外部直接访问。

classes:    我们编写的程序代码。.class文件

lib :  应用需要用的jar文件
web.xml  : 应用的配置信息

4、部署应用到Tomcat服务器
手动部署

> 开放目录部署方式

首先在F:\apache-tomcat-7.0.52\webapps下自己创建一个文件夹

然后把应用下webroot里面的内容直接复制到这个文件夹里面。

> 把应用打成war包。

打war包命令:jar  -cvf  MyApp.war .

把war包直接复制到F:\apache-tomcat-7.0.52\webapps下,应用自动解压

 

注:webapps目录下有几个目录就代表有几个应用;webapps就默认代表服务器的根目录。

 

自动部署

Tomcat服务器与MyEclipse集成(一定要掌握)

1、Tomcat集成

2、创建web应用

3、部署

 

修改myeclipse自带tomcat端口号方法:在myEclipse界面的左边,Servers->MyEclipseTomcat v7.0-config->server.xml   进到里面修改端口号(20,63,83行处)

 

URL: 统一资源定位符(网址)

URI: 统一资源标识符

http://localhost:8080/day08_02/1.html

协议  主机IP(端口号) URI(当前应用的资源路径)

 

5、配置默认端口、默认应用、默认主页
A、把server.xml中<Connector port=”80″protocol=”HTTP/1.1″

connectionTimeout=”20000″

redirectPort=”8443″/>

浏览器http默认端口:80

B、默认应用:

默认应用:把配置的虚拟目录的配置文件名改为ROOT.xml即可。

C、默认主页

修改当前应用web.xml,添加以下内容:

当前的应用被执行了 在服务器端部署应用的过程

1安装服务器

2.打开服务器

3.创建应用

4.应用的发布: 手动发布:将应用(webroot下)放在服务器的webapps下面

自动发布:利用myeclipse实现发布 通过在myeclipse中安装服务器实现对服务器的操作 >安装的过程有两种:

1.使用myeclipse自带的服务器 2.使用单独的服务器与myeclipse关联 5.测试

 

 

二、HTTP协议
1、HTTP协议概述
> HTTP是HyperText Transfer Protocol(超文本传输协议)的简写,传输HTML文件。

> 用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。

 

2、请求部分
1、请求消息行

GET  /day08_02/1.html  HTTP/1.1

请求方式:Get(默认) POST  DELETE  HEAD等

GET:明文传输 不安全,数据量有限,不超过1kb

GET/day08_02/1.html?uName=tom&pwd=123 HTTP/1.1

POST: 暗文传输,安全。数据量没有限制。

 

URI:统一资源标识符。去协议和IP地址。

 

协议/版本 :

 

2、请求消息头

从第2行到空行处,都叫消息头

Accept:浏览器可接受的MIME类型

告诉服务器客户端能接收什么样类型的文件。

Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集

Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip

Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。可以在浏览器中进行设置。

Host:初始URL中的主机和端口

Referrer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面

Content-Type:内容类型

 

告诉服务器浏览器传输数据的MIME类型,文件传输的类型

application/x-www-form-urlencoded

 

If-Modified-Since: Wed, 02 Feb 2011 12:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件。

User-Agent:浏览器类型.

Content-Length:表示请求消息正文的长度

Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接

Cookie:这是*重要的请求头信息之一 (在讲会话时解析)

Date:Date: Mon, 22Aug 2011 01:55:39 GMT请求时间GMT

 

3、消息正文: 当请求方式是POST方式时,才能看见消息正文

uName=tom&pwd=123

3、响应部分
1、响应消息行

*行:

HTTP/1.1   200  OK

协议/版本   响应状态码  对响应码的描述(一切正常)

响应状态码:

常用的就40多个。

200(正常)  一切正常

302/307(临时重定向)

304(未修改)

表示客户机缓存的版本是*新的,客户机可以继续使用它,无需到服务器请求。

404(找不到)  服务器上不存在客户机所请求的资源。

500(服务器内部错误)

 

2、响应消息头

Location: http://www.it315.org/index.jsp指示新的资源的位置

通常和302/307一起使用,完成请求重定向

Server:apachetomcat指示服务器的类型

Content-Encoding: gzip服务器发送的数据采用的编码类型

Content-Length:80 告诉浏览器正文的长度

Content-Language:zh-cn服务发送的文本的语言

Content-Type: text/html; charset=GB2312服务器发送的内容的MIME类型

Last-Modified:Tue, 11 Jul 2000 18:23:51 GMT文件的*后修改时间

Refresh: 1;url=http://www.it315.org指示客户端刷新频率。单位是秒

Content-Disposition: attachment; filename=aaa.zip指示客户端下载文件

Set-Cookie:SS=Q0=5Lb_nQ;path=/search服务器端发送的Cookie

Expires: -1

Cache-Control: no-cache (1.1)

Pragma: no-cache  (1.0)  表示告诉客户端不要使用缓存

Connection:close/Keep-Alive

Date:Tue, 11 Jul 2000 18:23:51 GMT
————————————————
版权声明:本文为CSDN博主「Bigoted_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Bigoted_/article/details/79320809