03.HTTP协议
3.1协议概述
HTTP: 特点:无状态,默认端口就是80 https:
WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。
HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议之上的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式。
HTTP协议到底约束了什么:
1.约束了浏览器以何种格式想服务端发生数据:
2.约束了服务器应该以何种格式来接受客户端发生的数据:
3.约束了服务器应该以何种格式来反馈数据给浏览器;
4.约束了浏览器应该以何种格式来接收服务器反馈的数据.
---------------------------------------------------------------------------
HTTP1.0规范:
若请求的有N个资源,得建立N次连接,发送N次请求,接收N次响应,关闭N次连接.
每次请求的之间都要建立单独的连接,请求,响应,响应完关闭该次连接:
缺点:每请求一个资源都要单独的建立新的连接,请求完并关闭连接.
解决方案: 能在一次连接之间,多次请求,多次响应,响应完之后再关闭连接.
HTTP1.1规范:能在一次连接之间,多次请求,多次响应,响应完之后再关闭连接.
HTTP 1.1的特点
在一个TCP连接上可以传送多个HTTP请求和响应
多个请求和响应过程可以重叠进行
增加了更多的请求头和响应头
浏览器给服务器发送数据:一次请求
服务器给浏览器反馈数据:一次响应
HTTP协议的版本
HTTP/1.0、HTTP/1.1、HTTPS2.0
3.2httpwatch和firebug工具
3.3请求信息
请求消息
1、包含三大部分
1.1请求行:位于请求消息的第一行
格式:请求方式 资源路径 HTTP版本号
常用请求方式:GET和POST方式
1.1.1Get请求方式:
a、若请求服务器上的某个资源,没有指定请求方式,则默认为GET方式
b、可以通过GET方式向服务器传递数据。具体方式就是在URL请求路径后加上?,多个参数以&分割。比如
http://localhost:8080/a.html?username=abc&password=123
注:GET请求方式,数据不安全且有URL长度限制(1K)
1.1.2Post请求方式:
a、若使用Post请求方式传递数据,可以借助form表单的method="post"
b、数据安全,且长度没有限制
1.2若干请求头:从第二行开始到第一个空行。作用:向服务器传递客户端的一些基本信息
<1>、Accept:浏览器可接受的MIME类型(Tomcat安装目录/conf/web.xml中查找)
<2>、Accept-Charset:告知服务器,客户端支持哪种字符集
<3>、Accept-Encoding:浏览器能够进行解码的数据编码方式
<4>、Accept-Language:浏览器支持的语言。
<5>、Referer:当前页面由哪个页面访问过来的。
<6>、Content-Type:通知服务器,请求正文的MIME类型。
取值:application/x-www-form-urlencoded默认值
对应的是form表单的enctype属性
<7>、Content-Length:请求正文的长度
<8>、If-Modified-Since:通知服务器,缓存的文件的最后修改时间。
<9>、User-Agent:通知服务器,浏览器类型.
<10>、Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接
<11>、Cookie:这是最重要的请求头信息之一(会话有关)
1.3请求正文:从第一个空行开始,后面的都是正文。(可以没有)
3.4响应信息
响应消息
1、包含三大部分
1.1状态行:位于响应消息的第一行
格式: HTTP版本号 状态码
1.2若干响应头:从第二行开始到第一个空行
<1>、Location:制定转发的地址。需与302/307响应码一同使用
<2>、Server:告知客户端服务器使用的容器类型
<3>、Content-Encoding:告知客户端服务器发送的数据所采用的压缩格式
<4>、Content-Length:告知客户端正文的长度
<5>、Content-Type:告知客户端正文的MIME类型
Conent-Type:text/html;charset=UTF-8
<6>、Refresh:定期刷新。还可以刷新到其他资源
Refresh:3;URL=otherurl
3秒后刷新到otherurl这个页面
<7>、Content-Disposition:指示客户端以下载的方式保存文件。
Content-Disposition:attachment;filename=2.jpg
<8>、Expires:网页的有效时间。单位是毫秒(等于-1时表示页面立即过期)
Cache-Control:no-cache
Pragma:no-cache
控制客户端不要缓存
<9>、Set-Cookie:SS=Q0=5Lb_nQ; path=/search服务器端发送的Cookie(会话有关)
1.3响应正文:从第一个空行开始,后面的都是正文。
----------------------------------------------------------------------------------------
MIME
MIME的英文全称是"Multipurpose Internet Mail Extensions" 多用途互联网邮件扩展,它是一个互联网标准,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。服务器会将它们发送的多媒体数据的类型告诉浏览器,
MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型
3.4常见的响应状态码
3.5GET和POST请求的区别
02.Tomcat服务器
2.1 Tomcat的安装和使用
Tomcat是使用Java语言编写的一个服务器(程序),要运行Tomcat,必须得有jre.
安装启动:
0.
32位的JDK --->32位的Eclipse--->32位Tomcat
64位的JDK --->64位的Eclipse--->64位Tomcat
1.安装目录不能使中文的,并且安装路径不允许出现空格.
如:D:\OpenSources\Tomcat7\apache-tomcat-7.0.42:我们把该路径称之为Tomcat的根路径
2.启动Tomcat服务器:Tomcat根/bin/startup.bat
但是提示:必须先配置JAVA_HOME或者JRE_HOME的环境变量:
一般的我们只配置JAVA_HOME:配置为JDK的根路径
JAVA_HOME=D:\OpenSources\jdk1.7.0_06_x86
配置好之后,再点击Tomcat根/bin/startup.bat:知道控制台没有打印重大的错误,Exception,没有一闪而过,就表示启动成功.
Tomcat的默认端口是8080:
访问:
打开浏览器:
http://服务器所在主机的IP:服务器的端口号/资源名字
http://服务器所在主机的名字:服务器的端口号/资源名字
若服务在本机:
http://本机的IP:服务器的端口号/资源名字
http://127.0.0.1:服务器的端口号/资源名字
http://localhost:服务器的端口号/资源名字
2.2 Tomcat的常见错误
1.还没启动Tomcat或者Tomcat启动失败,就去访问地址:
2.Tomcat启动成功,但是出现404的页面.
3.Tomcat还未关闭,又再次重新启动Tomcat.
4.Tomcat下的配置文件的结构不能乱改:
5.要保证XML内容编码和文件编码相同,若有中文,建议使用UTF-8,否则不能使用中文:
2.3 Tomcat的常见配置
2.3.1端口配置
修改Tomcat的默认端口:
Tomcat的默认端口是8080,HTTP协议的默认端口是80;
步骤:
1.进入Tomcat根/conf/找到server.xml文件
2.默认是在第70行,Connector元素的 port属性:
3.配置为80端口(80端口是http协议的默认端口):
http://baidu.com:80/index.php 等价于
http://baidu.com/index.php
4.重新启动Tomcat,看到效果;
2.3.2权限配置
2.3.3服务配置
Tomcat常见的配置:
把Tomcat配置到服务列表:这样可以随着系统的启动而启动(一般用在服务上):
1.使用cmd工具,并进入Tomcat根/bin目录
2.执行service install命令
3.就可以注册服务
删除服务:
1.使用cmd工具,并进入Tomcat根/bin目录
2.执行service remove命令
3.就可以删除服务
2.4JavaWeb项目结构
WEB应用程序指供浏览器访问的程序,通常也简称为web应用。
一个web应用由多个静态web资源和动态web资源组成,如:
html、css、js文件
jsp文件、java程序、jar文件、
配置文件
……
组成 web 应用程序的这些文件要部署在相应的目录层次中,根目录代表整个 web 应用程序的“根”。
---------------------------------------------------------------------------------------------------------------
从JavaEE6开始(Tomcat7,Servlet3.0规范),JavaWeb应用下可以不需要web.xml文件了.(可以使用注解).
但是建议保留该文件:
2.5基于Eclipse搭建JavaWeb项目
搭建基于Eclipse的纯的JavaWeb项目:
步骤:
1,搭建一个Java项目:
2,在该项目下新建一个文件夹,表示根,名字为:webapp(名字随意)
3,在webapp下新建一个文件夹,名字为WEB-INF
4,在WEB-INF中新建一个文件夹,名字为classes
5,在WEB-INF中新建一个文件夹,名字为lib
6,去Tomcat根/webapps/ROOT/WEB-INF目录下拷贝一个web.xml文件到WEB-INF下(只保留头和根元素);
7,改变该项目的输出目录:也就是改变classpath的路径,从默认的bin目录该变为webapp/WEB-INF/classs中;
8,搞定:
以后要把项目给别人,只给webapp目录.
2.6Eclipse的Tomcat插件
给Eclipse安装Tomcat的插件:
装插件:
1.在需要被装插件的Eclipse根/dropins目录
2.在该目录下新建一个文本文件:里面的内容是
path=D:/DevelopTools/EclipsePlugins/Tomcat
3.建议修改该文本文件的名字为:tomcat.link
4.重新启动Eclipse.看效果,若看到3只可爱的小猫咪,表示插件安装成功.
5.但是这仅仅表示Eclipse的插件,不代表Tomcat服务器.得和真实的Tomcat服务器做关联.
6,就可以使用了.
2.7部署Web项目
部署JavaWeb项目:
方式一:
直接把应用的根目录,拷贝到Tomcat根/webapps下:
这是MyEclipse默认的部署方式:
缺点:该目录下的应用将会越来越多,启动Tomcat就变慢了.若其中有一个应用有问题,Tomcat就会启动失败.
解决方案:
对比给Eclipse安装插件:
1>.上述部署项目的方式,相对于把插件拷贝到Eclipse/plugins下;
2>.联想到给Eclipse安装插件的第二种方式,使用link文件来关联插件,告诉Eclipse你应该去哪里找插件.
把该思想运用到部署项目上来:(第二种方式)
方式二:
以配置文件的方式,告诉Tomcat应该把哪一个路径下的项目给部署起来.
方式二也有两种用法:
第一种:
1>.找到Tomcat根/conf目录下的server.xml文件:
2>.在server.xml文件中的Host元素之间,新建一个元素:
<Context path="pss" docBase="D:\JavaPros\pureWeb\webapp"/>
在部署的时候,也可以把path的值设置"";
<Context path="" docBase="D:\JavaPros\pureWeb\webapp"/>
改完之后,访问方式:
http://IP地址:端口号/资源的名字
3>.若存在多个<Context/>,必须保证多个Context的path值不能相同.
第二种:
从Tomcat5.5开始推荐使用另外的一种方式来部署项目:
1>.找到Tomcat根/conf/Catalina/localhost新建一个xml文件:比如abc.xml
内容是:<Context docBase="D:\JavaPros\pureWeb\webapp"/>
2>.此时该文件的名字,就相当于是第一种方式的path值(上下文名字)
访问: http://localhost/abc/index.html
其实:意思方式二的两种方式,其实是一个意思.
2.8虚拟主机配置
有两个公司的Web应用都发布在同一个Tomcat服务器上,可以为每家公司创建一个虚拟主机
www.google.com www.baidu.com
google baidu
修改Windows系统中的C:\WINDOWS\system32\drivers\etc\hosts
01.Web概述
01.1 Web发展历程:
01.10CS/BS
CS和BS是软件架构模式:
C/S: Client/Server :客户端/服务端架构:
B/S: Browser/Server:浏览器/服务器架构:
C/S:
VB,Delphi,VC++,C#,Java awt/swing:比如桌面QQ,扫雷,拱猪等运行在桌面的程序.
特点:
在服务端主要就是一个数据库,把所有业务逻辑以及界面的渲染操作交给客户端完成.
优点:较安全,用户界面很丰富,用户体验不错等
缺点:每次升级都需要重新安装,针对于不同的操作系统开发,可移植性很差.
B/S:
JSP,ASP,PHP:基于浏览器访问的应用,把业务逻辑交给服务端完成,客户端仅仅只做界面渲染和数据交换.
特点: BS是特殊的CS,此时浏览器充当了客户端.基于HTTP协议的.
优点:只开发服务端,可以跨平台,移植性很强等.
缺点:安全性较低,用户体验较差等;
现在的应用综合了BS和CS的优点:部分应用不再是单纯BS.
富客户端技术: RIA,客户端会处理部分的业务逻辑,也会做界面的渲染和数据交互.界面丰富好比是CS.
EasyUI,Flex,Extjs,Java FX等
瘦客户端技术: 基于传统的html界面,客户端只界面的渲染和数据交互.(传统的BS)
01.2 Web服务器:
服务器:0
软件服务器:就是一个软件.
硬件服务器:安装了软件服务器的主机.
分类:1
1.http服务器,专门处理静态页面的.
2.javaweb服务器,Tomcat等. 仅仅实现了JavaEE13种规范中的几个规范.(Servlet容器)
不能运行EJB.
3.应用服务器: 实现了JavaEE13种规范.WebSphere(IBM),WebLogic(Oracle),JBoss(red hat)
------------------------------------------------------------------------------------
3.Servlet容器为JavaWeb应用提供运行时环境,它负责管理Servlet和JSP 的生命周期,以及管理它们的共享数据。
3.Servlet容器也称为JavaWeb容器,或者Servlet/JSP容器。
00_Tomcat和Http协议笔记.xls https://pan.wps.cn/l/sbWAxC4FG