Inhaltsverzeichnis der Klassen:

BookOrdering
Order
User
Book
JSPHelper

BOOKORDERING

 
               package com.bookshop.logic;
               /**
                *      Bookshop
                *
                *      JSP and Servlet Combination for Webprogramming
                *
                *      @author Horst Leitenmüller, 9255833 / 881
                *      @version 1.0
                */
               
               
               import java.io.*;
               import java.util.*;
               import java.text.*;
               import java.sql.SQLException;
               
               
               import javax.servlet.*;
               import javax.servlet.http.*;
               
               import com.bookshop.database.*;
               
               public class BookOrdering extends HttpServlet
               {
                   ////////////////////////////////////////////////////////////////////////////
                   // Class Variables
                   ////////////////////////////////////////////////////////////////////////////
                  
                   // JSP Helper Class for encode URL
                   JSPHelper jsph = new JSPHelper();
                   // Accessor for the Database
                   Accessor accessor;
                   
                   // Servlet Name for Url Encoding
                   String servletName= "";
                   
                   // Order List for the Books
                   Vector orderList;
                   
                   // variables for checking, which Browser requests
                   final static int HTML = 1, WML = 2, VXML=3;
                   
                   // pathvariables for Sourcedestinationof HTML and WML and VXML
                   String PATHWML = "";
                   String PATHHTML = "";
                   String PATHVXML = "";
                   
               
                       ///////////////////////////////////////////////////////////////////
                       // initialisation of the Servlet
                       ///////////////////////////////////////////////////////////////////
                       
                       
                       public void init(ServletConfig config) throws ServletException
                       {
                           super.init(config);
                       String value;
                       // check the Databasetype and init
                       this.accessor = new Accessor();
               
               
                       if ((value = config.getInitParameter("Servlet_Name")) == null) 
                       {
                           throw new ServletException("Servlet Name not available");
                       } 
                       else 
                       {
                           servletName = value;
                       }
                       
                       jsph.setServletName(servletName);
                       if ((value = config.getInitParameter("HTML_Path")) == null) 
                       {
                           PATHHTML = "";
                       } 
                       else 
                       {
                           PATHHTML = value;
                       }
                       if ((value = config.getInitParameter("WML_Path")) == null) 
                       {
                           PATHWML = "";
                       } 
                       else 
                       {
                           PATHWML = value;
                       }
                
                       if ((value = config.getInitParameter("VXML_Path")) == null) 
                       {
                           PATHVXML = "";
                       } 
                       else 
                       {
                           PATHVXML = value;
                        }
                       
                       if ((value = config.getInitParameter("dbDriver")) == null) 
                       {
                           throw new ServletException("FATAL ERROR: Parameter dbDriver not found");
                       } 
                       else 
                       {
                           accessor.setDriver(value);
                       }
               
                       if ((value = config.getInitParameter("dbConnect")) == null) 
                       {
                           throw new ServletException("DB-Connection failed");
                       } 
                       else 
                       {
                           accessor.setURL(value);
                       }
               
                       // db user and password (optional)
                       if ((value=config.getInitParameter("dbUser")) != null)
                       {
                           accessor.setUser(value);
                       }
               
                       if ((value=config.getInitParameter("dbPassword")) != null)
                       {
                           accessor.setPwd(value);
                       }
                       
                       // open database 
                       try
                       {
                           accessor.getConnection();
                       } catch (SQLException e) 
                       {
                           e.printStackTrace();
                           throw new ServletException("Couldn't open database");
                       }
               
                       }
                       
                   ///////////////////////////////////////////////////////////////////////////
                   // public Methods for request and response
                   ///////////////////////////////////////////////////////////////////////////
               
                    /**
                   * Process GET requests
                   *
                   * @param request
                   * @param response
                   *
                   * @throws IOException
                   * @throws ServletException
                   *
                   * @see
                   */
                   public void doGet(HttpServletRequest request, HttpServletResponse response)
                         throws ServletException, IOException 
                   {
                       doGetPost(request, response);
                   }
               
               
                    /**
                   * Process POST requests
                   *
                   * @param request
                   * @param response
                   *
                   * @throws IOException
                   * @throws ServletException
                   *
                   * @see
                   */
                   public void doPost(HttpServletRequest request, HttpServletResponse response)
                         throws ServletException, IOException 
                   {
                       doGetPost(request, response);
                   }
               
               
                    /**
                   * Process GET and POST requests, called from doGet and doPost.
                   *
                   * @param request
                   * @param response
                   *
                   * @throws IOException
                   * @throws ServletException
                   *
                   * @see
                   */
                   public void doGetPost(HttpServletRequest request,
                                       HttpServletResponse response) throws ServletException,
                                       IOException 
                   {
                       HttpSession session = request.getSession(true);
                       
                       if(session.isNew())
                       {
                           clearSession(session);
                           orderList = new Vector();
                           session.putValue("OrderList", orderList);
                       }
                       else
                       { // an old session came in 
                           if(((Vector)session.getValue("OrderList"))== null)
                           { // session was cleared before
                               orderList = new Vector();
                               session.putValue("OrderList", orderList);
                           }
                       }
                       // read the all books of the database
                       Vector v = accessor.getBooks();
                       request.setAttribute("booklist", v);
                       
                       switch(checkBrowserType(request))
                       {
                           case HTML: 
                                               response.setHeader("Cache-control", "no-cache");
                                               response.setHeader("Pragma", "no-cache"); 
                                               
                                                  if (request.getParameter("next") != null) 
                                                  {
                                                      if (request.getParameter("next").equals("update") || request.getParameter("next").equals("delete"))
                                                      {
                                                          getItemfromRequest(request,response,session);
                                                          gotoPage(PATHHTML + "OrderStatus.jsp", request, response);
                                                      }
                                                          if (request.getParameter("next").equals("order")) 
                                                          {
                                                                 gotoPage(PATHHTML + "Registration.jsp", request, response);
                                                          } else if (request.getParameter("next").equals("ordandreg")) 
                                                          {
                                                              if(checkRegistration(request))
                                                              {
                                                                  User u = new User(0,
                                                                   request.getParameter("fname"),
                                                                   request.getParameter("lname"),
                                                                   request.getParameter("address"),
                                                                   request.getParameter("zipcode"));
                                                   System.out.println(request.getParameter("fname"));
                                                   u = accessor.searchUser(u);
                                                   System.out.println("V"+u.getFName());
                                                   session.putValue("user", u);
                                                   int orderid = accessor.getNewOrderID();
                                                   accessor.saveOrder(u, (Vector)session.getValue("OrderList"), new Integer(orderid));
                                                   session.putValue("OrderID", new Integer(orderid));
                                                                     gotoPage(PATHHTML + "Finish.jsp", request, response);
                                                   clearSession(session);
                                                                 }
                                                                 else
                                                                     gotoPage(PATHHTML + "Registration.jsp", request, response);
                                                          } 
                                                  } 
                                                  else 
                                                  { // next == null first contact to this Site
                                                          gotoPage(PATHHTML + "Booklist.jsp", request, response);
                                                  }
               
                                       break;
                           case WML: // its only a part implemented
                                               //response.setContentType("text/vnd.wap.wml");
                                               //response.setHeader("Cache-control", "no-cache");
               
                                              if (request.getParameter("next") != null) 
                                              {
                                                          if (request.getParameter("next").equals("Order")) 
                                                          {
                                                                 gotoPage(PATHWML + "Order.jsp", request, response);
                                                             } else if (request.getParameter("next").equals("Registration")) 
                                                             {
                                                                 gotoPage(PATHWML + "Registration.jsp", request, response);
                                                          } else if (request.getParameter("next").equals("update")) 
                                                          {
                                                                 gotoPage(PATHWML + "Finish.jsp", request, response);
                                                          } 
                                                  } 
                                                  else 
                                                  { // next == null first contact to this Site
                                                          gotoPage(PATHWML + "Booklist.jsp", request, response);
                                                  }
                                   break;
                           case VXML:  // this part is not implemented
                                  
                                               //response.setContentType("text/x-vxml");
                                               //response.setHeader("Cache-control", "no-cache");
               
                                              if (request.getParameter("next") != null) 
                                              {
                                                          if (request.getParameter("next").equals("Order")) 
                                                          {
                                                                 gotoPage(PATHVXML + "Order.jsp", request, response);
                                                             } else if (request.getParameter("next").equals("Registration")) 
                                                             {
                                                                 gotoPage(PATHVXML + "Registration.jsp", request, response);
                                                          } else if (request.getParameter("next").equals("update")) 
                                                          {
                                                                 gotoPage(PATHVXML + "Finish.jsp", request, response);
                                                          } 
                                                  } 
                                                  else 
                                                  { // next == null first contact to this Site
                                                          gotoPage(PATHVXML + "Booklist.jsp", request, response);
                                                  }
                                   break;
                           default: break;
                       }
                       }
                       
                   ////////////////////////////////////////////////////////////////////////////
                   // Browser Detection
                   ////////////////////////////////////////////////////////////////////////////
               
                   /**
                   * Returns if the requesting browser is a WML or HTML browser.
                   * NOTE: This is a very simple 
                   * @return WML browser, HTML browser as int or VXML as int
                   */
               
                   public int checkBrowserType(HttpServletRequest request) 
                   {
                       String userAgent = request.getHeader("User-Agent");
                                              
                       if ((userAgent == null) || 
                            userAgent.regionMatches(true, 0, "nokia", 0, 5))
                       {
                           return WML;
                       } 
                       else if (userAgent.regionMatches(true, 0, "Mozilla" , 0, 7) ||
                                userAgent.regionMatches(true, 0, "MSIE", 0, 4))
                       {
                           return HTML;
                       }
                       else
                           return VXML;
                   }
                       
                       
                       
                   ///////////////////////////////////////////////////////////////////////////////////
                   // forwards the request to a JSP side
                   ///////////////////////////////////////////////////////////////////////////////////
                   /**
                   * fowards the request to the correct Page
                   */
                   private void gotoPage(String address, HttpServletRequest request, HttpServletResponse response)
                           throws ServletException, IOException
                   {
                       RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(address);
                       dispatcher.forward(request, response);
                   }
                   ///////////////////////////////////////////////////////////////////////////////////
                   // clearing the Session 
                   ///////////////////////////////////////////////////////////////////////////////////
                       
                       // clears the session and removes the OrderList value
                       private void clearSession(HttpSession session)
                       {
                           session.removeValue("OrderList");
                           session.removeValue("OrderID");
                           session.removeValue("user");
                       }
                   ///////////////////////////////////////////////////////////////////////////////////
                   // Item Handling
                   ///////////////////////////////////////////////////////////////////////////////////
                       public void getItemfromRequest(HttpServletRequest request, HttpServletResponse response, HttpSession session)
                       {
                           if (request.getParameter("update") != null)
                       {
                           int isbn = 0;       // the isbn from request
                           int countage = 0;   // the countage of the book choosen
                           
                           try
                           {
                               isbn = Integer.parseInt(request.getParameter("isbn"));
                               countage = Integer.parseInt(request.getParameter("countage"));
                               // add the choosen book to the shopping cart
                               addItem(session, isbn, countage);
                           }catch (NumberFormatException e){}
                       }
                       else if (request.getParameter("delete") != null)
                       {
                           int isbn = 0;
                           try
                           {
                               isbn = Integer.parseInt(request.getParameter("isbn"));
                               deleteItem(session, isbn);
                           }catch (NumberFormatException e){}
                       }
                       }
                       
                       // adds an Item to the shopping cart
                       public void addItem(HttpSession session, int isbn, int countage)
                       {
                           Vector oL;
                           oL = (Vector) session.getValue("OrderList");
                           Order o = null;
                           Book b = accessor.getBookByISBN(isbn);
                           
                           if ((o = isalreadyChoosen(isbn,oL)) != null)
                           {
                               o.setCountage(o.getCountage()+ countage);
                           }
                           else
                           {
                               // a new Order for this Item is created           
                               o = new Order(-1,    //the user ID is fixed when OrderList is orderd !!
                                             isbn,
                                             countage,
                                             b);
                               if(oL == null)
                                   oL = new Vector();
                                   
                               // add the Element to the shopping cart
                           oL.addElement(o);
                           }
                           session.putValue("OrderList", oL);
                       }
                       
                       // deletes an item of the shopping cart
                       private void deleteItem(HttpSession session, int isbn)
                       {
                           Vector oL = (Vector) session.getValue("OrderList");
                           
                           Enumeration e = oL.elements();
                           Order o = (Order)e.nextElement();
                           
                           while(e.hasMoreElements() && o.getISBN() != isbn)
                               o = (Order) e.nextElement();
                           
                           if (o.getISBN() == isbn)
                           oL.removeElement(o);
                       }
                       
                       // check if a book is already choosen and return the order for the book
                       private Order isalreadyChoosen(int isbn, Vector oL)
                       {
                           Order o = null;
                           if(oL != null && oL.size() >= 1)
                           {
                               Enumeration e;
                               e = oL.elements();
                               o = (Order) e.nextElement();
                               // check if the book is already in the order
                               while (e.hasMoreElements() && o.getISBN() != isbn)
                               {
                                   o = (Order) e.nextElement();
                               }
                               if(o.getISBN() != isbn)
                                   return null;
                           }
                       return o;
                       }
                       
                       // checks the registration if all fields filled true is returned (not to be filled UserID)
                       private boolean checkRegistration(HttpServletRequest request)
                       {
                           if(request.getParameter("fname") != null)         
                               return !(request.getParameter("fname").equals("")||request.getParameter("lname").equals("")||
                                    request.getParameter("address").equals("")||request.getParameter("zipcode").equals(""));
                           
                           return false;
                       }
                       
                   // closes all Connection and destroys the Servlet
                       public void destroy()
                       {
                       // close database */
                       try 
                       {
                           accessor.closeConnection();
                       } catch (Exception e) {
                           e.printStackTrace();
                       }
                       }
               
                   // returns the Servlet Info
                       public String getServletInfo()
                       {
                               return "A Servlet for Book ordering";
                       }
               }              
