javax顶层接口分析
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顶层接口分析相关推荐
- java获取焦点的组件_JAVA组件焦点的特性:获取组件时其顶层组件必须为可见的...
JAVA组件焦点的特性:其组件的顶层祖先必须为可见的. requestFocus,requestFocusInWindow等这些方法在获取组件焦点时都提到了: 请求此 Component 获取输入焦点 ...
- tomcat顶层架构
1 Tomcat的顶层结构 Tomcat的结构很复杂,但 Tomcat 是模块化的,找到了 Tomcat 最核心的模块,问题就游刃而解 Tomcat中最顶层的容器是Server,代表着整个服务器,to ...
- javax maven项目缺少_maven冲突解决流程
本文使用 Zhihu On VSCode 创作并发布 当项目比较大且开发维护的时间比较长时,项目的Maven依赖管理也会变得越来越复杂,手动的去排除冲突或者错误已经变得很困难,同时由于开发人员的不规范 ...
- 【java】创建一个顶层框架类的对象
创建一个顶层框架类的对象 package p1; import javax.swing.*; import java.awt.*; public class Java_3{static final i ...
- javax.servlet.Filter详解(二) 转自:http://hi.baidu.com/jxnuywf/blog/item/f3834aee93e2fdf8b2fb95cc.html
转自:http://hi.baidu.com/jxnuywf/blog/item/f3834aee93e2fdf8b2fb95cc.html 1.5禁用激活器servlet 在对资源应用过滤器时,可通 ...
- javax.swing设计的系统登录界面
特点:没有JFrame自带的边框图标等,所有的容器都看不到JFrame原始样子,支持拖动任意位置 隐藏JFrame图标任务栏 jdk1.7以上可以隐藏JFrame图标任务栏 (jframe.setTy ...
- JBI规范1.0[8]——javax.jbi
类的说明 异常 JBIException110 JBIException是由JBI提供的API和组件提供的SPI抛出的顶层异常. JBIException 声明 public class JBIExc ...
- java注解返回不同消息,Spring MVC Controller中的一个读入和返回都是JSON的方法如何获取javax.validation注解的异常信息...
Spring MVC Controller中的一个读入和返回都是JSON的方法怎么获取javax.validation注解的错误信息? 本帖最后由 LonelyCoder2012 于 2014-03- ...
- php回顶层顶层,PHP语言之php顶层类(自家用)
本文主要向大家介绍了PHP语言之php顶层类(自家用),通过具体的内容向大家展示,希望对大家学习php语言有所帮助. /** * Object * base class * @version 1.0 ...
最新文章
- vc 文本框 只显示下划线_【Axure9百例】36.文本框搜索自动匹配
- linux系统管理常用命令
- linux io体系结构,Linux IO体系结构
- mysql 恢复 二进制,mysql通过二进制日志恢复数据库
- 基于LAMP实现web日志管理查看
- HTTP请求和标头参数的CDI拦截器-简单示例
- mysql隔离性和线性隔离_MySQL--事务,隔离性和隔离级别
- EasyUI分页加载datagrid时候报错Uncaught TypeError: Cannot read property 'length' of undefined...
- Erlang中的OTP简要
- Visio2010绘制用例图
- Python编程学习:中兴LTE网管MML命令脚本生成器
- 最长公共子串(动态规划)
- 杰理之ANC降噪三种类型【篇】
- HDU - 3533 Escape
- Python 黑板客爬虫闯关的第一关
- 关于TAA SMAA
- MacM1安装homebrew步骤
- 使用jsdelivr访问github资源,为hexo站点提提速。
- java计算机毕业设计中小型饭馆餐饮管理系统源码+mysql数据库+系统+部署+lw文档
- 微信小程序·云开发 总结
热门文章
- 安防行业成巨头必争之地 一文梳理安防AI芯片产品与主要企业
- 观点 | 港科大张潼教授最新发言:对人工智能发展的一些思考
- SAP MM 为FO类型的采购订单做MIRO时候PO Amount不自动带出来问题之对策
- 干货丨综述卷积神经网络:从基础技术到研究前景
- Python 之 Pandas (三)选择数据
- 大脑的学习方式如何,机器学习与生物学习的联系将提供「答案」
- 李德毅院士:新一代人工智能十问
- 构建未来情报体系—— AI及大数据时代情报分析人员的战略价值
- Nvidia真的收购Arm了吗?
- 好文 | “智能经济”时代,协作机器人的应用前景与趋势探讨