1.Servlet接口分析

此接口是Servlet的最顶层接口,其中定义了Servlet生命周期相关的方法,所有Servlet都必须实现。此接口中的方法有以下几个:

public void init(ServletConfig config) throws ServletException;
public ServletConfig getServletConfig();
public void service(ServletRequest req, ServletResponse res)
public String getServletInfo();
public void destroy();

生命周期的调用顺序如下:
Servlet构建成功后调用init方法来初始化Servlet配置,此方法只调用一次,然后有一个http请求就调用service方法来处理相应请求,当所有请求结束,调用destroy方法来释放Servlet。 此三个方法都是由Servlet容器(比如tomcat,jetty)来调用。
其中getServletConfig和getServletInfo用于获取Servlet相关信息。

2.ServletConfig接口分析

此接口为Servlet配置抽象接口,定义了获取Servlet信息的相关接口,接口列表如下:

//获取Servlet名称,即是web.xml中配置的servlet-name
public String getServletName()
//返回此Servlet对应的上下文
public ServletContext getServletContext()
//获取初始化参数
public String getInitParameter(String name)
//获取初始化参数名称列表
public Enumeration<String> getInitParameterNames()

3.GenericService抽象类分析

此类实现了上面两个接口,主要是实现了ServletConfig类中的接口。此类中维护了一个ServletConfig变量,定义方式如下:

private transient ServletConfig config;

添加transient修饰的作用:序列化的时候不包含此字段

此局部变量在init的时候初始化,初始化方式如下:

public void init(ServletConfig config) throws ServletException {this.config = config;this.init();
}

init方法是由Servletr容器调用,因此,web.xml中Servlet配置转化为ServletConfig的工作因该是由容器完成的。

其中ServletConfig接口的方法实现方式基本如下:

public String getServletName() {ServletConfig sc = getServletConfig();if (sc == null) {throw new IllegalStateException(lStrings.getString("err.servlet_config_not_initialized"));}return sc.getServletName();
}

比较简单,不再分析。

转载于:https://www.cnblogs.com/vitasyuan/p/7425511.html

javax顶层接口分析相关推荐

  1. java获取焦点的组件_JAVA组件焦点的特性:获取组件时其顶层组件必须为可见的...

    JAVA组件焦点的特性:其组件的顶层祖先必须为可见的. requestFocus,requestFocusInWindow等这些方法在获取组件焦点时都提到了: 请求此 Component 获取输入焦点 ...

  2. tomcat顶层架构

    1 Tomcat的顶层结构 Tomcat的结构很复杂,但 Tomcat 是模块化的,找到了 Tomcat 最核心的模块,问题就游刃而解 Tomcat中最顶层的容器是Server,代表着整个服务器,to ...

  3. javax maven项目缺少_maven冲突解决流程

    本文使用 Zhihu On VSCode 创作并发布 当项目比较大且开发维护的时间比较长时,项目的Maven依赖管理也会变得越来越复杂,手动的去排除冲突或者错误已经变得很困难,同时由于开发人员的不规范 ...

  4. 【java】创建一个顶层框架类的对象

    创建一个顶层框架类的对象 package p1; import javax.swing.*; import java.awt.*; public class Java_3{static final i ...

  5. javax.servlet.Filter详解(二) 转自:http://hi.baidu.com/jxnuywf/blog/item/f3834aee93e2fdf8b2fb95cc.html

    转自:http://hi.baidu.com/jxnuywf/blog/item/f3834aee93e2fdf8b2fb95cc.html 1.5禁用激活器servlet 在对资源应用过滤器时,可通 ...

  6. javax.swing设计的系统登录界面

    特点:没有JFrame自带的边框图标等,所有的容器都看不到JFrame原始样子,支持拖动任意位置 隐藏JFrame图标任务栏 jdk1.7以上可以隐藏JFrame图标任务栏 (jframe.setTy ...

  7. JBI规范1.0[8]——javax.jbi

    类的说明 异常 JBIException110 JBIException是由JBI提供的API和组件提供的SPI抛出的顶层异常. JBIException 声明 public class JBIExc ...

  8. java注解返回不同消息,Spring MVC Controller中的一个读入和返回都是JSON的方法如何获取javax.validation注解的异常信息...

    Spring MVC Controller中的一个读入和返回都是JSON的方法怎么获取javax.validation注解的错误信息? 本帖最后由 LonelyCoder2012 于 2014-03- ...

  9. php回顶层顶层,PHP语言之php顶层类(自家用)

    本文主要向大家介绍了PHP语言之php顶层类(自家用),通过具体的内容向大家展示,希望对大家学习php语言有所帮助. /** * Object * base class * @version  1.0 ...

最新文章

  1. vc 文本框 只显示下划线_【Axure9百例】36.文本框搜索自动匹配
  2. linux系统管理常用命令
  3. linux io体系结构,Linux IO体系结构
  4. mysql 恢复 二进制,mysql通过二进制日志恢复数据库
  5. 基于LAMP实现web日志管理查看
  6. HTTP请求和标头参数的CDI拦截器-简单示例
  7. mysql隔离性和线性隔离_MySQL--事务,隔离性和隔离级别
  8. EasyUI分页加载datagrid时候报错Uncaught TypeError: Cannot read property 'length' of undefined...
  9. Erlang中的OTP简要
  10. Visio2010绘制用例图
  11. Python编程学习:中兴LTE网管MML命令脚本生成器
  12. 最长公共子串(动态规划)
  13. 杰理之ANC降噪三种类型【篇】
  14. HDU - 3533 Escape
  15. Python 黑板客爬虫闯关的第一关
  16. 关于TAA SMAA
  17. MacM1安装homebrew步骤
  18. 使用jsdelivr访问github资源,为hexo站点提提速。
  19. java计算机毕业设计中小型饭馆餐饮管理系统源码+mysql数据库+系统+部署+lw文档
  20. 微信小程序·云开发 总结

热门文章

  1. 安防行业成巨头必争之地 一文梳理安防AI芯片产品与主要企业
  2. 观点 | 港科大张潼教授最新发言:对人工智能发展的一些思考
  3. SAP MM 为FO类型的采购订单做MIRO时候PO Amount不自动带出来问题之对策
  4. 干货丨综述卷积神经网络:从基础技术到研究前景
  5. Python 之 Pandas (三)选择数据
  6. 大脑的学习方式如何,机器学习与生物学习的联系将提供「答案」
  7. 李德毅院士:新一代人工智能十问
  8. 构建未来情报体系—— AI及大数据时代情报分析人员的战略价值
  9. Nvidia真的收购Arm了吗?
  10. 好文 | “智能经济”时代,协作机器人的应用前景与趋势探讨