Tomcat的几个知识点总结

Tomcat为什么要破坏双亲委派模型

这一点其实是Servlet规范里面有提到,建议Servlet容器优先加载Web应用下的类。而实际上Tomcat也这么做了,并且是通过破坏双亲委派模型去实现的。主要目的为了实现各个Web应用的隔离性。因为各个Web应用里面可以用同名的Servlet,如果按照默认的双亲委派模型的话,那么这些同名的Servlet最终都会成为一个Servlet。所以Tomcat就破坏了双亲委派模型
破坏的方法,就是自定义一个WebApplicationClassLoader,继承了ClassLoader类,然后重写了loadClass()方法,因为双亲委派模型就是在这里实现。那在这个方法里面,首先会去查看对应的类是否加载过了,加载过的话就不重复加载。否则的话,它先回去调用扩展类加载器进行加载,这样做的目的是保证一些核心库不被覆盖,因为虽然说优先加载Web应用下面的类,但是肯定有一个原则就是不能覆盖核心类。如果扩展类加载器和启动类加载器加载失败的话,就直接进行自定义加载,也就是对应findClass()方法嘛。从而实现一个隔离性

Tomcat的IO模型

Tomcat的IO模型有三种,BIO,NIO(JDK4),NIO2(或者叫AIO,在JDK7加入),其实还有一个叫APR。

Tomcat如何生成Servlet

其实这个从两个方面去说:

  • 从作用域角度,它可以分为单例和复例。默认是单例的。也就是多个线程会共用一个Servlet,这是会产生线程安全问题。对于里面的一些共享变量,可以用ThreadLocal去做;还有一个就是复例,如果Servlet实现了SingleThreadModel接口的话,那么它就是复例的,一个请求到来的时候如果没有空余的Servlet,它会通过反射创建新的Servlet,当然不是无限的,最大可以创建20个Servlet,如果还不够的话,接下来的请求会阻塞
  • 类型角度:分为原本Servlet类,还有jsp文件。jsp文件最后也会变成servlet嘛,其实它会先对jsp文件进行解析成一棵结点树,然后再变成一个java文件,然后最后编译成为一个servlet。

有几种在Tomcat中部署Web应用的方法?

  • 就是应用放到webapp目录下就可以了
  • 在conf文件里面的server.xml配置文件,在host标签下,添加context标签,然后写上路径等信息,也可以部署
  • catalina目录下,可以建立一个xml文件来配置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值