Zurück zum Anfang

USER

 
                       package com.bookshop.logic;
                       
                       public class User
                       {
                           ////////////////////////////////////////////////////
                           // class variables
                           ////////////////////////////////////////////////////
                           int userID;
                           String fname;
                           String lname;
                           String address;
                           String zipcode;
                           ////////////////////////////////////////////////////
                           // constructor
                           ////////////////////////////////////////////////////
                           
                           public User(int userID, String fname, String lname, String address, String zipcode)
                           {
                               setUserID(userID);
                               setFName(fname);
                               setLName(lname);
                               setAddress(address);
                               setZipCode(zipcode);
                           }
                           
                           ////////////////////////////////////////////////////
                           // set methods of User
                           ////////////////////////////////////////////////////
                           
                           public void setUserID(int userID)
                           {
                               this.userID = userID;
                           }
                           
                           public void setFName(String fname)
                           {
                               this.fname = fname;
                           }
                           
                           public void setLName(String lname)
                           {
                               this.lname = lname;
                           }
                           
                           public void setAddress(String address)
                           {
                               this.address = address;
                           }
                           
                           public void setZipCode(String zipcode)
                           {
                               this.zipcode = zipcode;
                           }
                           
                           ////////////////////////////////////////////////////
                           // get methods of User
                           ////////////////////////////////////////////////////
                           
                           public int getUserID()
                           {
                               return userID;
                           }
                           
                           public String getFName()
                           {
                               return fname;
                           }
                           
                           public String getLName()
                           {
                               return lname;
                           }
                           public String getAddress()
                           {
                               return address;
                           }
                           
                           public String getZipCode()
                           {
                               return zipcode;
                           }
                       }
