Servlet生命周期

要清楚认识一样东西了解它是如何产生,由谁产生,如何初始化,怎么销毁是很有必要的。

 

简单地说

 

1、Web应用启动时,Web容器会根据web.xml中的servlet配置创建实例对象并且加载到内存。

 

2、创建对象时会封装ServletConfig对象,该对象包含了对应servlet对象的参数信息,可以通过在servlet配置中添加初始参数,形式如下

<servlet>
    <servlet-name>.....</servlet-name>
    <servlet-class>.....</servlet-class>
    <init-param>
        <param-name>paramName</param-name>
        <param-value>paramValue</param-value>
    </init-param>
</servlet>

 在初始化完毕后即可以通过servletConfig获取该参数,一般可以通过调用HttpServlet中的getInitParameter()方法间接调用servletConfig中的相关方法,传入名称参数获取value,配合上面的配置,获取value代码如下

//在实现的HttpServlet接口的类中
String value = getInitParameter("paramName");
//得到的字符串为上述xml配置中的"paramValue"

 

注意:所谓初始化完毕在Servlet初始化过程中,会调用init(servletConfig)方法,此时可以理解为已经初始化完毕,而该方法会调用无参数的init()方法,所以要调用servletConfig最好重写无参数的init();

 

应用:一般可以将同一servlet会用到的固有参数,例如固定模块(版头)的url,写进servletConfig中,可以避免写死,修改时只需要修改xml中的相关值就可以了。

 

3、Web应用运行后会产生一个代表对象ServletContext,包含了整个应用的相关信息,不难想到,同一应用下的所有servlet都可以访问ServletContext来得到一致的数据,具体方法的作用可以参考API。

 

常用的是先通过getServletContext()得到ServletContext对象,类似ServletConfig也可以通过getInitParameter()来读取初始参数,设置初始参数同样在xml中设置,方式如下

<context-param>
    <param-name>...</param-name>
    <param-value>...</param-value>
</context-param>

 

需要注意的是,读取参数同样需要在对象初始化完毕后,这需要用到监听器(listerner)来监听才能保证不会出错。监听器首先需要在web.xml中配置监听器,代码百度即可,而监听器的类则需要实现ServletContextListener接口,具体实现查看API一目了然。

在ServletContext中的属性,除非你主动删除,否则会已知存活直至Web应用关闭。

 

遗憾的是,书中没有提到servlet合适销毁,不过不难想象,本质作为一个java对象,在没有引用后应该会被垃圾收集器销毁,仅是猜想,没有验证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值