zoukankan      html  css  js  c++  java
  • Servlet的体系

    进行HTTP服务操作时,Servet所使用的类

    接口

    Serlvet

    Servlet对象的根接口,声明了提供Servlet服务所需要用到方法

    ServletConfig

    Serlvet配置对象接口,声明了获取Servlet配置参数的方法

    ServletRequest 

    请求的接口,声明了请求操作的常用方法

    ServletResponse

    响应的接口,声明了响应的常用方法

    抽象类

    GenericServlet

    实现了Servlet和ServletConfig接口,重载了init方法,新增对application对象的访问方法

     public ServletContext getServletContext()
      {
        return getServletConfig().getServletContext();
      }
     public void init()
        throws ServletException
      {}
    

    HttpServlet

    继承了GenericServlet,重载了使用HttpServletRequst、HttpServletResponse接口使用参数的service方法,扩展了doGet和doPost方法实现业务功能

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException
      {
        String protocol = req.getProtocol();
        String msg = lStrings.getString("http.method_get_not_supported");
        if (protocol.endsWith("1.1")) {
          resp.sendError(405, msg);
        } else {
          resp.sendError(400, msg);
        }
      }
    dopost
     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException
      {
        String protocol = req.getProtocol();
        String msg = lStrings.getString("http.method_post_not_supported");
        if (protocol.endsWith("1.1")) {
          resp.sendError(405, msg);
        } else {
          resp.sendError(400, msg);
        }
      }
    
     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;
            try
            {
              ifModifiedSince = req.getDateHeader("If-Modified-Since");
            }
            catch (IllegalArgumentException iae)
            {
              long ifModifiedSince;
              ifModifiedSince = -1L;
            }
            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);
        }
      }
    
  • 相关阅读:
    C# 寻找数组中的最大子数组
    C# 求两个矩阵相交面积
    C# 排序方法
    oracleI基础入门(8)tableINTERSECT Crazy
    oracleI基础入门附(2)算总合百分比,算累积总合百分比 Crazy
    oracleI基础入门附(1)算中位数,算累积总计 Crazy
    oracleI基础入门(9)table子查询 Crazy
    oracleI基础入门(10)EXISTS Crazy
    oracleI基础入门(11)case Crazy
    oracleI基础入门(8)tableMINUS Crazy
  • 原文地址:https://www.cnblogs.com/MrWuNotebook/p/10121613.html
Copyright © 2011-2022 走看看