day06
一、Web概述
1.服务器中存储的内容:
静态Web资源:HTML、css、js、jQuery 每一个用户看到的内容都相同,这些资源称之为静态Web资源。
动态Web资源:JSP、Servlet 每一个用户看到的内容不相同,这些资源称之为动态Web资源。
2.Web即为网页,在编写完成一个网页之后,应该让Internet中的用户都可以访问。
3.服务器概念
服务器有物理服务器和软件服务器之分。物理服务器指的是真是存储的硬件设备。软件服务器指的是一个可操作性的程序。
4.tomcat安装和内容介绍
tomcat安装
解压.zip文件即可安装成功。(.tar.gz .exe另外两种文件形式)
tomcat启动
a.启动方式
在tomcat/bin目录下双击 startup.bat文件
b.启动时的问题
问题:tomcat窗口一闪而过:
原因一:端口号8080被占用。(通过netstat -ano 查看端口号及进程号。)
原因二:JAVA_HOME环境变量配置有问题。
原因三:安装路径中出现中文或者空格。
注:安装路径中不能够出现中文和空格。
c.修改tomcat端口号:
[tomcat]/conf/server.xml文件中第71行,将8080修改为80。这是将tomcat服务器启动时占用的端口改为80端口。
80端口是一个缺省端口(在地址栏中可以不用书写)。
bin – 存储启动和关闭较脚本文件的目录。
!!conf – 存储tomcat配置文件的目录。
lib – 存储tomcat在启动和运行过程中所需jar包。
!!logs – 存储tomcat日志信息的目录。
temp – 存储tomcat临时文件目录。
!!webapps – 存储tomcat中的web应用的目录,这些应用可以被外界访问。
work – 存储tomcat运行时产生的文件目录。
二、虚拟主机和Web应用
1.虚拟主机概念
在一台真实的tomcat服务器上,可以存在多个网站,这些网站在访问者看来是运行在各自独立的服务器当中,但是真是情况确实运行在同一台tomcat服务器中,所以这些网站可以称之为运行在真实服务器中的虚拟主机。一个网站就是一个虚拟主机。服务器也称为主机。
2.Web应用
在虚拟主机中,无法直接管理web资源,因为web资源涉及到的功能众多,管理维护十分繁琐。可以将同一功能的web资源放入一个目录当中,这个目录被虚拟主机管理。这样的一个目录就被称之为web应用目录。一个功能创建一个web应用目录。
3.Web应用部署
3.1概念
web应用是存储在当前的服务器中,这个应用如果要被Internet中的用户访问,则需要配置一个虚拟路径,这个虚拟路径和真实应用的对应关系,称之为web应用的映射。
3.2 web应用的映射
方式一:在conf/server.xml中添加如下内容:在标签中添加 其中path包含虚拟路径,docBase包含真实web应用的路径。
方式二:在conf/中创建一个以虚拟路径为文件名称的.xml文件(支持tomcat热部署,就是在tomcat启动中换可以自动部署,更改部署,不需要重启tomcat),在.xml文件中添加自闭标签。代码如下:
多级目录:如果要求虚拟路径是多级路径,即news2/aa 应该将xml文件的名称修改为news2#aa.xml 在windows系统中无法使用 “/“命名文件,所以用”#“替代。
方式三:在tomcat/webapps目录中添加一个新的目录,目录名称就是web应用的虚拟路径名称。这个目录就是真实的web应用。(支持热部署)
3.3缺省web应用的配置:
所谓缺省web应用就是配置一个web应用的虚拟路径为缺省路径(可以不用书写)。
第一种方式:
将 中的path属性设置为””。
第二种方式:
将conf/Catalina/localhost中的.xml文件名称改为ROOT.xml文件名称,这个ROOT即为缺省路径的名称。
第三种方式:
将webapps中的web应用名称改为ROOT,即可作为缺省Web应用使用。
缺省路径的优先级:server.xml > Catalina/localhost/ROOT.xml > webapps/ROOT
4.Web应用目录结构
4.1目录结构
一个Web应用的目录结构可以只包含一些静态资源,但是同样可以创建一个完整的Web资源(可以包含动态资源),完整的目录结构如下:
news(表示Web应用)
|—1.html 静态资源–Web应用目录中可以存放静态资源,这些资源可以被浏览器直接访问。
|—WEB-INF 一个Web应用如果有这个目录,则一定要保证这个目录结构的完整,否则可能会导致Web应用无法工作。
|—静态web资源 此处的静态资源无法被浏览器直接访问。
|—lib 用于存放Web应用所依赖的jar包。
|—classes 存放编译后的.class文件的目录。(动态资源存放目录)
|—web.xml 用于配置当前Web应用的过滤器,监听器,servlet映射,缺省主页的文件。
4.2 web.xml文件
一个完整的Web应用需要包含WEB-INF目录,其中必然会后一个web.xml文件。这个文件是当前Web应用的配置文件,可以在其中书写过滤器,监听器,servlet映射,缺省主页等配置信息。
web.xml功能:配置过滤器,配置监听器,配置servlet映射,配置缺省主页。(全站首页conf/web.xml配置缺省首页)
web.xml应用:配置缺省主页,从conf/web.xml中赋值声明及起始标签和最后的welcome-file-list标签及结束标签。这样基本的web.xml文件结构就已经形成。
1.html
注:所有的Web应用都会继承tomcat/conf/web.xml文件,其中的配置信息在每一个Web应用中都可以使用。
5.虚拟主机的配置
5.1修改server.xml文件
在server.xml中的标签的标签,在标签下添加内容如下:
name属性为当前虚拟主机的名称(也是域名)
appBase属性为当前虚拟主机管理的目录。(目录的路径可以是相对路径也可以是绝对路径,相对路径在tomcat中的跟目录下(类似于webapps),绝对路径直接写路径名称(例:D:/baidu))
5.2修改hosts文件
在配置Host标签后,仍然无法访问这个网站,根本原因是www.qiandu.com没有指向本地,可以修改hosts文件让网站指向本地。
C:\Windows\System32\drivers\etc ,修改内容为 127.0.0.1 www.qiandu.com
修.改hosts文件的原因:
hosts文件可以将域名解析为ip地址,在访问一个网站的时候最后会根据ip地址访问。
中的属性:
className 默认为org.apache.catalina.core.StandardHost
appBase web应用程序文件存放的位置,相对路径为CATALINA_HOMEM
autoDeploy 设为true,则web.xml发生变化时,tomcat自动重新部署程序。实现这个功能必需允许后台处理
name virtual host的名称
backgroundProcessingDelay 跟Engine中的backgroundProcessingDelay类似
deployOnStartup 若为true,则当这个Engine启动时,tomcat将自动部署这个host,默认为true
deployXML 这个属性的目的是为了提高tomcat的安全性,控制web应用程序是否能使用META-INF/contex.xml。如果设为false,则各应用程序只能访问 C A T A L I N A H O M E / c o n f / < e n g i n e > / < h o s t > / < a p p > . x m l 。 默 认 值 为 T r u e 。 e r r o r R e p o r t V a l v e C l a s s 定 义 h o s t 使 用 的 e r r o r − r e p o r t i n g V a l v e , 默 认 值 为 o r g . a p a c h e . c a t a l i n a . v a l v e s . E r r o r R e p o r t V a l v e u n p a c k W A R s t o m c a t 在 w e b a p p s 文 件 夹 中 发 现 w a r 文 件 时 , 是 否 自 动 将 其 解 压 w o r k d i r t o m c a t 使 用 这 个 目 录 来 放 工 作 着 的 s e r v l e t 和 j s p ( 以 s e r v l e t 形 式 ) , 这 里 面 的 s e r v l e t 都 是 是 编 译 好 的 c l a s s 文 件 。 默 认 为 CATALINA_HOME/conf/<engine>/<host>/<app>.xml。默认值为True。 errorReportValveClass 定义host使用的error-reporting Valve,默认值为org.apache.catalina.valves.ErrorReportValve unpackWARs tomcat在webapps文件夹中发现war文件时,是否自动将其解压 workdir tomcat使用这个目录来放工作着的servlet和jsp(以servlet形式),这里面的servlet都是是编译好的class文件。默认为 CATALINAHOME/conf/<engine>/<host>/<app>.xml。默认值为True。errorReportValveClass定义host使用的error−reportingValve,默认值为org.apache.catalina.valves.ErrorReportValveunpackWARstomcat在webapps文件夹中发现war文件时,是否自动将其解压workdirtomcat使用这个目录来放工作着的servlet和jsp(以servlet形式),这里面的servlet都是是编译好的class文件。默认为CATALINA_HOME/work
5.3缺省虚拟主机
在用户使用一个ip地址访问对应的服务器时,服务器无法确认使用那一台虚拟主机提供服务,这时会采用缺省虚拟主机提供服务。
缺省虚拟主机的配置:
在标签上有一个dfaultHost属性,其中包含的内容就是缺省虚拟主机,在使用ip访问的时候,这个虚拟主机就会提供服务。
配置如下:
6.杂项
6.1打war包
方法一:在某一个web应用的目录下访问cmd窗口,在窗口中书写 jar -cvf search.war *,即可成功打war包。search为Web应用的名称。
ctrl + shift + delete 清空浏览器的缓存快捷键。
方法二:进入到某一个Web应用的目录中,将所有文件添加到.zip的压缩包中,并修改后缀为.war,则war包打包成功。
6.2 web.xml和Context.xml文件
Context.xml文件中指定了每一个web应用监听的资源路径,路径内容为WEB-INF/web.xml文件。
conf目录下的web.xml被所有的web应用的web.xml文件继承。
注意:在server.xml中如果配置了缺省web应用,则运用第三种发布方式自动部署一个war包是不可以实现的,需要将第一种web应用的缺省路径修改为其他路径内容(或者注释掉)。这样第三种方式就可以自动发布一个缺省Web应用。
三、HTTP协议
1.HTTP协议概述
a.HTTP HyperText transfor protocol (超文本传输协议)。
b.HTTP协议就是用来规定发送数据格式的一个标准。HTTP在传输数据是将数据转换为一定格式,HTTP协议指定了数据传输的格式。
2.HTTP协议模型
基于请求响应模型,一次请求对应一次响应。请求由浏览器发出,服务器根据请求作出响应。
3.HTTP协议版本
a.HTTP/1.0
在浏览器和服务器建立连接之后,浏览器发出一次请求,服务器作出一次响应,连接就会断开。
b.HTTP/1.1
在浏览器和服务器建立连接之后,浏览器可以发出多次请求,服务器会根据各个请求依次作出响应。在服务器等待一段时间之后,如果没有更多的请求到达,则会将连接断开。
4.Telnet指令模拟HTTP协议工作
利用telnet演示HTTP1.0和HTTP1.1的区别
首先准备一个web应用
打开cmd窗口,输入telnet localhost 端口号
按crtl+]
回车,进入输入界面(输入界面不允许删除字符,因为每输入一个字符就将这个字符以流的形式发送给服务器,无法修改。)
输入指令 GET /web应用/资源名 HTTP/1.1
回车,输入Host:localhost:端口号
使用HTTP1.1协议和1.0协议分别测试,发现1.1执行完一次请求后等待下一次请求,1.0则在一次请求后断开。
telnet测试注意事项:每次telnet测试完成后要退出重进,必要时需要重启tomcat。
一个web页面中,使用img标签引用了三幅图片,当浏览器访问服务器中的这个web页面时,浏览器总共会请求几次服务器?总共会发送4次请求(建立1个页面1次,传入3张图片3次)。只会建立一次连接。
5.HTTP请求
客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:
一个请求行、若干请求头、一个空行、以及实体内容。
6.HTTP请求的细节——请求行
请求行中的GET称之为请求方式,请求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用的有: GET、 POST
用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。
不管POST或GET,都用于向服务器请求某个web资源,这两种方式的区别主要表现在数据传递上:
如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,
例如:GET /mail/1.html?name=abc&password=xyz HTTP/1.1
GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。
如请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,
Post方式的特点:传送的数据量无限制。
7.HTTP请求的字节——请求头
用于HTTP请求中的常用头:
Accept: text/html,image/* 通知浏览器可以接受什么数据 现在表示接收文本数据,任意格式的图片数据
Accept-Charset: ISO-8859-1
Accept-Encoding: gzip,compress 发送数据的压缩格式
Accept-Language: en-us,zh-cn 语言
Host: www.it315.org:80 请求的地址,可以通过观察Host头来确定访问对应地址服务器上的哪个虚拟主机。
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT 与响应头last modified呼应
Referer: http://www.it315.org/index.jsp 防盗链
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Cookie
Connection: close/Keep-Alive
Date: Tue, 11 Jul 2000 18:23:51 GMT
8.HTTP响应
一个HTTP响应代表服务器向客户端回送的数据,它包括:
一个状态行、若干响应头(消息头)、一个空行、以及实体内容 。
9. HTTP响应的细节——状态行
状态行格式: HTTP版本号 状态码 原因叙述
举例:HTTP/1.1 200 OK
状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类:
100-199 表示成功接受请求,要求客户端继续提交下一次请求才能完成整个处理过程。
200-299 表示成功接受请求并已完成整个处理过程,常用200
300-399 为完成请求,客户需进行进一步细化请求。例如,请求的资源已经移动一个新地址,常用302(302+location 304、307—缓存)
400-499 客户端的请求出现错误,常用404(访问资源路径不存在,路径书写出现错误)
500-599 服务器端出现错误,常用500(一般是自己代码编写错误)
10. HTTP响应细节——常用响应头
HTTP请求中的常用响应头
Location: http://www.it315.org/index.jsp 配合302实现请求重定向
Server:apache tomcat 服务器类型
Content-Encoding: gzip 服务器发送数据的压缩格式
Content-Length: 80 发送数据的长度
Content-Language: zh-cn 发送数据的语言环境
Content-Type: text/html; charset=GB2312 可接受数据格式和语言
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 与请求头的if modified since头呼应
Refresh: 1;url=http://www.it315.org 定时跳转
Content-Disposition: attachment;filename=aaa.zip
Transfer-Encoding: chunked
Set-Cookie:SS=Q0=5Lb_nQ; path=/search
ETag: W/“83794-1208174400000”
Expires: -1 通知浏览器是否缓存当前资源,如果这个头的值是一个以毫秒为单位的值就是通知浏览器缓存资源到指定的时间点,如果值是0或-1则是通知浏览器禁止缓存。
Cache-Control: no-cache 通知浏览器是否缓存的头
Pragma: no-cache 通知浏览器是否缓存的头
Connection: close/Keep-Alive
Date: Tue, 11 Jul 2000 18:23:51 GMT
11.OSI网络七层协议
应用层(HTTP、FTP、SMTP、POP3、TELNET)->表示层->会话层->传输层(TCP、UDP)->网络层(IP)->数据链路层->物理层
TCP/IP 四层模型