Tomcat面试题及答案(99%面试官都会问到)

Tomcat面试题及答案(99%面试官都会问到)-mikechen

Java面试经常考察Tomcat,下面给大家总结了一份Tomcat面试题,包含了常见的Tomcat面试题及答案。

什么是Tomcat?

Tomcat面试题及答案(99%面试官都会问到)-mikechen

Tomcat是应用Java服务器,是一个Servlet容器,是由 Apache开发的一个开源 Java WEB 应用服务器。

 

Tomcat作用

Tomcat作用主要体现如下3个方面:

1.Web运行容器

当我们的Web Project代码开发完成后,需要放到Tomcat中才能跑起来。

举一个最简单的例子,比如:你的网站JSP页面编写好了,如果要运行起来,这个时候就需要有服务器来解释这些脚本语言。

 

2.Servlet容器

Tomcat是一个Servlet容器,除了具有传统的Web服务器的功能,还可以管理Servlet的生命周期

 

3.JSP容器

当用户访问一个JSP页面时,会向Servlet容器,比如向Tomcat发出请求,最后通过数据查询返回结果。

具体如下图所示:

Tomcat面试题及答案(99%面试官都会问到)-mikechen

当有人请求JSP时,服务器内部会经历一次动态资源JSP到静态资源HTML的转化。

 

Tomcat的目录结构

如下图所示:

Tomcat面试题及答案(99%面试官都会问到)-mikechen

  1. bin:存放用于启动和暂停Tomcat的脚本;
  2. conf:存放Tomcat的配置文件;
  3. lib:存放Tomcat服务器需要的各种jar包;
  4. logs:存放Tomcat的日志文件;
  5. temp:Tomcat运行时用于存放临时文件;
  6. webapps:web应用的发布目录;
  7. work:Tomcat把有jsp生成Servlet防御此目录下;

 

Tomcat核心配置?

Tomcat配置如下:

context.xml 用于定义所有Web应用均需要加载的 Context 配置,如果Web应用指定了自己的context.xml,那么该文件的配置将被覆盖
catalina.properties Tomcat环境变量配置
catalina.policy 当 Tomcat在安全模式下运行时,此文件为默认的安全策略配置
logging.properties Tomcat日志配置文件,可通过该文件修改 Tomcat日志级别以及日志路径等
server.xml Tomcat服务器核心配置文件,用于配置 Tomcat的链接器、监听端口、处理请求的虚拟主机等。

(对于我开发人员来说是非常重要)

tomcat-users.xml 用于定义 Tomcat默认用户及角色映射信息,Tomcat的 Manager模块即用该文件中定义的用户进行安全认证
web.xml Tomcat中所有应用默认的部署描述文件,主要定义了基础 Servlet和MIME映射。

如果应用中不包含 Web. xml,那么 Tomcat将使用此文件初始化部署描述,反之,Tomcat会在启动时将默认部署描述与自定义配置进行合并

server.xml是Tomcat服务器核心配置文件。

 

Tomcat工作模式?

Tomcat作为servlet容器,有三种工作模式:

1.独立的servlet容器

servlet容器是web服务器的一部分。

2.进程内的servlet容器

servlet容器是作为web服务器的插件和java容器的实现,web服务器插件在内部地址空间打开一个jvm使得java容器在内部得以运行。

3.进程外的servlet容器

servlet容器运行于web服务器之外的地址空间,并作为web服务器的插件和java容器实现的结合,反应时间不如进程内但伸缩性和稳定性比进程内优。

 

Tomcat有几种部署方式?

1.利用Tomcat的自动部署

把web应用拷贝到webapps目录,Tomcat在启动时会加载目录下的应用。

2.使用Manager App控制台部署

在tomcat主页点击“Manager App” 进入应用管理控制台,可以指定一个web应用的路径,或war文件。

 

3.修改conf/server.xml文件部署

修改conf/server.xml文件,增加Context节点可以部署应用。

4.增加自定义的Web部署文件

在conf/Catalina/localhost/ :路径下增加 xyz.xml文件,内容是Context节点,可以部署应用。

 

Tomcat和Apache区别

Apache不能解释Java程序,比如典型的:JSPServlet等,Apache都不支持。

Apache主要支持支持静态网页,比如:html为代表的静态网页。

tomcat除了支持HTML等静态网页外,还可以支持:JSPVelocityFreeMarker等动态网页请求。

 

Nginx和Tomcat区别

Nginx常用做静态内容服务和代理服务器,直接将外来请求,转发给后面的应用服务器,比如:tomcat等。

Nginx在静态上的功能非常强大,主要直接把外来的请求做分发,不做后端处理。

而Tomcat则是需要做后端处理,比如:使用tomcat用在java后台程序上,让java web泡在里面的应用服务容器。

一句话总结:如果想要使用 Java 程序来动态生成资源内容,就会使用到Tomcat为代表的应用服务器。

 

Tomcat有哪几种Connector运行模式?

Tomcat Connector有三种运行模式:BIO、NIO,、APR模式。

这三种模式的不同之处如下:

1.BIO模式

BIO模式就是:一个线程处理一个请求,缺点:并发量高时,线程数较多,浪费资源。

 

2.NIO模式

利用Java的异步IO处理,可以通过少量的线程处理大量的请求,Tomcat8在Linux系统中默认使用这种方式。

 

3.APR模式

APR即Apache Portable Runtime,从操作系统层面解决io阻塞问题,Linux如果安装了apr和native,Tomcat直接启动就支持apr。

 

以上就是常见的Tomcat面试题及答案,更多的Java面试题及答案,请查看:1000+Java面试题及答案详解

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法