Servlet生命周期
来源:互联网 发布:剑倚天下进阶数据最新 编辑:程序博客网 时间:2024/06/12 22:46
Servlet的框架是由两个Java包组成:
–javax.servlet包:定义了所有的Servlet类都必须实现或扩展的通用接口和类。
–javax.servlet.http包:定义了采用HTTP协议通信的HttpServlet类。
Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servlet都必须实现这一接口。在Servlet接口中定义了五个方法,其中有三个方法代表了Servlet的生命周期:
–init方法:负责初始化Servlet对象;
–service方法:负责响应客户的请求;
–destroy方法:当Servlet对象退出生命周期时,负责释放占用的资源。
如果你的Servlet类扩展了HttpServlet类,你通常不必实现service方法,因为HttpServlet类已经实现了service方法,该方法的声明形式如下:
protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;
•在HttpServlet的service方法中,首先从HttpServletRequest对象中获取HTTP请求方式的信息,然后再根据请求方式调用相应的方法。例如:如果请求方式为GET,那么调用doGet方法;如果请求方式为POST,那么调用doPost方法。
getAttribute 根据参数给定的属性名返回属性值•getContentType 返回客户请求数据MIME类型•getInputStream 返回以二进制方式直接读取客户请求数据的输入流•getParameter 根据给定的参数名返回参数值•getRemoteAddr 返回远程客户主机的IP地址•getRemoteHost 返回远程客户主机名•getRemotePort 返回远程客户主机的端口
Servlet 的生命周期可以分为三个阶段:
–初始化阶段
–响应客户请求阶段
–终止阶段
•在javax.servlet.Servlet接口中定义了三个方法init(), service(), destroy(),它们将分别在Servlet的不同阶段被调用。
在下列时刻Servlet容器装载Servlet:
–Servlet容器启动时自动装载某些Servlet
–在Servlet容器启动后,客户首次向 Servlet 发出请求
–Servlet的类文件被更新后,重新装载Servlet
•Servlet被装载后,Servlet容器创建一个 Servlet 实例并且调用 Servlet 的 init()方法进行初始化。在Servlet的整个生命周期中,init方法只会被调用一次。
当Web应用被终止,或Servlet容器终止运行,或Servlet容器重新装载Servlet的新实例时,Servlet容器会先调用 Servlet的destroy方法。在destroy方法中,可以释放Servlet所占用的资源。
默认情况下,当Web客户第一次请求访问某个Servlet时,Web容器创建这个Servlet的实例
•如果设置了<servlet>
元素的<load-on-startup>
子元素,Servlet容器在启动Web应用时,将按照指定的顺序创建并初始化这个Servlet。
*当Servlet容器启动Web应用时,并为每个Web应用创建惟一的ServletContext对象。你可以把ServletContext看成是一个Web应用的服务器端组件的共享内存。在ServletContext中可以存放共享数据,它提供了读取或设置共享数据的方法:
–setAttribute(String name,Object object)把一个对象和一个属性名绑定,将这个对象存储在ServletContext中。
–getAttribute(String name)根据给定的属性名返回所绑定的对象*
**Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。
•由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的同步问题。**
Servlet实现javax.servlet.SingleThreadModel(Servlet2.4中已经废弃该接口),此时Servlet容器将保证Servlet实例以单线程方式运行,也就是说,同一时刻,只会有一个线程执行Servlet的service()方法。
•去除实例变量,使用局部变量,参见HelloServlet
•使用同步代码块:
synchronized{…}
- servlet生命周期
- Servlet 生命周期
- Servlet生命周期
- servlet生命周期
- Servlet生命周期
- Servlet生命周期
- Servlet生命周期
- servlet生命周期
- servlet生命周期!
- Servlet生命周期
- Servlet生命周期
- Servlet生命周期
- servlet生命周期
- Servlet生命周期
- Servlet生命周期
- servlet生命周期
- servlet生命周期
- servlet生命周期
- 安装CentOS
- C语言基础3:字符串函数的实现(笔试考题)
- GIT初学使用(二)- 实验分支的内容如何合并到主分支中
- Java学习笔记之IO 4
- hdu 1011 Starship Troopers
- Servlet生命周期
- gsoap 注意事项
- Hadoop深入研究(HDFS)---HDFS介绍
- Android应用内语言切换实现
- Android的RadioButton和checkBox的用法-android学习之旅(十九)
- 封装分页类
- poj1436 Horizontally Visible Segments
- uva 10106 Product(高精度大数乘法)
- maven基本使用