码迷,mamicode.com
首页 > 移动开发 > 详细

《how tomcat work》 搬运工 Chapter 11:StandardWrapper

时间:2015-09-21 10:22:34      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

tomcat 4和5中有四种container,engine,host,context,wrapper,之前已经简单介绍过自己编写的simpleContext,simpleWrapper。这章节就是介绍catalina的StandardWrapper。

首先wrapper是代表一个servlet,所以,wrapper的作用是,servlet类的加载,servlet的信息,还有进入servlet的fiter的信息,还有fiter的加载,fiter的chain。

 

1.servlet可以继承javax.servlet.SingleThreadModel(STM)接口

  这个可以保证一个servlet实例只会出现在一个线程中。

  但是并不能保证线程安全,如果servlet中使用到全局变量,还是会出现线程执行出错的问题。

  这是通过servlet池实现的。

  如果没有继承javax.servlet.SingleThreadModel接口的,如果已经存在了servlet实例就直接返回。

 

2.servlet的加载

  先调用init方法,传递javax.servlet.ServletConfig的实例。再调用load方法

  因为catalina支持jsp类的加载,所以会检查请求的页面是否jsp,如果是,则从父container,也就是context中获取加载jsp的wrapper,再获取用于加载jsp的servlet类的类名。

  在加载servlet会触发一些事件监听函数。

 

3.ServletConfig

  StandardWrapper除了继承 Wrapper interface接口,还继承了javax.servlet.ServletConfig接口。

  

public ServletContext getServletContext() 
public java.lang.String getServletName() 
public String getName() 
public void addInitParameter(String name, String value) 
public String getInitParameter(String name) 
public String findInitParameter(String name) 
public java.util.Enumeration getInitParameterNames() 
public Enumeration getInitParameterNames() 

 

 

4.StandardWrapperValve

  负责执行servlet的filter,和执行service方法。

  创建filter,通过filterDef类的实例的信息来创建,ApplicationFilterConfig类也是通过filterDef类的实例来创建

  ApplicationFilterChain来执行各种filter

《how tomcat work》 搬运工 Chapter 11:StandardWrapper

标签:

原文地址:http://www.cnblogs.com/xuyung/p/4825290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!