HttpServlet Service方法
Posted kakaisgood
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpServlet Service方法相关的知识,希望对你有一定的参考价值。
service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
下面是该方法的特征:
public void service(ServletRequest request,
ServletResponse response)
throws ServletException, IOException{
}
service() 方法由容器调用,service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,您不用对 service() 方法做任何动作,您只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。
/* */ protected void service(HttpServletRequest req, HttpServletResponse resp) /* */ throws ServletException, IOException /* */ { /* 568 */ String method = req.getMethod(); /* */ /* 570 */ if (method.equals("GET")) { /* 571 */ long lastModified = getLastModified(req); /* 572 */ if (lastModified == -1L) /* */ { /* */ /* 575 */ doGet(req, resp); /* */ } else { /* 577 */ long ifModifiedSince = req.getDateHeader("If-Modified-Since"); /* 578 */ if (ifModifiedSince < lastModified / 1000L * 1000L) /* */ { /* */ /* */ /* 582 */ maybeSetLastModified(resp, lastModified); /* 583 */ doGet(req, resp); /* */ } else { /* 585 */ resp.setStatus(304); /* */ } /* */ } /* */ } /* 589 */ else if (method.equals("HEAD")) { /* 590 */ long lastModified = getLastModified(req); /* 591 */ maybeSetLastModified(resp, lastModified); /* 592 */ doHead(req, resp); /* */ } /* 594 */ else if (method.equals("POST")) { /* 595 */ doPost(req, resp); /* */ } /* 597 */ else if (method.equals("PUT")) { /* 598 */ doPut(req, resp); /* */ } /* 600 */ else if (method.equals("DELETE")) { /* 601 */ doDelete(req, resp); /* */ } /* 603 */ else if (method.equals("OPTIONS")) { /* 604 */ doOptions(req, resp); /* */ } /* 606 */ else if (method.equals("TRACE")) { /* 607 */ doTrace(req, resp); /* */ /* */ /* */ } /* */ else /* */ { /* */ /* */ /* 615 */ String errMsg = lStrings.getString("http.method_not_implemented"); /* 616 */ Object[] errArgs = new Object[1]; /* 617 */ errArgs[0] = method; /* 618 */ errMsg = MessageFormat.format(errMsg, errArgs); /* */ /* 620 */ resp.sendError(501, errMsg); /* */ } /* */ }
以上是关于HttpServlet Service方法的主要内容,如果未能解决你的问题,请参考以下文章
继承了httpservlet重写service()与重写doget()dopost()区别