servlet 中 service doGet doPost 的联系和区别

在 servlet 中默认情况下,无论你是 get 还是 post 提交过来 都会经过 service() 方法来处理,然后转向到 doGet 或是 doPost 方法,可以看 HttpServlet 类的 service 方法:


protected void service(HttpServletRequest req, HttpServletResponse resp)   
       throws ServletException, IOException   
    {   
        String method = req.getMethod();   
       if(method.equals("GET"))   
        {   
           long lastModified = getLastModified(req);   
           if(lastModified == -1L)   
            {   
                doGet(req, resp);   
            } else  
            {   
               long ifModifiedSince = req.getDateHeader("If-Modified-Since");   
               if(ifModifiedSince < (lastModified / 1000L) * 1000L)   
                {   
                    maybeSetLastModified(resp, lastModified);   
                    doGet(req, resp);   
                } else  
                {   
                    resp.setStatus(304);   
                }   
            }   
        } else  
       if(method.equals("HEAD"))   
        {   
           long lastModified = getLastModified(req);   
            maybeSetLastModified(resp, lastModified);   
            doHead(req, resp);   
        } else  
       if(method.equals("POST"))   
            doPost(req, resp);   
       else  
       if(method.equals("PUT"))   
            doPut(req, resp);   
       else  
       if(method.equals("DELETE"))   
            doDelete(req, resp);   
       else  
       if(method.equals("OPTIONS"))   
            doOptions(req, resp);   
       else  
       if(method.equals("TRACE"))   
        {   
            doTrace(req, resp);   
        } else  
        {   
            String errMsg = lStrings.getString("http.method_not_implemented");   
            Object errArgs[] = new Object[1];   
            errArgs[0] = method;   
            errMsg = MessageFormat.format(errMsg, errArgs);   
            resp.sendError(501, errMsg);   
        }   
    }  


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值