servlet生命周期
来源:互联网 发布:xp找不到网络路径 编辑:程序博客网 时间:2024/06/15 05:01
Servlet生命周期
public class ServletTest extends HttpServlet { public ServletTest() { super(); } public void destroy() { System.out.println("servlet销毁"); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("=====doGet方法===="); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("=====doPost方法===="); } public void init() throws ServletException { System.out.println("servlet初始化"); }}
web.xml文件 设置servlet
<servlet> <!-- servlet的名字 --> <servlet-name>ServletTest</servlet-name> <!-- servlet加载的类 --> <servlet-class>com.zx.servletTest.ServletTest</servlet-class> </servlet> <servlet-mapping> <!-- 指定servlet设置路径 --> <servlet-name>ServletTest</servlet-name> <!-- servlet的请求路径 --> <url-pattern>/servlet/ServletTest</url-pattern> </servlet-mapping>
- init(): servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。
- service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。
- destroy(): 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。
Tomcat 与 Servlet 是如何工作的:
步骤:
1. Web Client 向Servlet容器(Tomcat)发出Http请求
2. Servlet容器接收Web Client的请求
3. Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
4. Servlet容器创建一个HttpResponse对象
5. Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet 对象。
6. HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息。
7. HttpServlet调用HttpResponse对象的有关方法,生成响应数据。
8. Servlet容器把HttpServlet的响应结果传给Web Client。
Servlet的运行过程
*Servelt程序是由Web服务器调用的,web服务器收到客户端的Servelt请求后:
1.Web服务器首先检查是否已经装载并创建了该Servelt的实例对象,如果是直接执行4,否则执行2。
2.装载并创建Servlet的一个实例对象
3.调用Servelt实例对象的init方法
4.调用一个用于封装的HTTP请求消息的HttpServletRequest对象和一个代表Http消息的HttpServeltResponse对象,然后调用Servelt的service()方法并将请求和响应对象作为参数传递进去。
5.Web应用程序被停止或者重新启动之前,Servelt引擎将卸载Servelt,并在卸载后调用destroy()方法。
创建Servlet对象的时机:
1. Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。
2. 在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet 对象的service方法。
3. Servlet Servlet容器在启动时自动创建Servlet,这是由在web.xml文件中为Servlet设置的属性决定的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在
<load-on-startup>1</load-on-startup>数值越小创建实例的优先级越高,(启动顺序)
- servlet生命周期
- Servlet 生命周期
- Servlet生命周期
- servlet生命周期
- Servlet生命周期
- Servlet生命周期
- Servlet生命周期
- servlet生命周期
- servlet生命周期!
- Servlet生命周期
- Servlet生命周期
- Servlet生命周期
- servlet生命周期
- Servlet生命周期
- Servlet生命周期
- servlet生命周期
- servlet生命周期
- servlet生命周期
- [Java] 请求转发, 请求包含与请求重定向
- BootStrap入门响应式栅栏
- 图像处理之图像分割之边缘分割之边缘松弛
- java -- Map映射接口
- goeasy+jquery+ckplayer实现动态实时视频弹幕
- servlet生命周期
- qml开发笔记
- servlet的config
- StyleWriter英文润色软件使用说明(含破解安装包)
- HDU2087 剪花布条
- IDEA——创建Maven Web工程
- 使用注解操作redis中的缓存
- 一起Talk Android吧(第五十五回:Android中的Fragment显示与隐藏二)
- openOCD 配置和使用 (英文)