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方法。

  • 相关阅读:
    由博客园页面样式挖出的一款心机软件
    SQL Server 各任务所维护
    [转载]SQL Server查找包含某关键字的存储过程3种方法
    Hibernate简单注解开发和事务处理(四)
    Hibernate实现简单的CRUD操作和常见类(三)
    Hibernate中hibernate.cfg.xml文件和Xxx.hbm.xml文件的详细解释(二)
    Hibernate开发环境的简单搭建及常见错误(一)
    Struts2配置异常错误处理(十六)
    Struts2实现类型转换器(十五)
    Struts2实现JSON和Ajax操作(十四)
  • 原文地址:https://www.cnblogs.com/canceler/p/4676754.html
Copyright © 2011-2022 走看看