首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

全面了解servlet

2012-11-17 
全面理解servlet1. Servlet的生命周期?Servlet是一种可以在Servlet容器中运行的组件,那么理所当然就应该有

全面理解servlet
1. Servlet的生命周期?
Servlet是一种可以在Servlet容器中运行的组件,那么理所当然就应该有一个从创建到销毁的过程,这个过程我们可以称之为Servlet生命周期。Servlet的生命周期可以分为加载、实例化、初始化、处理客户请求和卸载五个阶段,体现在方法上主要是init()、service()和destroy()三个方法。生命周期的具体说明如下:
    *
      Servlet容器完成加载Servlet类和实例化一个Servlet对象
    *
      init()方法完成初始化工作,该方法由Servlet容器调用完成
    *
      service()方法处理客户端请求,并返回响应结果
    *
      destroy()方法在Servlet容器卸载Servlet之前被调用,释放一些资源

2. Servlet的实例是在生命周期什么时候创建的? 配置servlet最重要的是什么?
      Servlet实例是在servlet第一次在容器中被加载的是时候创建的, Init()方法是用来配置这个servlet实力的,这个方法在servlet的生命周期中只被调用一次,所以应该把所有servlet生命周期中的配置操作都写在这个方法法里面。

3. 为什么不在Servlet中写一个构造(Contructor)方法?
     容器会自动为Servlet写一个无参的构造方法

4.  我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢?
     容器会自动为Servlet写一个无参的构造方法,容器是用Class.forName(className).newInstance()来创建servlet的实例的。

5. 当容器调用servlet的destory()方法的时候,servlet会马上销毁么? 如果当时这个servlet正在执行其他任务或者线程呢?
    是的, 当容器调用servlet的destory()方法的时候,servlet会马上销毁,但是容器在调用destory()方法之前,会等servlet的service()方法结束剩余的任务。

6. 用ServletRequest和ServletContext调用ReqestDispatcher有什么区别?
    在用ServletRequest调用RequestDispatcher的时候可以用相对URL, 但是ServletContext不行。

7. 为什么在用ServletRequest.getRequestDispatcher()的时候可以用相对URL而用ServletContext.getRequestDispatch()的时候不可以?
   因为ServletRequest包含当前的request path,可以用当前的request path去计算URL,但是ServletContext不包含当前的request path。

热点排行