1 Servlet的生命周期是通过Servlet接口中的init(),service(),和destroy()方法来表示的,即Servlet从创建到销毁的过程。包括如何加载和实例化,初始化,处理请求,以及如何销毁。
(1)Servlet容器Servlet类的位置加载Servlet类,成功加载后,由容器创建实例。
(2)初始化,在Servlet容器完成实例化后,Servlet容器将调用Servlet的init()方法进行初始化,初始化的目的是让Servlet对象在处理客户端请求前完成一些初始化工作,如,设置数据库连接参数,建立JDBC连接,或者是对其他资源的引用。(对于每一个Servlet实例,init()方法只被调用一次)
(3)服务,Srevlet被初始化后,就处于能响应请求的就绪状态。当Servlet容器接收客户端请求时,调用Srevlet的service()方法处理客户端请求
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException
{
HttpServletRequest request;
HttpServletResponse response;
if (!(req instanceof HttpServletRequest &&
res instanceof HttpServletResponse)) {
throw new ServletException("non-HTTP request or response");
}
request = (HttpServletRequest) req;
response = (HttpServletResponse) res;
service(request, response);
}。
相当一个分发器,可以根据请求方法的类型,调用相应的doXxx()方法。所以在编写Servlet时只需要根据应用的需求,重写daoGe()t或者doPost()方法即可。
(4)销毁,Servlet的实例是由Servlet容器创建的,所以实例的销毁也是由容器来完成的。Servlet容器判断一个Servlet是否应当被释放时,容器关闭,回收资源。容器就会调用Servlet的destroy()方法,该方法指明哪些资源可以被系统回收,而不是由destroy()方法直接进行回收。
2 Servlet是一个java程序,它运行在服务器端,接收和处理客户端用户请求,并做出响应。
3 xxx.jsp在运行时首先解析成一个Java类xxx_jsp.java该类继承于HttpJspBase类,HttpJspBase类又是继承自HttpServlet的类,可以得出一个结论,JSP在运行时会被Web容器翻译成一个Servlet。