Zurück zum Anfang   

BOOK

 
                       package com.bookshop.logic;
                       
                       public class Book
                       {
                           ////////////////////////////////////////////////////
                           // class variables
                           ////////////////////////////////////////////////////
                           int isbn;
                           String autor;
                           String title;
                           ////////////////////////////////////////////////////
                           // constructor
                           ////////////////////////////////////////////////////
                           
                           public Book(int isbn, String autor, String title)
                           {
                               setISBN(isbn);
                               setAutor(autor);
                               setTitle(title);
                           }
                           
                           ////////////////////////////////////////////////////
                           // set methods of Book
                           ////////////////////////////////////////////////////
                           
                           public void setISBN(int isbn)
                           {
                               this.isbn = isbn;
                           }
                           
                           public void setAutor(String autor)
                           {
                               this.autor = autor;
                           }
                           
                           public void setTitle(String title)
                           {
                               this.title = title;
                           }
                           
                           ////////////////////////////////////////////////////
                           // get methods of Book
                           ////////////////////////////////////////////////////
                           
                           public int getISBN()
                           {
                               return isbn;
                           }
                           
                           public String getAutor()
                           {
                               return autor;
                           }
                           
                           public String getTitle()
                           {
                               return title;
                           }
                       }
Zurück zum Anfang

