zoukankan      html  css  js  c++  java
  • 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);
    }
    }
    从上面可以看出 这里的service是用来转向的,但是如果你在自己的servlet类中覆盖了service方法,比如说你的service是这样的:
    public void service(ServletRequest req, ServletResponse res)
    throws ServletException, IOException {
    res.getOutputStream().print(
    "image is <img src='images/downcoin.gif'></img><br>");
    }

    那么这时service就不是用来转向的,而是用来处理业务的,现在不论你的客户端是用pos还是get来请求此servlet
    都会执行service方法也只能执行servlet方法,不会去执行doPost或是doGet方法。

  • 相关阅读:
    转 : jmeter分布式测试的坑
    Node.js 事件循环
    ubuntu 16.04 安装nodejs
    java中native的用法
    分布式与集群的概念区别
    IntegerToBinaryString
    Mysql InnoDB事务
    浅析Mysql InnoDB存储引擎事务原理
    Mysql数据库事务的隔离级别和锁的实现原理分析
    MySQL中MyISAM和InnoDB的区别
  • 原文地址:https://www.cnblogs.com/canceler/p/4676754.html
Copyright © 2011-2022 走看看