# Tomcat 服务器
# Web 服务器
- 所有的 Web 资源放到在 Web 服务器中;
- Web 服务器是可以供外界访问 Web 资源的一个软件;
- 请求 & 响应:
- 请求:客户端向服务器请求数据;
- 响应:服务器把对应的数据返回给客户端;
- 客户端和服务器之间通过 HTTP 协议来约定请求和响应的格式;
# Java 服务器
- Java 分类:
- Java SE:Java 的标准版,一般用来开发桌面应用程序,但是没什么优势;
- Java EE:Java 的企业版,开发 Web 应用程序;
- 初级用 JSP + Servlet + Javabean 来开发;
- 大型网站用框架来开发 Spring
- Java ME:Java 的微型版,曾用于开发诺基亚手机上的 Java 程序;
- Java EE 规范:
- Java EE 有 13 个技术规范(JDBC, JSP, Servlet, XML, EJB, RMI, JMS, ......)
- sun 公司定义了这些标准,其他公司根据这些标准来做 Java EE 程序;
- 常见 JavaWeb 服务器:
- WebLogic:Oracle 公司的收费服务器,支持 JavaEE 的全部规范;
- WebSphere:IBM 公司的收费服务器,支持 JavaEE 的全部规范;
- Tomcat:Apache 的开源免费的中小型 Web 服务器,支持 JavaEE 的部分规范(Servlet, JSP);
# Tomcat 目录:
- bin:脚本程序
- conf:配置目录
- 其中的 server.xml 是核心配置文件
- lib:依赖库
- logs:日志信息
- temps:临时文件
- webapps:Web 应用发布目录
- 把开发的项目放到该目录中运行
- work:tomcat 处理 jsp 的工作目录
# 启动 Tomcat:
- 进入 bin 目录;
- 运行 startup.sh 脚本启动;
- 运行 shutdown.sh 脚本关闭;
- 相关配置,例如端口,可以在 conf/server.xml 里面去改;
# 手动创建 Web 应用:
- 在 webapps 目录下创建一个目录(例:myApp)
- myApp 目录结构:
- html, jsp, js 文件;
- WEB-INP 目录:
- classes 目录:存放 Java 类字节码文件;
- lib 目录:Java 程序需要的 jar 包;
- web.xml 文件:Web 应用的核心配置文件;
- WEB-INP 目录下的文件都是受保护的,不能被外界直接访问;
# 使用 Eclipse 创建 Web 应用:
- New -> Projects -> Web / Dynamic Web Project;
- 写工程名,选 Tomcat 服务器,选 Tomcat 存放地址;
- 部署版本选 2.5;
- v2.5 版本会自动生成
web.xml
文件;
- v2.5 版本会自动生成
- 完成;
# 项目部署
# 创建服务器
在 Server 下,创建新的服务器:
点击 next,把项目添加进去:
# 发布工程
- 将未发布的工程,发布到 webapps 下面;
- 这部操作,会在 Tomcat 的 webapps 目录下创建一个名称为 <项目名> 的目录;
- 会把 WebContent 当中的所有内容放入到 webapps 目录下的 <项目名> 目录中;
- 不会把你写的 java 源代码放到 webapps 当中,运行只需要字节码;
双击 Server,设置项目部署位置;
右键 Server,点击 Start 启动 Tomcat 服务器;
- 如果端口被占了:
- lsof -i tcp:xxxx
- kill -9 PID
之后就可以在本地的 Tomcat 服务器中的 webapps 目录下看到项目目录了。
在浏览器上可以访问项目了。
# Tomcat 服务器体系结构
- Server:整个 Servlet 容器组合,可以包含多个 Service 服务;
- Service:由一个或多个 Connector,以及一个 Engine 组成,负责处理所有 Connector 所获得的客户请求;
- Connector:负责接收请求,以及向客户端返回响应;
- Engine:处理连接器接收到的请求,将请求流转到对应的 Host 虚拟主机;
- Host:虚拟主机,下面包含多个 Context,将请求交给对应的 Context;
- Context:一个 Context 对应一个 Web Application 应用;
Tomcat 服务器下的 conf
目录下的 server.xml
文件结构就反映出了整个 Tomcat 服务器体系结构。
下图是,本地浏览器访问 Tomcat 服务器时的请求流转。
Host 虚拟主机:
- 输入网址时,会先去 host 文件中查找有没有对应的 ip 地址,如果有就直接访问;
- 如果没有,就会去外网找 DNS 服务器进行域名解析,找到对应的 IP 地址,进行访问;
- 多个域名可以访问同一个 IP;
- 一个 IP 对应一台电脑;
- 通过虚拟主机名不同,可以让用户通过对不同的域名的访问,去使用不同的 Web 应用;