Tomcat下载安装
官网:https://tomcat.apache.org/download-90.cgi (这里是tomcat9的地址)
目录结构
- bin:存储一些可执行的文件,包括tomcat的启动和停止。
- conf:配置文件
- lib:运行时需要依赖的jar包
- logs:运行时的日志文件
- temp:运行时的临时文件
- webapps:项目发布目录,里面一个文件夹代表一个web应用,里面的root是根应用。
- work:工作目录
启动&关闭tomcat
- 启动:startup.sh
- 关闭:shutdown.sh
- 启动成功后,打开浏览器访问本地的8080端口
- 创建一个hello文件夹,再创建一个html文件,访问自己创建的应用
Idea配置tomcat发布项目
- 首先创建一个普通的Java项目MyWeb
- 然后配置tomcat如下图:
- 项目名右键点击如下,然后勾选Web项目进行创建:
- 配置Deployment
- 项目就添加完成了,下面的Application context表示虚拟路径,你可以改成"/",不写项目名,这样在后面开发测试时就不用频繁的填写路径了,当然不一定要改,个人喜好.点击OK,配置部分完成
- 运行后就会成功发布项目
- 显示index.jsp中的内容
通过war包发布项目
- 打包命令:在项目的web目录下执行 jar -cvf myweb.war . ( . 代表当前路径)
- 将打好的war包复制到tomcat的webapp目录下
- 启动tomcat服务,自动解压war包
- 验证结果
- 放到webapp下
- 启动tomcat后自动将war包进行解压
- 验证
tomcat配置文件
主配置文件 Server.xml
- 更改端口号 Connector
tomcat配置虚拟目录
前面tomcat只能发布webapp下的项目,但是通过配置虚拟目录,可以发布任意目录下的项目。
- 编辑Server.xml,找到标签
- 加入以下内容
- path: 地址栏中输入的路径 比如localhost:8080/my
- docBase: 项目的地址 如:/User/wunan/my
Tomcat处理一个请求的过程
假设来自客户的请求为:http://localhost:8080/wsota/wsota_index.jsp
- 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
- Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
- Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
- Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
- localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
- Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
- path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet
- Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
- 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
- Context把执行完了之后的HttpServletResponse对象返回给Host
- Host把HttpServletResponse对象返回给Engine
- Engine把HttpServletResponse对象返回给Connector
- Connector把HttpServletResponse对象返回给客户browser