home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / icsclass.jar / javax / servlet / http / HttpServlet.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-15  |  5.3 KB  |  229 lines

  1. package javax.servlet.http;
  2.  
  3. import java.io.IOException;
  4. import java.io.OutputStream;
  5. import java.io.Serializable;
  6. import java.lang.reflect.Method;
  7. import java.util.Enumeration;
  8. import javax.servlet.GenericServlet;
  9. import javax.servlet.ServletException;
  10. import javax.servlet.ServletOutputStream;
  11. import javax.servlet.ServletRequest;
  12. import javax.servlet.ServletResponse;
  13.  
  14. public abstract class HttpServlet extends GenericServlet implements Serializable {
  15.    protected void doGet(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
  16.       var2.sendError(400, "GET is not supported by this URL");
  17.    }
  18.  
  19.    protected long getLastModified(HttpServletRequest var1) {
  20.       return -1L;
  21.    }
  22.  
  23.    private void doHead(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
  24.       NoBodyResponse var3 = new NoBodyResponse(var2);
  25.       this.doGet(var1, var3);
  26.       var3.setContentLength();
  27.    }
  28.  
  29.    protected void doPost(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
  30.       var2.sendError(400, "POST is not supported by this URL");
  31.    }
  32.  
  33.    protected void doPut(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
  34.       var2.sendError(400, "PUT is not supported by this URL");
  35.    }
  36.  
  37.    protected void doDelete(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
  38.       var2.sendError(400, "DELETE is not supported by this URL");
  39.    }
  40.  
  41.    private Method[] getAllDeclaredMethods(Class var1) {
  42.       if (var1.getName().equals("javax.servlet.http.HttpServlet")) {
  43.          return null;
  44.       } else {
  45.          int var2 = 0;
  46.          Method[] var3 = this.getAllDeclaredMethods(var1.getSuperclass());
  47.          Method[] var4 = var1.getDeclaredMethods();
  48.          if (var3 == null) {
  49.             return var4;
  50.          } else {
  51.             Method[] var5 = new Method[var3.length + var4.length];
  52.  
  53.             for(int var6 = 0; var6 < var3.length; var2 = var6++) {
  54.                var5[var6] = var3[var6];
  55.             }
  56.  
  57.             ++var2;
  58.  
  59.             for(int var7 = var2; var7 < var4.length + var2; ++var7) {
  60.                var5[var7] = var4[var7 - var2];
  61.             }
  62.  
  63.             return var5;
  64.          }
  65.       }
  66.    }
  67.  
  68.    protected void doOptions(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
  69.       Method[] var3 = this.getAllDeclaredMethods(this.getClass());
  70.       boolean var4 = false;
  71.       boolean var5 = false;
  72.       boolean var6 = false;
  73.       boolean var7 = false;
  74.       boolean var8 = false;
  75.       boolean var9 = true;
  76.       boolean var10 = true;
  77.  
  78.       for(int var11 = 0; var11 < var3.length; ++var11) {
  79.          Method var12 = var3[var11];
  80.          if (var12.getName().equals("doGet")) {
  81.             var4 = true;
  82.             var5 = true;
  83.          }
  84.  
  85.          if (var12.getName().equals("doPost")) {
  86.             var6 = true;
  87.          }
  88.  
  89.          if (var12.getName().equals("doPut")) {
  90.             var7 = true;
  91.          }
  92.  
  93.          if (var12.getName().equals("doDelete")) {
  94.             var8 = true;
  95.          }
  96.       }
  97.  
  98.       String var13 = null;
  99.       if (var4 && var13 == null) {
  100.          var13 = "GET";
  101.       }
  102.  
  103.       if (var5) {
  104.          if (var13 == null) {
  105.             var13 = "HEAD";
  106.          } else {
  107.             var13 = var13 + ", HEAD";
  108.          }
  109.       }
  110.  
  111.       if (var6) {
  112.          if (var13 == null) {
  113.             var13 = "POST";
  114.          } else {
  115.             var13 = var13 + ", POST";
  116.          }
  117.       }
  118.  
  119.       if (var7) {
  120.          if (var13 == null) {
  121.             var13 = "PUT";
  122.          } else {
  123.             var13 = var13 + ", PUT";
  124.          }
  125.       }
  126.  
  127.       if (var8) {
  128.          if (var13 == null) {
  129.             var13 = "DELETE";
  130.          } else {
  131.             var13 = var13 + ", DELETE";
  132.          }
  133.       }
  134.  
  135.       if (var9) {
  136.          if (var13 == null) {
  137.             var13 = "TRACE";
  138.          } else {
  139.             var13 = var13 + ", TRACE";
  140.          }
  141.       }
  142.  
  143.       if (var10) {
  144.          if (var13 == null) {
  145.             var13 = "OPTIONS";
  146.          } else {
  147.             var13 = var13 + ", OPTIONS";
  148.          }
  149.       }
  150.  
  151.       var2.setHeader("Allow", var13);
  152.    }
  153.  
  154.    protected void doTrace(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
  155.       String var4 = "\r\n";
  156.       String var5 = "TRACE " + var1.getRequestURI() + " " + var1.getProtocol();
  157.  
  158.       String var7;
  159.       for(Enumeration var6 = var1.getHeaderNames(); var6.hasMoreElements(); var5 = var5 + var4 + var7 + ": " + var1.getHeader(var7)) {
  160.          var7 = (String)var6.nextElement();
  161.       }
  162.  
  163.       var5 = var5 + var4;
  164.       int var3 = var5.length();
  165.       var2.setContentType("message/http");
  166.       var2.setContentLength(var3);
  167.       ServletOutputStream var9 = var2.getOutputStream();
  168.       var9.print(var5);
  169.       ((OutputStream)var9).close();
  170.    }
  171.  
  172.    protected void service(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
  173.       String var3 = var1.getMethod();
  174.       if (var3.equals("GET")) {
  175.          long var10 = var1.getDateHeader("If-Modified-Since");
  176.          long var6 = this.getLastModified(var1);
  177.          this.maybeSetLastModified(var2, var6);
  178.          if (var10 != -1L && var6 != -1L) {
  179.             long var8 = System.currentTimeMillis();
  180.             if (var8 >= var10 && var10 >= var6) {
  181.                var2.sendError(304);
  182.             } else {
  183.                this.doGet(var1, var2);
  184.             }
  185.          } else {
  186.             this.doGet(var1, var2);
  187.          }
  188.       } else if (var3.equals("HEAD")) {
  189.          long var4 = this.getLastModified(var1);
  190.          this.maybeSetLastModified(var2, var4);
  191.          this.doHead(var1, var2);
  192.       } else if (var3.equals("POST")) {
  193.          this.doPost(var1, var2);
  194.       } else if (var3.equals("PUT")) {
  195.          this.doPut(var1, var2);
  196.       } else if (var3.equals("DELETE")) {
  197.          this.doDelete(var1, var2);
  198.       } else if (var3.equals("OPTIONS")) {
  199.          this.doOptions(var1, var2);
  200.       } else if (var3.equals("TRACE")) {
  201.          this.doTrace(var1, var2);
  202.       } else {
  203.          var2.sendError(501, "Method '" + var3 + "' is not defined in RFC 2068");
  204.       }
  205.    }
  206.  
  207.    private void maybeSetLastModified(HttpServletResponse var1, long var2) {
  208.       if (!var1.containsHeader("Last-Modified")) {
  209.          if (var2 >= 0L) {
  210.             var1.setDateHeader("Last-Modified", var2);
  211.          }
  212.  
  213.       }
  214.    }
  215.  
  216.    public void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException {
  217.       HttpServletRequest var3;
  218.       HttpServletResponse var4;
  219.       try {
  220.          var3 = (HttpServletRequest)var1;
  221.          var4 = (HttpServletResponse)var2;
  222.       } catch (ClassCastException var5) {
  223.          throw new ServletException("non-HTTP request or response");
  224.       }
  225.  
  226.       this.service(var3, var4);
  227.    }
  228. }
  229.