Tomcat入门学习
什么是Tomcat

什么是tomcat?在我们学习javaweb的时候就已经认识了这个老家伙,并且不出意外会伴随你的整个javaweb生涯,所以认真的了解tomcat还是有很大的必要的,简单的说tomcat是一个可以运行Servlet和JSP的容器,实现了对于Servlet 、JSP 和EL 等特性的支持,我们编写的servlet程序可以通过tomcat来实现web页面的访问
Tomcat是如何工作的

- 用户通过客户端浏览器(Chrome,FireFox,IE浏览器)发起请求
- 通过DNS域名解析服务解析到对应服务器的IP地址,并且请求到绑定端口(比如8080端口)的tomcat
- tomcat根据请求路径找到对应的webApp以及对应的Servlet(url-mapping)
- 对应的Servlet通过请求过来的request执行用户编写的servlet实现,返回response
- 用户浏览器收到response后,渲染页面
Tomcat的目录

如上是tomcat9的目录,其中
- bin目录,主要存放一些可执行文件,比如常用到的startup.bat,shutdown.bat等等
- conf目录,主要存放一些配置文件,server.xml,tomcat-users.xml,context.xml 其中最重要的server.xml,主要设置tomcat的端口,编码等等
- lib目录,主要存放tomcat运行依赖的共有的jar包,比如大家很熟悉的servlet-api等等
- logs目录,主要是存放tomcat运行期间产生的日志信息,包括异常信息
- temp目录,主要存放tomcat运行时的一些临时文件
- webapps目录,这个目录很重要,里面每一个目录都是一个项目,我们平常写的项目也都是放在这个目录下面,默认这个目录自带了ROOT,manager,host-manager,examples,docs这几个项目其中ROOT目录是直接映射请求,比如localhost:8080/index.html 就是直接请求的ROOT目录的项目,localhost:8080/manager/test, 请求的是manager这个项目,localhost:8080/examples/test,请求的是examples这个目录,依次类推我们自己的项目请求路径
- work目录,主要存放一些jsp文件编译后生成的.class文件,可以删除改目录,下次启动会自动生成,有时候jsp修改不生效,可能就是这个目录生成的class未更新导致的,可删除改目录来解决
自己写一个WEBAPP来访问
在webapps目录下面新建一个testApp目录,在testApp目录下新建一个index.html文件,记住index.html扩展名是.html,不要新建成了index.html.txt,可以通过调整文件夹选项来识别
WIN10 可通过 查看->选项 来设置,去掉 隐藏已知文件类型的扩展名即可


启动tomcat,进入tomcat的bin目录,双击startup.bat,出现dos命令框即可



如上显示 startup in *** milliseconds 即表示启动成功,由于我是下载的tomcat是默认配置,所以直接访问 localhost:8080/testApp/index.html 即可

常用的配置修改
常用的配置都存放在conf目录,在conf目录我们可能会用到的修改,主要包含如下几个配置文件
-
logging.properties ,该配置文件主要用来修改tomcat运行时的日志打印配置,设置tomcat日志打印的级别,编码,以及对应的日志处理器
-
server.xml ,核心配置项,覆盖了tomcat运行时需要的核心组件,比如协议支持,IO更改,引擎,连接器,运行端口,线程池大小,连接超时,访问用户组配置等等,如修改端口,直接修改port数值即可,这里不做多介绍,有兴趣可以看下tomcat架构解析这本书,可以对tomcat有更深入的了解
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> tomcat启动端口8080 <Server port="8005" shutdown="SHUTDOWN"> tomcat关闭监听端口 -
tomcat-users.xml ,主要可以通过该配置文件为tomcat添加管理员权限的登录用户,当启动tomcat后访问manager项目可以直接对tomcat中运行的项目进行关闭重启等等,但是manager项目是需要登录才能够进行操作的,登录就需要涉及到用户权限配置,tomcat-users.xml就是用来配置这个用户的,当然也可以配置其他的应用