Tomcat知识点
Tomcat介绍
在idea中导入tomcat源码
先将源码赋值到工程目录下,然后建立pom.xml文件,最后在idea的最右边点击maven,再点击+号,然后选上那个pom.xml文件,就成功导入了
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.tomcat</groupId>
<artifactId>Tomcat8.5</artifactId>
<name>Tomcat8.5</name>
<version>8.5</version>
<build>
<finalName>Tomcat8.5</finalName>
<sourceDirectory>java</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<resources>
<resource>
<directory>java</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>test</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>4.5.1</version>
</dependency>
</dependencies>
</project>
-Dcatalina.home=/Users/zhewanzhan/Downloads/chromeDownload/zhan_tomcat/apache-tomcat-8.5.56-src/home
-Dcatalina.base=/Users/zhewanzhan/Downloads/chromeDownload/zhan_tomcat/apache-tomcat-8.5.56-src/home
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=/Users/zhewanzhan/Downloads/chromeDownload/zhan_tomcat/apache-tomcat-8.5.56-src/home/conf/logging.properties
HTTP工作方式
浏览器只能解析html,css,js等静态资源,而像jsp等动态资源是无法解析的
Servlet容器的结构,主要是4种容器,并且是父子关系
tomcat启动流程源码解析
因为Tomcat中的每个组件都存在生命周期中的初始化,开始,停止,摧毁方法,所以将各个组件中的这些方法提取出来,变成一个接口叫lifecycle
请求处理流程
刚开始主要是连接器部分,然后是Servlet容器部分
连接器主要是EndPoint,processor,CoyoteAdapter 这3部分
Servlet容器主要是 Engine, Host, Context Wrapper 这4个父子容器部分
tomcat的请求处理流程
Jasper组件介绍
也就是说浏览器解析的页面不能包含任何的JAVA代码
关于index_jsp.java的解读
Tomcat服务器配置
通过上面的参数在server.xml配置之后,在线程池中就会有100个核心线程生成
server.xml中的连接器Connector配置
一个引擎下面配置多个host
用这个switchhost可以配置你自己定义的www.xxxx.com解析为哪个具体的ip地址
此时用www.tomcat.com:8080访问即可得到下面这个页面
用oa.tomcat.com:8080访问即可得到下面这个页面
Context标签是host标签的一个子标签
里面有docBase属性和path属性
docBase属性是项目应该放在的目录下面
path属性是访问时的路径地址
Web应用配置
会话配置session Cookie
web.xml中配置这个session会话,那么当浏览器第一次访问的时候,服务器就会给浏览器传回一个cookie,而这个cookie的键就是cookie-config里 面的 name 标签,这里设置的是JESSIONID
Servlet配置
默认没有配置load_on_startup ,就表示是小于0 的,只在访问的时候加载
此时我们在Servlet中的初始化方法init中打印一条语句
结果发现,Tomcat启动时,并没有打印这句话,而是在第一次访问的时候加载了这句话
当我们在web.xml中配置了之后
则在Tomcat启动的时候,就会打印这句话
根据错误的状态码 来选择跳转到哪个HTML页面
Tomcat管理配置
JVM配置
Tomcat集群
通过Ip_hash策略就可以让同一个用户一直访问同一个Tomcat服务器
tomcat数量较少时可以用这种广播的方式,但是如果数量较大,那广播就会特别浪费资源
单点登录
Tomcat安全
https在性能上考虑了加密和解密,有一系列的复杂计算,因此性能没http好