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();
}

比较简单,不再分析。

javax顶层接口分析的更多相关文章

  1. log4j的1.2.15版本,在pom.xml中的顶层project报错错误: Failure to transfer javax.jms:jms:jar:1.1 from https://maven-repository.dev.java.net/nonav/repository......

    在动态网站工程中,添加了Pom依赖,当添加log4j的1.2.15版本依赖时,在pom.xml中的顶层project报错错误: Failure to transfer javax.jms:jms:ja ...

  2. Swing 顶层容器

    顶层容器值得是容纳其他容器的容器组件,包括JFrame类,JWindows类,JDialog类,JApplet等.Swing中的顶层容器类Swing提供三个顶层容器类:JFrame,JDialog和J ...

  3. The type javax.ws.rs.core.MediaType cannot be resolved. It is indirectly referenced from required .class files

    看到了http://stackoverflow.com/questions/5547162/eclipse-error-indirectly-referenced-from-required-clas ...

  4. 【原】tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig的解决

    现象: tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig() ...

  5. 使用javax.servlet.http.Part类上传文件

    使用的是Servlet 3.0 新的特征标注(Annotaion)类描述部署,一些低版本的服务器需要使用标准依赖部署描述文件(web.xml)来部署,另外Part也是Java EE 6.0新增的类,P ...

  6. javax.mail 发送邮件异常

    一.运行过程抛出异常 1.Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/ ...

  7. ReactJS入门(三)—— 顶层API

    本文基本跟着官方文档把API都走一遍,但会有实例来解释应该怎么用,木有比我更详细的API文档咯. React.createClass 参数:CONFIG(object) 创建一个ReactClass( ...

  8. easyui弹出层在最顶层显示跳出iframe框架通用javascript代码

    有时候我们用easyui在后台框架中弹框的时候,总是显示在框架页面里面而不是整个系统框架的上面,看着有些不太乐意. dialog = function (opts) { var query = par ...

  9. javax.net.ssl.SSLHandshakeException(Cas导入证书)

    一.报错: javax.net.ssl.SSLHandshakeException二.原因分析:CAS部署时,常常要涉及到HTTPS的证书发布问题.由于在实验环境中,CAS和应用服务常常是共用一台PC ...

随机推荐

  1. Linux C 一个简单的线程池程序设计

    最近在学习linux下的编程,刚开始接触感觉有点复杂,今天把线程里比较重要的线程池程序重新理解梳理一下. 实现功能:创建一个线程池,该线程池包含若干个线程,以及一个任务队列,当有新的任务出现时,如果任 ...

  2. javascript 模块

    一.模块 function foo() { var something = "cool"; var another = [1, 2, 3]; function doSomethin ...

  3. java json字符串 获取value

    java中可以导入有关json的jar包,但是此jar包又得依赖其他的jar包 ,所以需要导入的包如下: 可在这里下载相关jar包,CSDN下载啥都要钱  讨厌死了  还是这个链接好---云盘 htt ...

  4. POJ 1021 2D-Nim

    Description The 2D-Nim board game is played on a grid, with pieces on the grid points. On each move, ...

  5. VMware Workstation All Key

    官方下载:https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html 懒人打包:链接:https:/ ...

  6. selenium自动化测试配置工具整理

    firefox浏览器历史版本 网址通道:http://ftp.mozilla.org/pub/firefox/releases/ chromedriver历史版本 网址通道:http://chrome ...

  7. Selenium里可以自行封装与get_attribute对应的set_attribute方法

    我们在做UI自动化测试的过程中,某些情况会遇到,需要操作WebElement属性的情况. 假设现在我们需要获取一个元素的title属性,我们可以先找到这个元素,然后利用get_attribute方法获 ...

  8. 【推荐】免费,19 款仿 Bootstrap 后台管理主题下载

    声明: 1. 本篇文章提到的仿 Bootstrap 风格的主题,是基于 jQuery 的 ASP.NET MVC 控件库的主题. 2. FineUIMvc(基础版)完全免费,可以用于商业项目. 目录 ...

  9. php 变量原理讲解

    php 变量原理讲解 一.变量概念   所谓变量,是指在程序中其值可以变化的量. 程序是管理和处理数据的.在程序运行过程中,我们需要存贮这些数据,变量和常量就是用于保存程序运行时的数据的. 变量通常由 ...

  10. RMAN还原时注意set newname时文件名不要有空格

      今天遇到一个非常奇怪的现象,查看ORACLE数据库的一个文件,明明这个文件是存在的,但是使用ls -lrt 查看都显示这个文件不存在.很是纳闷! 后面发现在终端输入文件名后并使用tab键时,发现文 ...