home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / VCAFE.3.0A / Sample.bin / CreditCheck.java < prev    next >
Text File  |  1998-10-17  |  4KB  |  178 lines

  1. package symantec.sourcebook.creditcheck;
  2.  
  3. import java.io.*;
  4. import javax.servlet.*;
  5. import javax.servlet.http.*;
  6.  
  7. public class CreditCheck extends HttpServlet
  8. {
  9.     
  10.     protected static int FORMINPUT_PAGE_NUM = 0;
  11.     protected static int CARDENTRY_PAGE_NUM = 1;
  12.     protected static int ERROR_PAGE_NUM = 2;
  13.     protected static int SUCCESS_PAGE_NUM = 3;
  14.  
  15.  
  16.     
  17.  
  18.     /**
  19.      *  Class names of the classes that handle each page.
  20.      *
  21.      */
  22.     public  String[] pageHandlerNames = {
  23.                             "symantec.sourcebook.creditcheck.PHFormInput",
  24.                             "symantec.sourcebook.creditcheck.PHCardEntry",
  25.                             "symantec.sourcebook.creditcheck.PHError",
  26.                             "symantec.sourcebook.creditcheck.PHSuccess"
  27.                          }; 
  28.     
  29.     
  30.     public String getServletInfo()
  31.     {
  32.         return "Dummy credit check";
  33.     }
  34.  
  35.     /**
  36.      * Respond to client GET requests.
  37.      * All get requests are handled the same way as
  38.      * client POST requets.
  39.      *
  40.      */
  41.     public void doGet(HttpServletRequest req, HttpServletResponse resp)
  42.     throws ServletException, IOException
  43.     {
  44.         // handle the GET the same way we handle POSTS
  45.  
  46.         doPost(req,resp);
  47.  
  48.     }
  49.  
  50.     
  51.     /**
  52.      * Handle client POST request.
  53.      * This is the main function of this servlet.
  54.      * It determines the page being POSTed,
  55.      * obtains the PageHandler for the page.  Calls
  56.      * the PageHandler to validate the page.  Calls
  57.      * the PageHandler to obtain the next page to be served
  58.      * and serves it.
  59.      *
  60.      *
  61.      */
  62.      
  63.     public void doPost(HttpServletRequest req, HttpServletResponse resp)
  64.     throws ServletException, IOException
  65.     {
  66.         
  67.  
  68.         // don't accept giant posts, they're either errors or bogus
  69.  
  70.         if(req.getContentLength() > 4096)
  71.         {
  72.             resp.sendError(HttpServletResponse.SC_BAD_REQUEST);
  73.             return;
  74.         }
  75.  
  76.         // determine which form has been submitted
  77.  
  78.         int pageNumber = getPageNumber(req);
  79.  
  80.         // get handler for that page
  81.  
  82.         PageHandler pageHandler = getPageHandler(pageNumber);
  83.  
  84.         // validate the contents of the form
  85.  
  86.         Object pageData = pageHandler.validate(getServletConfig(),req,resp);
  87.  
  88.         // Ask the page handler what page should be served
  89.         // next (often determined in validate)
  90.  
  91.         pageNumber = pageHandler.nextPage();
  92.  
  93.         // get the page handler for the next page to be served...
  94.  
  95.         pageHandler = getPageHandler(pageNumber);
  96.  
  97.         // ...and serve it up
  98.  
  99.         pageHandler.serve(pageData,resp);
  100.  
  101.     }
  102.     
  103.    /**
  104.      * This method obtains the page handler for the specified page number.
  105.      *
  106.      */
  107.  
  108.     protected PageHandler getPageHandler(int pageNumber) throws ServletException
  109.     {
  110.  
  111.  
  112.         // get the name of the class that handles this page number
  113.         // this will be a subclass of PageHandler
  114.  
  115.         String pageHandlerName = pageHandlerNames[pageNumber];
  116.  
  117.  
  118.         try
  119.         {
  120.             // instantiate the handler for this page
  121.  
  122.             PageHandler pageHandler = (PageHandler)(Class.forName(pageHandlerName)).newInstance();
  123.  
  124.             return pageHandler;
  125.          }
  126.         catch(Exception e)
  127.         {
  128.         }
  129.  
  130.  
  131.         // some sort of exception occured trying to instantiate
  132.         throw new ServletException("(Order) Internal servlet error (1)");
  133.  
  134.     }
  135.  
  136.     /**
  137.      * Return the current page number. This number is embeded in a hidden
  138.      * field on each of the pages served.
  139.      */
  140.  
  141.     protected int getPageNumber(HttpServletRequest request)
  142.     {
  143.  
  144.             int pageNumber = 0;
  145.  
  146.             // obtain the value of the "page" field on the current form
  147.  
  148.             String pageString = request.getParameter("page");
  149.  
  150.             // if no page parameter is found, go with page 0
  151.  
  152.             if(pageString == null)
  153.             {
  154.  
  155.                 return pageNumber;
  156.             }
  157.  
  158.             // ok, we have a page number, make sure its good and within
  159.             // range. (It always should be unless we made an error on one
  160.             // of our HTML forms, or a user has modified the form)
  161.  
  162.             try
  163.             {
  164.                 pageNumber = Integer.parseInt(pageString);
  165.                 if(pageNumber >= pageHandlerNames.length) pageNumber = 0;
  166.             }
  167.             catch(NumberFormatException e)
  168.             {
  169.                 pageNumber = 0;
  170.             }
  171.  
  172.  
  173.             return pageNumber;
  174.  
  175.     }
  176.  
  177.  
  178. }