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

Servlet和tomcat源码分析

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

Servlet和tomcat源码分析

前言

tomcat:一个web容器(servelt和jsp容器),用来进行前后端交互的一个中间商,解析客户端发送过来的数据解析成request和response对象,来进行一个请求与响应,tomcat解析服务端的response内容,在发送给客户端进行一个响应。

servlet:是service和applet的一个缩写,服务端小程序,处理从客户端拿到的数据,并作出响应。

1.Servlet

1.servlet结构图

HttpServelt继承了GenericServlet抽象类(为了以后进行拓展,可能不止有http协议,可能拓展其他协议,GenericServlet规定了除协议外的其他内容),GenericServlet实现了IO序列化接口,ServletConfig(Servlet的的配置信息),和Servlet接口(核心包含servlet初始化销毁等一系列方法)。

 2.HttpServlet

HttpServlet中方法请求Service有两个一个是重写的service(ServletRequest,ServletResponse),是默认调用此方法,然后调用重载的service(HttpServletRequest,HttpServletResponse)方法,该方法会根据类型去调用doGet或doPost方法。

2.GenericServlet 

 

 一种定义处理关于请求处理的其他信息,init(ServletConfig),getServletConfig()等等 

3.Servlet

 Servlet 核心接口,关于servlet的初始化,销毁,请求调用,servlet的配置信息(ServletConfig),servlet的创建信息(getServletInfo)。

4.ServletConfig

 ServletConfig是属于当前的Servlet的对象的,有当前servlet的一些配置信息,如获得Servlet的名字,获取在web.xml中配置的的 init-param 中的配置参数,还可以获取Servlet的上下文ServletContext(全局)对象。

 2.Tomcat 1.Tomcat架构图

server对应的tomcat容器,一个server对应的多个service用来提供具体服务,一个service(是接收请求,完成对应的业务逻辑)对应多个connector,用来接收浏览器的请求封装成Request和Response然后交给container(核心组件层级有Engine,Host,Context,Wrapper)处理讲结果返回给connector,Engine标识一个servlet引擎一个Engine可以有多个Host,一个Host代表一个虚拟站点(虚拟主机)可以有多个Context,一个Context代表一个程序(一个web.xml),一个运行的webapp都是以Context的形式存在,都有一个根路径和访问路径,整个webapp是一个站点(Host),一个应用是一个Context。

1.Server

8005端口,接收服务器停止命令

2.Service

Service接收客户端请求,一个Server对应Service,Service 接收客户端的请求,然后解析请求,完成相应的业务逻辑,然后把处理后的结 果返回给客户端,一般有两个方法,一个start打开服务socket,stop停止服务并释放网络资源。

3.Connector

Connector连接器,service核心组件之一,一个service对应多个Connector,主要处理客户端请求,讲请求封装成Request和Response,给Container容器处理,处理完交给Connector返回客户端。

4.Container
Service 的另一个核心组件,按照层级有 Engine , Host , Context , Wrapper 四种,一个 Service 只有一个 Engine ,其主要作用是执行业务逻辑。
5.Engine

一个Service中对应一个Engine,Engine表示一个Servlet引擎。


一个Engine包含多个Host,使得一个服务器实例可以承担多个域名的服务。

6.Host

Host代表一个站点,对应的一个域名,一个Host对应多个Context

 

unpackWARs 代表指定在appBase指定目录中的war包做自动的解压

aotoDeployed 代表指定加入到appBase目录的war包进行自动部署

7.Context

Context代表一个应用程序,每一个运行的webapp最终都表现为一个Context,每一个Context都有一个跟路径和请求路径。

与 Host 的区别是 Context 代表一个应用,如,默认配置下 webapps 下的每个目录都是一个应用,其中 ROOT 目录中存放主应用,其他目录存放别的子应用,而整个 webapps 是一个站点。

2.启动Tomcat

  1. startup.bat
  2. catalina.bat start

catalina.bat源码

  1. set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%binbootstrap.jar"  //启动程序jar
  2. set MAINCLASS=org.apache.catalina.startup.Bootstrap  //入口程序地址
  3. set ACTION=start   //args第一个参数
下载tomcat6源码分析
  1. main中调用init()方法 加载类加载器,通过反射创建Catalina实例(因为Catalina没有实现Lifecycle(提供了统一管理对象声明周期的接口)接口)
  2. catalina  先load() 通过Digester解析server.xml文件
  3. demon.start()  条用Catalina的start方法
  4. StandardServer 是server的一个实现类,通过initalize()方法初始化Tomcat容器一些列组件,顺序是StandardServer,StandardService,StandardEngine,Connector。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821549.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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