【Tomcat】 # Tomcat基础知识
1. Tomcat
⼀个运⾏JAVA的⽹络服务器,底层是Socket的⼀个程序,它也是JSP和Serlvet的⼀个容器。
2. URL和URI
3. Tomcat目录结构
进入conf 文件夹,查看具体的配置文件:
- server.xml:Tomcat 的主配置文件,包含 Service, Connector, Engine, Realm, Valve, Hosts 主组件的相关配置信息;
- web.xml:遵循 Servlet 规范标准的配置文件,用于配置 servlet,并为所有的 Web 应用程序提供包括MIME 映射等默认配置信息;
- context.xml:所有 host 的默认配置信息;
- logging.properties:日志相关配置;
- tomcat-users.xml:Realm 认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现;
- catalina.policy:Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力,以安全模式启动Tomcat会使用这个配置
- catalina.properties:Tomcat 内部 package 的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制,Tomcat 在启动时会事先读取此文件的相关设置;
- jaspic-providers.xml:用户认证配置文件
4. server.xml 配置
Tomcat 的主配置文件,包含 Service, Connector, Engine, Realm, Valve, Hosts 主组件的相关配置信息;
<!-- port: 接收shutdown指令的端口,默认仅允许通过本机访问,默认为8005;shutdown: 发往此Server用于实现关闭tomcat实例的命令字符串,默认为SHUTDOWN;使用方式: telnet localhost 8005, 输入SHUTDOWN即可关闭tomcat 如果你不配置这两个属性,Tomcat的这种关闭机制还是会运行的。你不想暴露这种关闭机制的话,可以将端口设置成poer=-1,shutdown设置成一个复杂的字符串,比如shutdown="xscdeww#12"-->
<Server port="8005" shutdown="SHUTDOWN"><!-- 默认配置的Listener --><Listener className="org.apache.catalina.startup.VersionLoggerListener" /><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /><!-- 应用于整个服务器的JNDI映射,此可以避免每个Web应用程序都需要在各自的web.xml创建,这在web应用程序以WAR的形式存在时尤为有用。--><GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources><!-- Service是多个Connector和单个Container的组合。Container是一个抽象的概念,由Engine, Realm,Valve和Hosts主组组成。在server.xml配置文件中可以同时配置【【多个Service标签】】--><Service name="Catalina"><!-- 默认情况下,每个连接器connector会使用自己创建的线程池,我们也可以配置多个线程池让连接器共享--><!-- 如果想让连接器connector组件使用这个线程池,需要在连接器组件中配置executor属性.另外,Executor元素的配置应该放在Connector配置的前面,这样才会先加载Executor的配置。Executor的主要属性包括:- name:该线程池的名称id- maxThreads:线程池中最大活跃线程数,默认值200(Tomcat7和8都是)- minSpareThreads:线程池中保持的最小线程数,最小值是25- maxIdleTime:线程空闲的最大时间,当空闲超过该值时关闭线程(除非线程数小于minSpareThreads),单位是ms,默认值60000(1分钟)- daemon:是否后台线程,默认值true- threadPriority:线程优先级,默认值5- namePrefix:线程名字的前缀,线程池中线程名字为:namePrefix+线程编号--><Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="150" minSpareThreads="4"/><!-- Connector是Tomcat中请求接收和响应返回的端点,Tomcat中支持HTTP、AJP和APR等协议。下面的配置定义了一个支持Http协议的连接器,监听8080端口Connector组件支持以下组件的配置:- address:指定连接器监听的地址,默认为所有地址,即0.0.0.0;- port:监听的端口,默认为0;- protocol:连接器使用的协议,默认为HTTP/1.1,定义AJP协议时通常为AJP/1.3;- connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒,默认为60000,即1分钟;- maxThreads:支持的最大并发连接数,默认为200;- redirectPort:如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口;- enableLookups:是否通过request.getRemoteHost()进行DNS查询以获取客户端的主机名;默认为true;- acceptCount:设置等待队列的最大长度;- executor:指定共享的线程池组件;--><Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443"executor="tomcatThreadPool" /><!-- 下面是进行支持Https的配置 --><!--<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"><SSLHostConfig><Certificate certificateKeystoreFile="conf/localhost-rsa.jks" type="RSA" /></SSLHostConfig></Connector><Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"maxThreads="150" SSLEnabled="true" ><UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /><SSLHostConfig><Certificate certificateKeyFile="conf/localhost-rsa-key.pem"certificateFile="conf/localhost-rsa-cert.pem"certificateChainFile="conf/localhost-rsa-chain.pem"type="RSA" /></SSLHostConfig></Connector>--><!-- AJP 1.3 的配置 --><!--<Connector protocol="AJP/1.3"address="::1"port="8009"redirectPort="8443" />--><!-- Tomcat内部有4个级别的容器,分别是Engine、Host、Context和Wrapper。Engine代表全局Servlet引擎,每个Service组件只能包含一个Engine容器组件,但Engine组件可以包含若干Host容器组件 --><Engine name="Catalina" defaultHost="localhost"><Realm className="org.apache.catalina.realm.LockOutRealm"><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/></Realm><!-- 配置虚拟主机,可以配置多个--><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"><!-- 一个Host下面可以有多个Context,也就是可以部署多个Webapp应用,一个webapp对应一个Context,用不同的ContextPath区分 --><Context path="/web1" docBase="E:\blog"/><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host></Engine></Service>
</Server>
5. 虚拟目录
在其他盘符下创建⼀个web站点⽬录,并创建WEB-INF⽬录和⼀个html⽂件。
找到Tomcat⽬录下/conf/server.xml⽂件
在server.xml中的
<Host>
节点下添加如下代码。path表示的是访问时输⼊的web项⽬名,docBase表示的是站点⽬录的绝对路径
<Context path="/web1" docBase="D:\web1"/>
在浏览器输入
localhost:8080/web1/a.txt
就可以直接 查看 D:\web1 下的 a.txt 文件的内容
6. 虚拟主机
在tomcat的server.xml⽂件中添加主机名
- name:访问的主机名
- appBase:本地的映射地址
- unpackWARs:是否解压 war 文件
- autoDeploy:是否自动部署
<Host name="lwclick" appBase="D:\web1" unpackWARs="true" autoDeploy="true"></Host>
访问:
lwclick:8080/web1/test.html
7. 浏览器访问WEB资源的流程图
【Tomcat】 # Tomcat基础知识相关推荐
- 【深入剖析Tomcat笔记】第一篇 基础知识储备
基础知识储备 最近突然在想,做了这么久的WEB相关,像tomcat.apache这些服务器究竟是什么东西,恰好碰到<How Tomcat Works>(中文版<深入剖析Tomcat& ...
- c++ 多个线程操作socket要同步吗_基础知识深化:NIO优化原理和Tomcat线程模型
1.I/O阻塞 书上说BIO.NIO等都属于I/O模型,但是I/O模型这个范围有点含糊,我为此走了不少弯路.我们日常开发过程中涉及到NIO模型应用,如Tomcat.Netty中等线程模型,可以直接将其 ...
- Tomcat:基础安装和使用教程
Tomcat:基础安装和使用教程 Tomcat:基础安装和使用教程 背景 此文记录了 Tomcat 的基本使用方法,主要为了强化记忆. 安装步骤 第一步:下载和安装 Java 下载地址:http:// ...
- Eclipse配置Tomcat超级基础教程
写JAVA期末大作业需要配置Tomcat,写博客记录一下喽.新手小白第一篇博客,大家不喜勿喷鸭.共勉一起进步! 首先介绍一下Tomcat Tomcat下载教程 Eclipse配置Tomcat步骤: T ...
- 超详细的Java面试题总结(四 )之JavaWeb基础知识总结
系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...
- 计算机基础知识的最小集合
码农翻身的老读者们估计要烦了: 老刘真是老了,怎么老是在这里啰嗦计算机基础? 没办法,问的人特别多, 我还是要再啰嗦一次,希望这是最后一次. 很多人工作后痛感计算机基础知识的缺乏, 那计算机基础知识都 ...
- 你觉得什么才是 Java 的基础知识?
近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...
- 那些让你起飞的计算机基础知识
有网友问道:"欣哥,你的知识框架中最基础的点是哪些?或者哪方面是比较重要的?" 我看到这个问题一下子愣了,是啊,很多人都深有体会,都觉得基础知识重要,但是具体来说,哪些点重要呢? ...
- Spring框架基础知识
本人博客文章网址:https://www.peretang.com/basic-knowledge-of-spring-framework/ Spring框架简介 Spring , 一个开源的框架 , ...
- IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token
1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动端IM)的数据流交换方式都是Http短连接+TCP或UDP长连接来实现.Http短连接主要用于从服务器读取各种持久化信息 ...
最新文章
- Redis 高级教程 Redis 基准(3)
- 算法笔记1-最大子序列和问题的求解
- html5 规定input域,html5中关于input用法
- PHP-代码审计-SQL注入
- 框架和库的区别_框架和库之间的区别
- python 文件名随自变量变化_Python 求解自行车前后轮轨迹问题
- IT程序员们平时都喜欢逛什么论坛呢?
- 20191127_朴素贝叶斯多分类
- HDOJ2003求绝对值
- MySql事务及ACID实现的原理
- 论文文献引用格式总结整理
- 算24点的一般方法及例题
- 读书笔记(VII) 人生五大问题
- java数字音频最强教程之如何检测一段音频中是否有声音
- 板书比赛计算机,清华老师们的板书惊艳朋友圈!8个板书技巧让黑板亮起来!...
- 历史性时刻,Python要成为TIOBE编程语言榜首?
- CAD打开文件一直转圈圈什么情况?如何能彻底解决?
- java y z x_表示关系 X=Y=Z 的 JAVA 语言表达式为_机械工程材料及热处理答案_学小易找答案...
- Microsoft 365 - 如何查看OneDrive使用空间和剩余空间?
- 中图法检索计算机科学方面,千兆位以太网中可以使用超5类UTP双绞线。【
热门文章
- hbw-utils - GsonUtils
- C语言计算机二级/C语言期末考试 刷题(二)
- Android 中的“后台无效动画“行为分析
- CKeditor 编辑器使用记录 (CKeditor 4 and 5 )
- 房屋租赁合同违约怎么赔偿
- 嵌入式Linux的低功耗策略研究[转]
- 嵌入式Linux的低功耗策略
- 【黑金ZYNQ7000系列原创视频教程】07.自定义IPmdash;mdash;定制RTC IP实验
- 项目管理 : 如何成为合格的项目经理
- 张凯龙 西北工业大学计算机学院,西北工业大学计算机学院研究生不在校管理规定...