栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

tomcat相关介绍(请求解析&部署方式&监听)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

tomcat相关介绍(请求解析&部署方式&监听)

tomcat的相关介绍我之前的文章里面已经介绍了一部分,文章连接如下,有感兴趣的可以去看看

tomcat目录介绍&session持久化_小阿飞_的博客-CSDN博客

tomcat结构&启动&详介_小阿飞_的博客-CSDN博客

目录

网址请求的处理流程

tomcat常见三种部署方式

1、在部署目录部署war包 

2、通过server.xml部署

3、独立部署文件

web监听器的类型


网址请求的处理流程

你知道在浏览器的网址栏输入一个网址后在tomcat中会得到怎样的处理吗? 

动态web项目网址:http://localhost:8080/demo/books

在server中的Connector中解析过程:网址中的端口号8080(相当于门牌号)通过Endpoint解析、网址协议http1.1通过protocalProcess解析,然后再由CoyoteAdaper生成request,response对象、再访问Connector之外server中的引擎

在Mapper中(存在于server中)的解析过程:主机Host中解析域名/主机名、Context(上下文,这里为发布的项目)中解析项目名称、 Wrapper中先执行过滤器链Filter Chain中的所有过滤操作然后再执行项目中相关的servlet

Filter Chain过滤器链执行过一个项目中所有的filter过滤操作的顺序可以在项目中的web.xml文件中进行调整,比如,中文文字编码的过滤操作就要放在第一个执行,以免出现中文乱码情况

上图中还有一个问题值得注意:

就是当servlet中的代码如果定义了成员变量(比如 int i = xx),那么就容易出现多线程中的高并发问题,即当一个线程还在调用成员变量i的相关方法时,servlet中又接着了迎来一个又一个线程,改变了成员变量i的值引发报错

由于篇幅有限,刚才是分开讲解,这是总流程图

tomcat常见三种部署方式

1、在部署目录部署war包 

这种方式部署最简单,也是在最常用的一种方式,如:在tomcat的server.xml文件中有如下配置:


   ......

此文件说明虚拟服务器localhost,使用webapps作为部署目录,只要将war包部署在该目录中即可完成部署

unpackWARs参数表示,tomcat会对部署在webapps目录中的war文件自动解压,如果为false,则不执行自定解压,但会影响程序的运行效率,

autoDeploy表示自动部署,即热部署

注:这种方式也可以直接部署文件夹,但要求部署的文件夹要符合web目录的标准,将项目打war包的方式在tomcat中部署的方式在tomcat第一篇文章中讲过了:tomcat目录介绍&session持久化_小阿飞_的博客-CSDN博客

2、通过server.xml部署

即在server.xml中填写上项目名称和项目中webapps的路径


 webapps的路径查看方式

首先在项目中的webapps上右键点击最后一项: 

如何就可以再Location后查看到相关路径了~~~///(^v^)\~~~ 

但是这种方式需要修改server.xml,不建议使用

3、独立部署文件

首先来到tomcat中的 confCatalina目录,然后再依据虚拟服务器名称一致的方式,创建一个目录(如:localhost),然后在localhost文件夹中创建一个xml文件,再在xml文件中编写项目部署的代码如下:(path是项目名称,doBase是项目中webapps的路径)

web监听器的类型
  • ServletContextListener 监听Context对象的创建与销毁,Context即web应用
  • ServletContextAttributeListener 监听在Context中发生增加,更新,删除对象的事件
  • HttpSessionListener 监听session对象的创建与销毁
  • HttpSessionAttributeListener 监听在session中发生的增加,更新,删除对象的事件
  • ServletRequestListener 监听request对象的创建
  • ServletRequestAttributeListener 监听在session中发生的增加,更新,删除对象的事件

以上6中监听器,需要在web.xml中进行配置,除以上6种监听器还有下面两种监听器:

  • HttpSessionBindingListener  当对象被放入session里执行valueBound,被移除时执行valueUnbound
  • HttpSessionActivationListener 服务关闭时可以使用该监听器将session数据持久化到磁盘,服务重启会session数据会从磁盘重新加载

以上两个监听器主要用于对session内对象的监听, 与上面的6中监听器不同的是,这两种监听器虽然需要实现对应的Listener接口,但不用在web.xml中配置。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980672.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号