zoukankan      html  css  js  c++  java
  • servlet

     servlet容器Catalina 

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

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

    刚出现servlet时,许多web服务器不支持servlet,为了支持servlet需要单独开发程序,这种程序被叫做servlet container(servlet容器)或servlet engine小程序引擎。Catalina便是tomcat的servlet容器。

    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交互。

    http://blog.csdn.net/yanghua_kobe/article/details/7561016

    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应用。

     servlet包下http包:

    Tomcat的主线程干了些什么?

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

    新生的小心情
  • 相关阅读:
    Spring Cloud 网关服务 zuul 二
    spring cloud 2.x版本 Gateway动态路由教程
    spring cloud 2.x版本 Sleuth+Zipkin分布式链路追踪
    spring cloud 2.x版本 Gateway熔断、限流教程
    spring cloud 2.x版本 Gateway动态路由教程
    spring cloud 2.x版本 Gateway路由网关教程
    spring cloud 2.x版本 Hystrix Dashboard断路器教程
    spring cloud 2.x版本 Config配置中心教程
    [每天进步一点点]mysql笔记整理(三):索引
    [每天进步一点点]mysql笔记整理(二):事务与锁
  • 原文地址:https://www.cnblogs.com/jianmianruxin/p/7764995.html
Copyright © 2011-2022 走看看