1.Servlet生命周期
如下图所示:
由上图可得,servlet是单实例,是线程安全的。
2.Servlet响应流程
- servlet引擎检查是否已经装载并创建了该servlet的实例对象。如果是,直接执行第四步,否则,执行第二步。
- 装载并创建该servlet的一个实例对象,调用该servlet的构造方法。
- 调用servlet实例对象的init()方法。
- 创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletResponse对象。然后调用Servlet的service()方法,并将请求和响应对象作为参数传递进去。
- 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
方法示例:
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。