servlet01 tomcat,http,web应用,虚拟主机

1	Tomcat服务器
1.1	Tomcat下载和安装
1.1.1	下载Tomcat服务器
下载tomcat服务器的地址为: http://tomcat.apache.org
tomcat服务器有很多版本, 分为windows版和linux版, 还分为32位和64位 版本, 还分为解压版和安装版。
在这里我们使用的是windows版和解压版。
tomcat6需要JDK1.5以上版本的支持
tomcat7需要JDK1.6以上版本的支持
tomcat8需要JDK1.7以上版本的支持
1.1.2	安装和启动tomcat服务器
(1)安装
解压版解压之后就可以使用
 
解压之后需要配置一个JAVA_HOME环境变量, 该变量执行JDK安装的根目录, 用于告诉tomcat服务器JDK在哪一个位置.
 

(2)启动
启动服务器:通过[tomcat服务器根目录]/bin/startup.bat文件启动服务器
关闭服务器:通过[tomcat服务器根目录]/bin/shutdown.bat文件关闭服务器

(3)测试
在服务器启动之后,可以访问如下地址:
http://localhost:8080来 访问tomcat服务器的主页, 如果访问成功则说明tomcat服务器已经正确的安装并启动起来了.
1.2	Tomcat配置
在访问tomcat服务器时, 每次都需要加上主机名(IP)和端口号, 如果在访问时不想写端口号, 可以将tomcat服务器默认监听的端口改为80即可. 修改方式如下:
打开tomcat服务器安装根目录下的conf/server.xml文件, 找到70行, 将port指定的8080端口改为80即可. 
 
保存之后重启服务器, 再次访问时就可以省略端口了.
(tomcat服务器重启,server.xml文件的修改才可以生效)

1.3	常见问题
在启动服务器时, 可能会遇到服务器启动失败的情况, 启动失败的原因可能是服务器的端口被占用了, 占用的原因可能是:(1)上次启动的服务器没有完全关闭会导致本次启动失败。(2)如果别的程序占用tomcat服务器的端口,也会导致服务器启动失败!
解决一:找到[tomcat安装根目录]/bin/shutdown.bat文件, 将服务器按照正常的关闭流程, 再关闭一次即可!.
解决二:在cmd窗口中,通过netstat -ano命令查看当前系统中活动的程序及其占用的端口,找到占用tomcat端口的进程(PID),根据进程ID找到进程(可以通过任务管理器)结束进程即可!
 
也可以在cmd 中通过命令 taskkill /F /PID 进程ID 来结束指定PID的进程。
 
1.4	Tomcat的目录结构
 

bin:tomcat服务器批处理文件的存放目录
conf:tomcat服务器配置文件的存放目录。其中目录下的server.xml文件是服务器的核心配置文件,服务器的所有相关配置都需要在这个文件中进行。
lib:tomcat服务器运行时所依赖的jar包的存放目录。
logs:tomcat服务器在启动时产生的日志文件的存放目录.
temp:tomcat服务器在启动时产生的临时文件的存放目录。
webapps:是localhost虚拟主机默认管理的目录, 放在该目录下的web应用可以通过浏览器直接来访问。
work:tomcat服务器在启动时产生的工作文件的存放目录。
1.5	WEB应用(重点!!)
1.5.1	什么是WEB应用?
 

1.5.2	WEB应用的目录结构
news
 |
 |-- html/css/js/图片/jsp..., 放在WEB应用根目录下(或者非隐私目录下)的资源文件, 可以直接通过浏览器来访问.
 |-- WEB-INF目录: 这是一个隐私目录, 放在该目录下的资源文件, 不能通过浏览器直接来访问.(可以通过服务器内部的转发来访问)
		|-- classes目录: 存放class文件的目录(在web应用中, src中的文件编译后会输出到classes目录.)
		|-- lib目录: 用来存放web应用运行时所依赖的jar包
		|-- web.xml文件: 是web应用的核心配置文件.

