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 &quot;%r&quot; %s %b" /></Host></Engine></Service>
</Server>

5. 虚拟目录

  1. 在其他盘符下创建⼀个web站点⽬录,并创建WEB-INF⽬录和⼀个html⽂件。

  2. 找到Tomcat⽬录下/conf/server.xml⽂件

  3. 在server.xml中的 <Host> 节点下添加如下代码。

    path表示的是访问时输⼊的web项⽬名docBase表示的是站点⽬录的绝对路径

    <Context path="/web1" docBase="D:\web1"/>
    

    在浏览器输入 localhost:8080/web1/a.txt 就可以直接 查看 D:\web1 下的 a.txt 文件的内容

6. 虚拟主机

  1. 在tomcat的server.xml⽂件中添加主机名

    • name:访问的主机名
    • appBase:本地的映射地址
    • unpackWARs:是否解压 war 文件
    • autoDeploy:是否自动部署
    <Host name="lwclick" appBase="D:\web1" unpackWARs="true" autoDeploy="true"></Host>
    
  2. 访问:lwclick:8080/web1/test.html

7. 浏览器访问WEB资源的流程图

【Tomcat】 # Tomcat基础知识相关推荐

  1. 【深入剖析Tomcat笔记】第一篇 基础知识储备

    基础知识储备 最近突然在想,做了这么久的WEB相关,像tomcat.apache这些服务器究竟是什么东西,恰好碰到<How Tomcat Works>(中文版<深入剖析Tomcat& ...

  2. c++ 多个线程操作socket要同步吗_基础知识深化:NIO优化原理和Tomcat线程模型

    1.I/O阻塞 书上说BIO.NIO等都属于I/O模型,但是I/O模型这个范围有点含糊,我为此走了不少弯路.我们日常开发过程中涉及到NIO模型应用,如Tomcat.Netty中等线程模型,可以直接将其 ...

  3. Tomcat:基础安装和使用教程

    Tomcat:基础安装和使用教程 Tomcat:基础安装和使用教程 背景 此文记录了 Tomcat 的基本使用方法,主要为了强化记忆. 安装步骤 第一步:下载和安装 Java 下载地址:http:// ...

  4. Eclipse配置Tomcat超级基础教程

    写JAVA期末大作业需要配置Tomcat,写博客记录一下喽.新手小白第一篇博客,大家不喜勿喷鸭.共勉一起进步! 首先介绍一下Tomcat Tomcat下载教程 Eclipse配置Tomcat步骤: T ...

  5. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  6. 计算机基础知识的最小集合

    码农翻身的老读者们估计要烦了: 老刘真是老了,怎么老是在这里啰嗦计算机基础? 没办法,问的人特别多, 我还是要再啰嗦一次,希望这是最后一次. 很多人工作后痛感计算机基础知识的缺乏, 那计算机基础知识都 ...

  7. 你觉得什么才是 Java 的基础知识?

    近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...

  8. 那些让你起飞的计算机基础知识

    有网友问道:"欣哥,你的知识框架中最基础的点是哪些?或者哪方面是比较重要的?" 我看到这个问题一下子愣了,是啊,很多人都深有体会,都觉得基础知识重要,但是具体来说,哪些点重要呢? ...

  9. Spring框架基础知识

    本人博客文章网址:https://www.peretang.com/basic-knowledge-of-spring-framework/ Spring框架简介 Spring , 一个开源的框架 , ...

  10. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

    1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动端IM)的数据流交换方式都是Http短连接+TCP或UDP长连接来实现.Http短连接主要用于从服务器读取各种持久化信息 ...

最新文章

  1. Redis 高级教程 Redis 基准(3)
  2. 算法笔记1-最大子序列和问题的求解
  3. html5 规定input域,html5中关于input用法
  4. PHP-代码审计-SQL注入
  5. 框架和库的区别_框架和库之间的区别
  6. python 文件名随自变量变化_Python 求解自行车前后轮轨迹问题
  7. IT程序员们平时都喜欢逛什么论坛呢?
  8. 20191127_朴素贝叶斯多分类
  9. HDOJ2003求绝对值
  10. MySql事务及ACID实现的原理
  11. 论文文献引用格式总结整理
  12. 算24点的一般方法及例题
  13. 读书笔记(VII) 人生五大问题
  14. java数字音频最强教程之如何检测一段音频中是否有声音
  15. 板书比赛计算机,清华老师们的板书惊艳朋友圈!8个板书技巧让黑板亮起来!...
  16. 历史性时刻,Python要成为TIOBE编程语言榜首?
  17. CAD打开文件一直转圈圈什么情况?如何能彻底解决?
  18. java y z x_表示关系 X=Y=Z 的 JAVA 语言表达式为_机械工程材料及热处理答案_学小易找答案...
  19. Microsoft 365 - 如何查看OneDrive使用空间和剩余空间?
  20. 中图法检索计算机科学方面,千兆位以太网中可以使用超5类UTP双绞线。【

热门文章

  1. hbw-utils - GsonUtils
  2. C语言计算机二级/C语言期末考试 刷题(二)
  3. Android 中的“后台无效动画“行为分析
  4. CKeditor 编辑器使用记录 (CKeditor 4 and 5 )
  5. 房屋租赁合同违约怎么赔偿
  6. 嵌入式Linux的低功耗策略研究[转]
  7. 嵌入式Linux的低功耗策略
  8. 【黑金ZYNQ7000系列原创视频教程】07.自定义IPmdash;mdash;定制RTC IP实验
  9. 项目管理 : 如何成为合格的项目经理
  10. 张凯龙 西北工业大学计算机学院,西北工业大学计算机学院研究生不在校管理规定...