1)Servlet生命周期:
init(初始化)—service(服务)—destory(销毁)
1.加载:Servlet容器(Tomcat)启动,加载web.xml配置文件;
2.实例化:构造指定的Servlet对象,创建ServletConfig对象;
3.初始化:把ServletConfig对象作为参数来调用Servlet对象的init()方法;//intial
4.发出请求:Client向Servlet容器发出Http请求;
5.接收请求:Servlet容器接收Web Client的请求;(在web.xml中找到url->name->class->类)
6.响应:1)Servlet容器创建HttpRequest对象和HttpResponse对象,将 Client请求的信息封装到HttpRequest对象中。
2)Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet 对象。
3)HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息(决定doGet/doPost),HttpServlet调用HttpResponse对象的有关方法,生成响应数据。
4)Servlet容器把HttpServlet的响应结果传给Web Client
7.销毁:Servlet容器调用Servlet的destroy()方法释放掉Servlet所占用的资源。
2)线程安全问题:Servlet中定义变量,尽量用局部变量。
3)Servlet的配置对象ServletConfig(容器创建):
作用:代表了Servlet配置中的参数信息。
比如在web.xml中的参数配置如下:
<servlet>
<servlet-name>ServletDemo2</servlet-name>
<servlet-class>cn.itcast.servlet.ServletDemo2</servlet-class>
<init-param><!-- aaa=bbb -->
<param-name>aaa</param-name>
<param-value>bbb</param-value>
</init-param>
<init-param>
<param-name>xxx</param-name>
<param-value>yyy</param-value>
</init-param>
</servlet>
在JSP文件中使用:
//得到参数名,参数值
public void test2(){
Enumeration e = config.getInitParameterNames();
while(e.hasMoreElements()){
String paramName = (String)e.nextElement();//得到参数名
System.out.println(config.getInitParameter(paramName));//得到参数值
}
4)ServletContext详解:
在应用被服务器加载时就创建ServletContext对象的实例。
每一个JavaWeb应用都有唯一的一个ServletContext对象,它就代表着当前的应用。
作用:实现多个Servlet之间的数据共享,获取WEB应用的初始化参数(应用的全局参数)
5)Servlet规范核心类图: