zoukankan      html  css  js  c++  java
  • 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);
    /*     */     }
    /*     */   }
  • 相关阅读:
    js 格式化时间
    javascript Base64 加密解密方法
    为什么给元素添加了z-index却没有效果
    浮动 与 清除浮动
    Vue 介绍 以及 学习总结(这里不详细展开)
    redux 的基础用法
    c# 几种深拷贝方式的比较
    C#四种深拷贝方法
    Innershar C#中Skip和Take的用法
    DataTable.AcceptChanges方法有何用处
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/6692566.html
Copyright © 2011-2022 走看看