Tomcat
Tomcat是由Sun的软件架构师詹姆斯·邓肯·戴维森开发,是一个轻量级的JSP/Servlet容器,可以用于中小型项目中的开发和调试,也有用于生产环境的
下载地址https://tomcat.apache.org/download-10.cgi
Yum方式安装:
1)yum install tomcat -y #安装tomcat主程序
2)yum install -y tomcat-admin-webapps tomcat-docs-webapp tomcat-webapps #安装tomcat对应的页面
3)mkdir /var/lib/tomcat/webapps/{ROOT,test}/{WEB-INF,META-INF,classes,lib} pv #创建页面所需要的工作目录
功能: 运行servlet和jsp,处理html页面
内部基本原理: 底层通过建立socket连接池来实现对请求的接收和响应 !
Tomcat的目录树
Tomcat配置
tomcat的配置文件构成:
server.xml : 主配置文件;
web.xml : web应用程序描述文件,可以设置tomcat支持的文件类型,都是关于是web应用程序的配置文件
context.xml :可以用来配置数据库之类的信息
tomcat-users.xml :用户认证的账号和密码文件;角色(role),用户(user);此文件在tomcat启动时被装入内存;
catalina.policy :当使用-security选项启动tomcat时,用于为tomcat设置安全策略;
catalina.properties :java属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数;
logging.properties :日志系统相关的配置;
conf/server.xml中查找有效的连接子配置
<Connector port="8080端口号" protocol="HTTP/1.1所支持的协议版本"
connectionTimeout="20000连接超时配置,单位为ms" redirectPort="8443" />
Tomcat的架构
Tomcat支持Servlet和JSP的规范,它由一组嵌套的层次和组件组成,一般可分为以下四类:
- 顶级组件:位于配置层次的顶级,并且彼此间有着严格的对应关系
- 连接器:连接客户端(可以是浏览器或Web服务器)请求至Servlet容器
- 容器:包含一组其它组件
- 被嵌套的组件:位于一个容器当中,但不能包含其它组件;
Tomecat常见组件
1、服务器server:Tomcat的一个实例,通常一个JVM只能包含一个Tomcat实例;因此,一台物理服务器上可以在启动多个JVM的情况下在每一个JVM中启动一个Tomcat实例,每个实例分属于一个独立的管理端口。这是一个顶级组件。
2、服务service:一个服务组件通常包含一个引擎和与此引擎相关联的一个或多个连接器。给服务命名可以方便管理员在日志文件中识别不同服务产生的日志。一个server可以包含多个service组件,但通常情下只为一个service指派一个server。
3、连接器connectors:负责连接客户端(可以是浏览器或Web服务器)请求至Servlet容器内的Web应
用程序,通常指的是接收客户发来请求的位置及服务器端分配的端口。默认端口通常是HTTP协议的
8080,管理员也可以根据自己的需要改变此端口。一个引擎可以配置多个连接器,但这些连接器必须使
用不同的端口。默认的连接器是基于HTTP/1.1的Coyote。同时,Tomcat也支持AJP、JServ和JK2连接
器。
容器类组件
4、引擎Engine:引擎通是指处理请求的Servlet引擎组件,即Catalina Servlet引擎,它检查每一个请求的HTTP首部信息以辨别此请求应该发往哪个host或context,并将请求处理后的结果返回的相应的客户端。
5、主机Host:主机组件类似于Apache中的虚拟主机,但在Tomcat中只支持基于FQDN的“虚拟主机”。一个引擎至少要包含一个主机组件。
6、上下文Context:Context组件是最内层次的组件,它表示Web应用程序本身。配置一个Context最主要的是指定Web应用程序的根目录,以便Servlet容器能够将用户请求发往正确的位置。Context组件也可包含自定义的错误页,以实现在用户访问发生错误时提供友好的提示信息。
7、阀Valve:用来拦截请求并在将其转至目标之前进行某种处理操作,类似于Servlet规范中定义的过滤器。
8、日志记录器Logger:用于记录组件内部的状态信息,可被用于除Context之外的任何容器中。
9、领域Realm:用于用户的认证和授权;在配置一个应用程序时,管理员可以为每个资源或资源组定义角色及权限,而这些访问控制功能的生效需要通过Realm来实现。Realm的认证可以基于文本文件、数据库表、LDAP服务等来实现。Realm的效用会遍及整个引擎或顶级容器,因此,一个容器内的所有应用程序将共享用户资源。同时,Realm可以被其所在组件的子组件继承,也可以被子组件中定义的Realm所覆盖。
Tomcat版本号
Tomcat服务器接受客户请求并做出响应的过程如下:
1)客户端(通常都是浏览器)访问web服务器,发送HTTP请求。
2)Web服务器接收到请求后,传递给servlet容器。
3)Servlet容器加载servlet,产生servlet实例后,向其传递表示请求和响应的对象。
4)Servlet实例使用请求对象得到客户端的请求信息,然后进行相应的处理
5)Servlet实例将处理结果通过响应对象发送回客户端,容器负责确保响应正确送出,同时将控制返回给web服务器。