servlet

网友投稿 626 2022-11-18

servlet

servlet

servlet容器Catalina

服务器上需要一些程序,常常是根据用户输入访问数据库的程序,之前通常是使用公共网关接口(CGI)应用程序完成的。然而在通信量大的时候,javaServlet的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务端处理请求的系统开销将明显降低。

servlet是平台独立的java类,可以被动态得加载到支持java技术的web服务器中运行。servlet API与协议无关。

servlet容器由两部分构成:web服务器插件和java容器。web服务器插件在web服务器内存地址空间中打开一个JVM实例,然后在此jvm实例上加载java容器并运行servlet。如果客户端调用servlet(通过web.xml),web服务器先将此请求的控制权交给web服务器插件,web服务器插件使用JNI技术交给java容器,java容器再把此请求交给servlet来处理。处理完后servlet将response中的处理结果转发给web服务器,并将控制权返回web服务器。

根据组成tomcat的组件将tomcat分层:

tomcat由一系列可配置的组件组成,核心组件是servlet容器catalina,它是其他tomcat组件的顶层容器。各个组件将tomcat分为若干层。各层通过数据管道pipeline交互。

server层: 逻辑上表示整个tomcat,即整个儿servlet容器catalina,处于tomcat顶层,包含一个或多个service层。

service层:包含一个engine层,以及一个或多个connector。

engine层:可以连接多个connector,此层是请求分发处理层。engine组件从connector接受请求后,解析出用户请求的url后,根据url把请求匹配到正确的host上。host处理完请求后,engine层把结果返回给适合的连接器,再由连接器传输给用户。

host层:表示一个虚拟主机。一个engine层可包含多个host。host层接到请求后根据url将请求定位到对应的context层。

context层:一个host可包含多个context层,对应不同的web应用。

Tomcat的主线程干了些什么?

传给servlet的doService方法(doGet或doPost)的HttpServletRequest对象没有获取参数的getParameter方法,该方法继承于其父类ServletRequest。那么,ServletRequest中的数据怎么来的?客户端的数据是怎么被封装到ServletRequest中的?【getParameter怎么是抽象方法???在哪里被实现的???】

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:2020系统综合实践 第一次实践作业
下一篇:详解扩展tk.mybatis的批量更新的功能
相关文章

 发表评论

暂时没有评论,来抢沙发吧~