1.5.3	如何部署WEB应用到虚拟主机中
在tomcat服务器中默认提供了一台虚拟主机, 就是localhost:
 
因此我们可以将组织好的web应用部署在localhost虚拟主机中.

部署方式:直接将web应用的目录放在localhost主机默认管理的目录下(webapps)即可。
 

测试: 打开浏览器访问如下:
 
1.5.4	部署缺省(默认的)的WEB应用
在访问服务器中部署的WEB应用时, 可以通过WEB应用的目录名称来访问指定的WEB应用. 比如: 
在浏览器访问如下地址: http://localhost/news/1.html 就可以访问news这个web应用. 
如果在访问时不想写WEB应用的目录名称, 这时可以将news目录的名称改为大写的ROOT, 当前WEB应用就是缺省的WEB应用. 在访问时就可以不写WEB应用的目录名称.
1.5.5	配置WEB应用的主页
在访问某一个WEB应用下的资源时, 如果没有写资源的路径, 默认会访问当前WEB应用的主页.
在[tomcat安装根目录]/conf/web.xml文件中为所有的WEB应用配置了三个主页(同一时间只能有一个起作用). 所有的WEB应用都会继承这个配置.
如果自己想单独配置WEB应用的主页, 也可以在当前WEB应用的web.xml文件中进行配置, 配置如下: (在根标签内配置)
 

1.6	虚拟主机(重点!!)
1.6.1	什么是虚拟主机?
 

1.6.2	如何配置虚拟主机?
在[tomcat安装根目录]/conf/server.xml文件中的Engine标签内部添加一个Host标签, 配置如下:
 

其中标签上的name属性用于指定主机名称,该属性是必须存在的属性
其中标签上的appBase属性用于指定主机默认管理的目录,该目录可以用于部署WEB应用. 该属性是可选属性.

配置完后还需要到DNS服务器中配置主机名和IP地址的映射关系, 但是DNS一般不能修改, 我们可以修改本机的hosts文件来模拟该过程!
 
打开hosts文件, 配置如下:
 
1.6.3	如何配置缺省的虚拟主机
在访问服务器中的虚拟主机时, 通常是通过主机名来访问对应的主机, 比如: http://localhost/xx 这时访问的就是localhost主机, 如果通过 http://127.0.0.1 来访问服务器, 服务器不知道要访问哪一个主机, 就会访问默认的(或缺省的)虚拟主机. 而缺省的虚拟主机是localhost主机. 如果想修改缺省的虚拟主机, 可以通过[tomcat安装目录]/conf/server.xml文件的Engine标签来指定缺省的虚拟主机. 配置如下:
 
1.7	其他相关
1.7.1	打war包
方式一:在cmd窗口中,先进入到当前WEB应用的根目录下,通过 jar -cvf xx.war * 命令就可以将当前WEB应用下所有的资源文件及目录打成一个压缩包
 

方式二:直接进入到当前WEB应用的根目录下,将目录下的所有文件及文件夹打成一个xx.zip, 将文件的后缀名改为.war即可!!
1.8	综合练习
配置一个www.163.com 虚拟主机, 配置web应用(music)到虚拟主机中,并配置web应用为缺省web应用, 并且配置web应用的主页, 最终实现直接访问www.163.com能够显示主页的内容



2	HTTP协议
2.1	HTTP协议概述
2.1.1	什么是HTTP协议?
HTTP协议是用于规定浏览器客户端和服务器之间通信的规则.
HTTP协议规定了浏览器在发送请求时该符合什么格式, 也规定了服务器在做出响应时应该符合什么格式.

2.1.2	HTTP协议遵循的基本原则
1.基于请求响应模型
2.一次请求对应一次响应
3.请求只能由浏览器发出, 服务器只能被动的等待请求做出回应.

2.2	HTTP协议详解
2.2.1	HTTP请求
 

