Web 服务器:APACHE TOMCAT
Tomcat 是一个开源免费的 Web 服务器,它跟 Httpd 一样有处理静态 Html 的能力,除此之外它还是 Servlet 和 Jsp 的容器,通俗地说可以搭载 Java 的 Web 应用。
1. Web 容器和 J2ee 容器的区别
- Web 容器
- 静态的 Html
- 动态的 Jsp 或者 PHP 等
- J2ee 容器
- 符合 J2ee 规范的容器
Tomcat 是一个 Web 容器,同时也是实现了部分 J2ee 规范的服务器。
1.1 J2ee 规范
在我们软件开发的早期,每个公司都是独立的开发自己的软件系统,但是各个系统是有相同的功能的,比如大部分的软件都是要存储数据,后来有了各种数据库,J2ee 给这种数据库连接制定了 Jdbc 规范,MysqL 和 Oracle 这种数据库提供商都是遵从这个规范来实现的,如果我们的代码也是遵从这个标准,那我们的系统假如要从MysqL 换到 Oracle 也是很方便的,不用大量重构代码。除此之外还有大量公用的功能,比如发送邮件等,于是有了建立在 Java 平台的企业级应用解决方案的规范。下面是 Java 官网展示的 J2ee 协议。
Tomcat 版本介绍图:
从 Tomcat 版本的介绍图,我们可以了解到,Tomcat 主要实现了如下 J2ee 规范:
- Servlet
- Jsp
- El
- Websocket
- Jaspic
而且这其中的一些在有些低版本也是没有的,像常见的 Websocket 协议,需要 Tomcat7.x 以上的版本才有,如果你需要用到此功能,就要选择好对的版本。
1.2 Java 代码如何与 Tomcat 合作?
Tomcat 也可称作 Servlet 容器,Servlet 是它与 Java 应用的桥梁,Tomcat 重点解决了 Http 的请求连接,使得 Java 应用可以更专注处理业务逻辑。
Servlet 是一套规范,所以它主要的工作就是定义一些接口,每一个接口解决不同的逻辑功能。请求到达 Tomcat,Tomcat 的 Servlet 齿轮转动(调用)起来,触发了 Servlet 的应用代码。
1.3 Servlet
下面是 Java 的 Servlet 定义的接口,所有的 Servlet 程序都需要继承这个接口。
public interface Servlet {
void init(ServletConfig var1) throws servletexception;
ServletConfig getServletConfig();
void service(ServletRequest var1, ServletResponse var2) throws servletexception, IOException;
String getServletInfo();
void destroy();
}
2. Tomcat 架构介绍
2.1 代码结构
- Server:tomcat的一个实例;
- Service: connector和container的逻辑分组;
- Connector:负责接收请求;
- Container:负责处理请求。
2.2 请求流程
3. 配置
Tomcat 的配置相比 Httpd 和 Nginx 来得简单些,主要就是指定服务器的端口,上下文信息。