ORDER

 
                       package com.bookshop.logic;
                       
                       public class Order
                       {
                           ////////////////////////////////////////////////////
                           // class variables
                           ////////////////////////////////////////////////////
                           
                           int orderID;
                           int userID;
                           int isbn;
                           Book book;
                           int countage;
                           
                           ////////////////////////////////////////////////////
                           // Constructor
                           ////////////////////////////////////////////////////
                           
                           // constructor for an Order
                           public Order(int orderID, int userID, int isbn, int countage, Book book)
                           {
                               setOrderID(orderID);
                               setUserID(userID);
                               setISBN(isbn);
                               setCountage(countage);
                               setBook(book);
                           }
                       
                           // constructor for an Order
                           public Order(int userID, int isbn, int countage, Book book)
                           {
                               setUserID(userID);
                               setISBN(isbn);
                               setCountage(countage);
                               setBook(book);
                           }
                         
                           ////////////////////////////////////////////////////
                           // set methods of Order
                           ////////////////////////////////////////////////////
                           
                           public void setOrderID(int orderID)
                           {
                               this.orderID = orderID;
                           }
                           
                           public void setUserID(int userID)
                           {
                               this.userID = userID;
                           }
                           
                           public void setISBN(int isbn)
                           {
                               this.isbn = isbn;
                           }
                           
                           public void setBook(Book b)
                           {
                               this.book = b;
                           }
                           
                           public void setCountage(int countage)
                           {
                               this.countage = countage;   
                           }
                           
                           ////////////////////////////////////////////////////
                           // get methods of Order
                           ////////////////////////////////////////////////////
                           
                           public int getOrderID()
                           {
                               return orderID;
                           }
                           
                           public int getUserID()
                           {
                               return userID;
                           }
                           
                           public int getISBN()
                           {
                               return isbn;
                           }
                           
                           public Book getBook()
                           {
                               return book;
                           }
                           
                           public int getCountage()
                           {
                               return countage;
                           }
                       }
