标签:stat out 生命周期 tps this pre and hello 对象
1、把Java放到HTML中,JSP应运而生。
2、Servlet本身并没有main()方法,所以必须要有其他Java程序去调用它,这个Java程序就是Web容器(Container)。Tomcat就是一个容器。
3、容器能提供什么?
4、容器如何处理请求?
Ⅰ、用户发出一个指向Servlet的请求。
Ⅱ、容器“看出”这个请求指向Servlet,于是创建两个对象HttpServletRequest、HttpServletResponse。
Ⅲ、容器找到这个Servlet,为其创建或者分配一个线程,并传入上述两个对象。
Ⅳ、容器调用Servlet的service()方法。
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String method = req.getMethod(); long lastModified; if(method.equals("GET")) { lastModified = this.getLastModified(req); if(lastModified == -1L) { this.doGet(req, resp); } else { long ifModifiedSince; try { ifModifiedSince = req.getDateHeader("If-Modified-Since"); } catch (IllegalArgumentException var9) { ifModifiedSince = -1L; } if(ifModifiedSince < lastModified / 1000L * 1000L) { this.maybeSetLastModified(resp, lastModified); this.doGet(req, resp); } else { resp.setStatus(304); } } } else if(method.equals("HEAD")) { lastModified = this.getLastModified(req); this.maybeSetLastModified(resp, lastModified); this.doHead(req, resp); } else if(method.equals("POST")) { this.doPost(req, resp); } else if(method.equals("PUT")) { this.doPut(req, resp); } else if(method.equals("DELETE")) { this.doDelete(req, resp); } else if(method.equals("OPTIONS")) { this.doOptions(req, resp); } else if(method.equals("TRACE")) { this.doTrace(req, resp); } else { String errMsg = lStrings.getString("http.method_not_implemented"); Object[] errArgs = new Object[]{method}; errMsg = MessageFormat.format(errMsg, errArgs); resp.sendError(501, errMsg); } }
Ⅵ、根据请求的不同,service()会调用不同的方法,假设请求对应doGet()方法:
import javax.servlet.http.*; import java.io.*; import java.util.Date; public class Ch1Servlet extends HttpServlet { @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { PrintWriter out = response.getWriter(); Date today = new Date(); out.println("<html>" + "<body>" + "<h1 align=center>Hello Servlet</h1>" + "</br>" + today + "</body>" + "</html>" ); } }
Ⅶ、doGet()方法生成动态页面,并把它写入response里。
Ⅷ、线程结束,容器把response对象转换为一个HTTP响应,然后清理不再用的对象。
【Head First Servlets and JSP】笔记1
标签:stat out 生命周期 tps this pre and hello 对象
原文地址:http://www.cnblogs.com/xkxf/p/6846969.html