Tomcat,https和htt,request流程,常见的Tomcat部署方式

哈喽,大家好,我又来了哦,今天我们在来学习一下Tomcat,主要从Tomcat的部署方式和请求处理的流程方面来学习!

http和https协议的区别,非对称加密:

首先来讲,http是不收费的,但https因为要加密是会收费,采用的加密方式为非对称式加密,SSlEnabled在上世纪七十年代由美国数学家发明,https的加密是通过两个阶段,第一个阶段为协商阶段,两方先确定秘钥,然后通过秘钥解密加密的数据, 不过在数据传输过程中,秘钥也有可能被截获,但由于我们走的是非对称是加密 ,第二个阶段是解密阶段,一旦在秘钥生成的时候会生成俩个秘钥,一个是公钥,一个是私钥,使用私钥加密的数据无法用私钥解密,必须使用公密解密,也就是说自己加密的的数据自己无法解密,必须要对方的公钥或者私钥解密,通过我的公钥加密的数据,在大家都有公钥的情况下,别人无法使用公钥来解密,必须通过你的传输对象的私钥来解密。 考虑到我们私钥被破解的可能,所以我们加密是会重新加密的,在 你本次完成后,下一次数据传输又是另外一个秘钥了,所以你破解也没有用,第一个是你很难破解,第二个你破解了这个对应的秘钥也就失效了。不过在我们非对称加密也会面临一个问题,速度慢,而在对称加密中,速度就会相应快一点,最后,公钥是要通过一些单位机构颁发证书来得到的。

请求的一个处理流程

请求发起
http://localhost:8080/demo01/demo
server
mapper

流程图

具体的过程怎样的呢?

由你的URL访问发起请求,然后这个请求被你访问的URL的端口endpoint所获取8080,端口号接到的数据都是字节流,然后去找到http1.1协议处理器protocalprocess,然后解析数据,然后把数据给到coyoteadapter胶囊,构建好requestresponse,然后去到引擎engine,引擎去找mapper中的host虚****拟主机,然后通过URL
找到项目名context,然后找到servlet,但servlet不是直接部署在容器里的,会有一个包装器将它包起来,在包装器里面首先是过滤器-filter,在我调用servlet之前会先调用filter,例如先字符过滤器,然后没有问题后在到我的servlet,最后在把数据进行一个返回,如果我没有过滤器,那我直接去调用servlet。

问题:在这里遇到一个问题,过滤器的执行顺序,在Tomcat中有一个特点,无论在那个地方,只要调用了getParameter()这个方法,就会吧所有的数据都请求过里啊,而且如果你的字符编码在这个过滤器之后,是不是就会产生乱码,所以我们会问到,那过滤器的执行顺序是怎样的?如下图所示,它的执行顺序即是你在编写的时候的顺序,所以我们在编写的时候要自己注意了啊!!!
图片servlet
在servlet执行完之后,实例化的实例是几个呢?默认情况下是一个,但如果在servlet中我定义了一个成员变量呢?这个变量就会在线程上变成不安全的,因为一旦我的并发量大了,就会把我上一个未执行的方法的数据直接给覆盖掉 ,所以我们不推荐在servlet里面定义成员变量。

Tomcat的常见的部署方式

  1. 在部署目录部署war包
    这种方式部署最简单,也是在最常用的一种方式,就是直接将项目导出war包放到webapps这个目录下就好啦,如:在tomcat的server.xml文件中有如下配置:
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
   ......
</Host>

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

unpackWARs参数表示,tomcat会对部署在webapps目录中的war文件自动解压,如果为false,则不执行自定解压,但会影响程序的运行效率,
autoDeploy表示自动部署,即热部署
注:这种方式也可以直接部署文件夹,但要求部署的文件夹要符合web目录的标准

  1. 通过server.xml部署
  <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <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" />
		
		<!-- 部署web项目 -->
		<Context path="/webdemo" docBase="D:\work\eclipsews\webdemo\WebContent"></Context>

      </Host>

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

  1. 独立部署文件
    首先来到 \conf\Catalina 目录,
    然后再依据虚拟服务器名称一致的方式,创建一个目录(如:localhost)
    创建一个xml文件,完成项目部署,文件名与部署项目的上下文名称对应,例如:webdemo.xml,内容如下:
<Context path="/webdemo" docBase="D:\work\eclipsews\webdemo\WebContent"></Context>

ok ,上面就是常见的部署方式

eclipse中的tomcat配置

Tomcat1


Tomcat2

通过这两张图我们可以看到,首先找到直接的服务器,然后进入道服务器的配置里,点图中所示mouse位置,然后即可查看到项目的具体路径,这个路径是虚拟的,在电脑可以找到,但是,这个文件夹是有eclipse自己增加的子文件目录。

总结:在这么多服务器中,Tomcat是一个算小,而且很稳定的一个服务器,相关的配置也是交为简单,例如项目的部署方式也是多种,而且部署起来也是很简单。通过上面,我们也可以看到整个请求的流程,如果还有不会的小伙伴,欢迎私信我,都看到这里了,不留个关注赞在走吗!!!

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值