servlet生命周期高度灵活.servlet容器惟一必须严格遵守的规则就是以下的生命周期约定:
□ 生成并初始化servlet
□ 处理客户请求
□ 卸载servlet并进行无用单元收集
对应上述约定的,我们在应用中,有以下方法:
□ init()方法:负责初始化servlet对象
□ service()方法:负责响应客户请求;
□ destroy()方法:当servlet对象退出生命周期时,负责释放占用资源;
一个实例,计数器实例,在web.xml进行计数值的初始化
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class InitCounter extends HttpServlet{
int count;
public void init() throws ServletException
{
String initial=getInitParameter("initial");
try{
count=Integer.parseInt(initial);
}
catch(NumberFormatException e){
count=0;
}
}
public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
{
res.setContentType("text/html");
PrintWriter out=res.getWriter();
count++;
out.println("since loading this servlet instance has been accessed "+count+" times");
}
public void destroy(){
super.destroy();
}
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>couner</servlet-name>
<servlet-class>InitCounter</servlet-class>
<init-param>
<param-name>initial</param-name>
<param-value>1000</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>