1.Servlet生命周期

如下图所示:

Servlet生命周期与响应流程详解_web应用

由上图可得,servlet是单实例,是线程安全的。


2.Servlet响应流程

  1. servlet引擎检查是否已经装载并创建了该servlet的实例对象。如果是,直接执行第四步,否则,执行第二步。
  2. 装载并创建该servlet的一个实例对象,调用该servlet的构造方法。
  3. 调用servlet实例对象的init()方法。
  4. 创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletResponse对象。然后调用Servlet的service()方法,并将请求和响应对象作为参数传递进去。
  5. web应用程序被停止或重启前,servlet引擎将卸载servlet,并在servlet卸载之前调用servlet的destroy方法。

3.Servletconfig

封装了Servlet的配置信息,并且可以获取ServletContext对象。由Tomcat自动装载


4.ServletContext

Servlet引擎为每个web应用程序都创建一个对应的ServletContext对象,该对象被包含在ServletConfig对象中。

由于一个web应用程序中的所有Servlet都共享同一个ServletContext对象,所以,ServletContext 对象被称为application对象(web应用程序对象)。


5.Service()

Service()–Servlet执行主体,由服务器调用;


6.ServletRequest

ServletRequest–封装了请求信息 ,由服务器创建;

一般使用时强转为HttpServletRequest

Servlet生命周期与响应流程详解_servlet_02


方法示例:

1.String user = request.getParameter("user");

2.String [] interestings = request.getParameterValues("interesting");

3.Enumeration<String> names = request.getParameterNames();
while(names.hasMoreElements()){
String name = names.nextElement();
String val = request.getParameter(name);

System.out.println("^^" + name + ": " + val);
}

4.Map<String, String[]> map = request.getParameterMap();
for(Map.Entry<String, String[]> entry: map.entrySet()){
System.out.println("**" + entry.getKey() + ":" + Arrays.asList(entry.getValue()));
}

5.String requestURI = httpServletRequest.getRequestURI();

6.String method = httpServletRequest.getMethod();

7.String queryString = httpServletRequest.getQueryString();

8.String servletPath = httpServletRequest.getServletPath()

7.ServletResponse

封装了响应信息,由服务器创建;一般使用时强转为HttpServletResponse。