1.请求行(包含了请求方式、请求资源的路径、遵循的协议及版本)
GET /news3/1.html HTTP/1.1
GET: 请求方式,在HTTP协议中一共规定了7种请求方式, 只用GET和POST
/news3/1.html: 请求资源的路径
HTTP/1.1: 浏览器发送请求时所使用的协议及版本
2.若干请求头
	http协议中请求头非常多,下面列出常见的请求头及其功能:
Accept: text/html,image/*   
-- 通知服务器当前浏览器可以接受那些格式的数据
Accept-Charset: ISO-8859-1  
-- 浏览器可以接受的字符集编码
Accept-Encoding: gzip,compress 
-- 浏览器可以接受的压缩格式
!Host: www.tedu.cn:80  
--  需要访问的虚拟主机的名称
!!Referer: http://www.tedu.cn/index.jsp 
-- 这是和防盗链相关的头,对当前资源的访问来自哪个页面的超链接
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) 			-- 客户端的基本信息

!!!Cookie (后面讲)

-- 和cookie相关的头

Connection: close/Keep-Alive 
-- 是否继续保持连接   
Date: Fri, 17 Feb 2017 18:23:51 GMT 
-- 当前发送请求的时间

3.请求实体内容
	如果请求方式是GET提交,请求实体中没有数据
		只有当请求方式为POST提交,并且请求中携带了数据, 请求实体才会有内容
2.2.2	HTTP响应
 

1.状态行
	(1)HTTP/1.1 : 定义协议及版本
	(2)200:状态码,表示服务器处理请求的结果。常用的状态码:
		200:表示请求处理成功
		302:表示请求重定向(后面讲解)
		304:表示通知浏览器使用缓存
		404:表示找不到资源
		500:表示服务器内部错误
2.响应头
	http协议中响应头头非常多,下面列出常见的响应头及其功能:
!!!Location: http://www.tedu.cn/index.jsp  
-- 配合302使用实现请求重定向(后面讲解)
Server:apache tomcat 
-- 服务器的基本信息
Content-Encoding: gzip  
-- 服务器发送的数据使用的压缩格式
Content-Length: 80 
-- 服务器发送的数据的大小
!!!Content-Type: text/html;charset=GB2312 
-- 服务器发送的数据是什么格式的,如果是字符格式的数据,则还可以通知服务器发送的数据使用的是什么编码,浏览器会根据这个头指定的编码决定使用哪个编码来打开收到的数据

!!Refresh: 1;url=http://www.tedu.cn 
-- 定时刷新相关的头,通知浏览器,过几秒后自动刷新访问哪个地址
Content-Disposition: attachment;filename=aaa.zip 
-- 通知浏览器以附件的形式打开发送过去的数据,是和文件下载相关的头
!!!Set-Cookie:SS=Q0=5Lb_nQ; path=/search 
-- 和Cookie相关的头(后面讲解)
!Expires: -1 
-- 通知浏览器是否缓存
!Cache-Control: no-cache  
-- 通知浏览器是否缓存
!Pragma: no-cache   
-- 通知浏览器是否缓存
-- 之所以一个功能有三个头,是因为历史原因.所以为了网页的兼容性考虑,通常这三个头要一起使用
Connection: close/Keep-Alive   
-- 是否保持连接
Date: Fri, 17 Feb 2017 18:24:11 GMT  
-- 响应时的时间
3.响应实体内容
	 

2.2.3	GET提交和POST提交的区别
GET提交:
(1)会将请求数据拼接在超链接的后面, 可以在地址栏看到, 非常不安全
(2)通过地址栏发送数据, 数据量不能太大(不能超过1KB或者4KB)

POST提交:
(1)会通过请求实体内容将数据发送给服务器, 不是通过地址栏, 相对更安全
(2)通过请求实体发送数据, 数据量理论上没有限制.











猜你喜欢

转载自blog.csdn.net/TomHaveNoCat/article/details/82910755