tomcat 安装、配置
- 版本:tomcat7 要求 JDK6 以上
- JAVA_HOME 环境变量
- 指定 tomcat 启动时使用的 JDK 所在的位置
- tomcat 服务器程序本质上也是由 Java 编写的程序,所以想要运行 tomcat 得要 JDK
- Catalina_HOME 环境变量
- 指定 tomcat 在启动时启动哪个 tomcat,一般不推荐配置
- 如果有多个 tomcat,无论双击哪个 tomcat 目录下的
startup.bat
,都会默认启动 Catalina_HOME 环境变量配置的那个 tomcat
- 启动/关闭 tomcat
- 端口问题
- tomcat 默认监听在 8080 端口
- 端口被占用:
netstat -ano
命令,查看占用端口的进程 pid,再用任务管理器关闭
- tomcat 默认监听在 8080 端口
tomcat 目录结构
- bin:存放启动和关闭 bat 文件(批处理文件) 所在的目录
- lib:tomcat 运行时所需要的 jar 包所在目录
- conf:配置文件所在目录
- logs:日志文件所在的目录
- temp:tomcat 运行时产生的临时文件所存放的目录- webapps:开发中最常用的目录,web 应用放置在此目录下
- work:tomcat 运行时产生的工作文件存放在这个目录下
虚拟主机、web 应用
虚拟主机
一个 tomcat 可以认为是一台真实主机。在一台真实主机中可以配置多个站点,这些站点在访问者看来访问他们就像在访问各自独立的主机一样,所以我们可以认为这些站点都运行在 tomcat 这台真实主机当中的各自的虚拟主机当中。一个网站就可以认为是一个虚拟主机。
tomcat 装好之后,他默认自带一个虚拟主机,查看 tomcat/config/server.xml:
配置虚拟主机
- 在 conf/server.xml 中
<Engine>
下嵌入<Host>
就可以为 tomcat 增加一台虚拟主机
- name:虚拟主机的名称,browser通过这个名称访问该虚拟主机
- appBase:虚拟主机管理的目录,放置在这个目录下的 web应用 会被当前虚拟主机自动加载
- 由于浏览器访问地址时,需要将地址翻译为对应的 IP 才能找到服务器,这其中翻译的过程是由 DNS 服务器实现的。我们在做实验的时候无法修改 DNS 服务器,但此时可以通过修改 "C:\\Windows\\System32\\drivers\\etc\\hosts" 文件来模拟 DNS 的功能,从而完成实验
- 效果演示
缺省虚拟主机
如果你有多个虚拟主机都运行在 tomcat 里,那当浏览器敲任一虚拟主机名时,tomcat 都能找到对应的虚拟主机为其服务。
那么如果没通过域名,而是通过 IP 进行访问,这时服务器无法辨别当前要访问的是哪台虚拟主机的资源,会去访问默认虚拟主机。
缺省虚拟主机在 server.xml 中 <Engine>
中配置:
web 应用
一个虚拟主机中会有大量的 web 资源,但是 web 资源不能直接交给 web 资源来管理,而是要按照一定方式组织成 web 应用。一般来说会按照功能进行组织:将某一个功能相关的所有 web 资源组织成一个 web 应用后再交给虚拟主机。
配置 web 应用给 Host
同时用这 3 种方式各配置一个 web 应用,且均设置为缺省 web 应用,那么优先级顺序为:[1] > [2] > [3]
Context 元素常用属性
web 应用组织结构
- 开发 web 应用时,不同类型的文件有严格的存放规则,否则不仅可能会使 web 应用无法访问,还会导致 web 服务器启动报错。
- 以 news 为例:
- 为 web 应用 配置一个主页
B/S 交互图
Tips
- 地址栏敲:"http://localhost:8080/" 直接就可以访问到那只猫,但当查看 "webapp/ROOT/WEB-INF/web.xml" 时,却发现并没有配置主页,那么,我们是怎么看见那只猫的?→ 查看 conf/web.xml
- 为什么 web 应用会去查看 web.xml 文件中的配置
- tomcat服务器的管理平台
- 在"webapp/ROOT/index.html"中,有一个超链接叫 [Tomcat Manager]
- 登陆时使用的用户名密码是需要配置的,在"conf/tomcat-users.xml"中进行配置
- tomcat 体系架构(对应server.xml)
- 压缩web应用
- 如何压缩
- CMD 处于要压缩的web应用的目录下,使用
jar -cvf 目标压缩文件名.waz *
- 直接右键压缩成zip之后,修改 ".zip" 为 ".war"
- CMD 处于要压缩的web应用的目录下,使用
- 上传到虚拟主机的管理目录后,虚拟主机默认情况下,自动就会解压这个 war 包
- 作用:减少 web 应用的体积,方便传输。并且,在虚拟主机管理的目录下,war 默认可以自动解压
- 如何压缩
HTTP 协议
概述
- HTTP 全称 HyperText Transfer Protocol(超文本传输协议),是 TCP/IP 协议的一个应用层协议
- HTTP 协议基于请求-响应模型
- 定义 WEB-Browser 与 WEB-Server 之间交换数据的格式,过程
- 请求只能由 Client 发出,Server 只能被动的等待请求,返回响应
- 版本
- [HTTP1.0] 建立连接后,只能获得一个 web 资源,响应过后连接立即断开
- [HTTP1.1] 建立连接后,一个连接上获取多个 web 资源,响应过后连接会保持一段时间后
- [HTTP1.0] 建立连接后,只能获得一个 web 资源,响应过后连接立即断开
HTTP 请求
请求行
如:GET /books/java.html HTTP/1.1
- 请求方式:HEAD/OPTIONS/DELETE/TRACE/PUT 没用过,主要用 POST/GET(区别在于:请求参数在传递过程中方式不同)
- POST
- 请求参数将会在 HTTP 请求的实体内容中进行传输
- 数据大小没有限制
- 只有在利用 FORM 表单提交数据时,FORM 表单明确表明使用 "POST" 方式提交
- GET
- 请求参数将会附加在请求的URL后面作为请求地址的一部分带到服务器端
- 可以传输的数据大小有限制,一般不允许超过 1KB
- 除此以外的所有方式的请求参数都是 GET 提交
- POST
- 请求的资源部份的名称
- 所遵循的协议版本
请求头
HTTP 响应
状态行
HTTP版本号 状态码 原因叙述
如:HTTP/1.1 200 OK
状态码 —— 用来表示本次请求的处理结果的代码
响应头
之所以 3 个头是相同功能,是因为不同的 browser 对这 3 个头支持的不同,一般来说这个 3 个头要同时使用以确保不同 browser 都能实现控制缓存的功能。