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

  • 相关阅读:
    vue.js 条件与循环
    vue.js 声明式渲染
    数据库设计范式?
    用户购物车,实现添加商品的功能!
    用户购物车功能的实现。
    初始ajax技术
    SQL语句中 INNER JOIN的用法!
    商城 用户登录、注册、注销,购物车。
    EL和 JSTL? 在JSP中简化 java代码的写法!
    小数点后保留2位小数的正则表达式
  • 原文地址:https://www.cnblogs.com/canceler/p/4676754.html
Copyright © 2011-2022 走看看