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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值