Zurück zum Anfang                  

JSPHELPER

 
                       package com.bookshop.logic;
                       
                       import javax.servlet.*;
                       import javax.servlet.http.*;
                       
                       import java.util.Properties;
                       import java.util.Random;
                       
                       public class JSPHelper 
                       {
                           private static String servletName;
                           
                          
                           public static void setServletName(String str)
                           {
                               servletName = str;
                           }
                           
                           public static String getServletInfo()
                           {
                               return servletName;
                           }
                           
                           
                           public static String getBaseUrl(HttpServletRequest request, HttpServletResponse response)
                           {
                               String encodedURL;
                               HttpSession session = request.getSession(true);
                       
                               encodedURL = response.encodeURL(servletName);
                               return encodedURL;
                           }
                           
                           ///////////////////////////////////////////////////////////////////////////
                           // URL Rewriting to avoid Caching by Wap Handy's
                           ///////////////////////////////////////////////////////////////////////////
                       
                           public static String URLRewriter() 
                           {
                               return "r=" + getRandom();
                           }
                           
                           protected static int getRandom() 
                           {
                               Random randomizer;
                               int rnd;
                       
                               randomizer = new Random();
                               rnd = Math.abs(randomizer.nextInt());
                       
                               return rnd;
                           }
                       }       
                       

Zurück zum Anfang