Stateless shopping cart for the web

Abstract: A shopping cart metaphor is emulated on a network (46) of server (20) and client (35) computing systems. A browser at the client station has a request module to send a shopping page request to the server. A shopping page module in the server sends a shopping page file (40) to the browser in response to the shopping page request. The shopping page file contains items selectable by a user using the browser. A shopping module at the browser generates an add request and sends the add request to the server. This add request contains selected items from the items that were selectable in the shopping page file. A receiver at the server receives the add request from the browser, and a cart list module at the server initialises a shopping cart list. An add module at the server adds the selected items to the shopping cart list. A shopping page module at the server converts the cart list to a cart field, generates a new shopping page file, embeds the cart field in the new shopping page file and sends the new shopping page file to the browser. In this way, the shopping cart field is in a shopping page file that may be managed by the browser at the client station (35).

Description: BACKGROUND OF THE INVENTION Field of the Invention. The present invention relates to a client computing station shopping across a network, such as the Internet, for items to be downloaded from a server computing system on the network. More particularly, the invention relates to the server handing off maintenance of a shopping cart metaphor to the client whereby the shopping process at the server is stateless, i.e. no maintenance of the shopping requests by the client. Description of Prior Art. Typical database or file-based shopping cart systems require that the user be uniquely identified in order to associate particular data stored on the server with a particular user. This requires the user to log-in or create an account, which is then stored in the server. Each subsequent request from the user must reference the unique identifier, either in the uniform resource locator (URL) or as hidden data passed back through a form submission. Either of these approaches require that the account or ID information of the user be stored on the remote server in the network for some definite period of time. Usually, the user must keep track of the account identifier in order that the prior session information can be retrieved. There is currently no reliable means to deduce the user's account information from the information accompanying a random request for a page. This is because many web servers, especially fire-walled servers, intentionally do not identify the sender in their data. When the remote server on the network serves the request from the user and stores the user's account information, this serving system must decide how long the data for an individual user will be stored. In a resource constrained serving system, it is possible that a particular user's account information will be deleted before the user has completed the transaction. For example, a user might start a transaction in the evening, collect several items from the server and then retire for the night leaving the transaction open. Upon returning to the transaction process in the morning, the user is likely to find that the nightly administrative clean up at the remote server has assumed that all transactions were abandoned or completed and has therefore deleted the previous evening's collection of items. US-A-5,623,656 (Lyons) discloses a preprocessing script-based data communications system and method that embeds information regarding the previous state of the system within script data. This effectively creates a state memory at a web server, which would otherwise be a stateless system relative to the users, or clients. Typically the scripts processed by this system are similar in structure and format to ordinary HTML scripts, with the addition of several commands that facilitate programming embedded state information. A client is afforded the capability of having one script influence another by exploiting the pre-processor imposed state memory. The server transmits a form containing fill-in blanks to the client, the client fills in a blank and transmits the filled-in field data back to the server. The server will then select, if necessary, another script file or based on the filled-in field data, respond with a script containing particular information. All, or part, of the information provided by the client in responding to the filled-in fields is stored in a database in the server. SUMMARY OF THE INVENTION In accordance with this invention, the above problems of prior shopping cart operations on networks, such as the Internet, have been solved by providing a computer program product stored on a computer usable medium, in accordance with the claims which follow, for stateless shopping cart operation at the server. In the stateless shopping cart operation, the server does not maintain a list of selected items for the shopping cart. Rather in each client transaction at the server, the server updates a data field identifying the contents of the shopping cart and sends the updated version of the shopping cart as a data field back to the client. The stateless shopping cart process is triggered by command or request for a shopping page transmitted from a browser program at a client station to a computer-server. At the server, this request invokes a market application program at the server. In response to the transmitted command, the market program generates and transmits an shopping page file to the browser. The browser builds a shopping page from said shopping page file and sends to the server data strings corresponding to user selected items from the shopping page received and stored by the browser. The server determines if a list containing identification of items previously selected by said user exists, and if not, creates a list identifying items currently selected. This list is returned as a hidden "cart" field in a shopping page file to the browser. This interaction between browser at the client and market program at the server to transmit, receive, add items to the list and return a cart field to the browser continues until terminated by the browser requesting downloading selected items in the cart to the user client station. The apparatus for emulating a shopping cart metaphor on a network of server and client computing systems has a request module in the browser to send a shopping page request to the server. A shopping page module in the server sends a shopping page file to the browser in response to the shopping page request. The shopping page file contains items selectable by a user using the browser. A shopping module at the browser generates an add request and sends the add request to the server. This add request contains selected items from the items that were selectable in the shopping page file. A receiver at the server receives the add request from the browser, and a cart list module at the server initializes a shopping cart list. An add module at the server adds the selected items to the shopping cart. A shopping page module at the server converts the cart list to a cart field, generates a new shopping page file, embeds the cart field in the new shopping page file and sends the new shopping page file to the browser. In this way, the shopping cart field is in a shopping page file that may be managed by the browser at the client station. As a further feature of the invention, the shopping module at the browser generates an add request and sends the add request to the server. This add request contains current selected items from the items selectable in the new shopping page file and previously selected items in the cart field. The cart list module at the server converting the cart field of previously selected items to a cart list of previously selected items, and the add module adds the currently selected items from the add request to the cart list. Therefore, the cart list contains previously selected items and the current selected items. As another feature of the invention the shopping page module has a convert-to-field module converting the cart list to the shopping cart field. This module also has a page file generator generating the shopping page file and embedding the shopping cart field in the shopping page file. The module then sends the shopping page file to the browser system. The great utility of the invention is that the maintenance of the shopping cart, i.e. the cart field, is under the control of the user through the browser at the client station. The server has no responsibilities or burdens regarding maintenance of the shopping cart. The foregoing and other features and advantages of the invention will be apparent from the following more particular description of a preferred embodiment of the invention as illustrated in the accompany drawings. BRIEF DESCRIPTION OF DRAWINGS Fig. 1 illustrates a computing system having clients and a client server communicating in a communication network, such as Internet, to perform the logical operations of the invention. Fig. 2, composed of Figs. 2A through 2G, illustrates the logical operations of a preferred embodiment of the invention. Figs. 3-6 are enlarged views of a monitor at a client or browser station showing the shopping page and "cart" page along with browser control displays. Fig. 7, composed of Figs. 7A through 7C, shows a source code example of a shopping page file containing the "cart" hidden file. DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS The embodiments of the invention described herein are implemented as logical operations in a distributed processing system having client and server computing systems. The logical operations of the present invention are implemented (1) as a sequence of computer implemented steps running on the computing system and (2) as interconnected machine modules within the computing system. The implementation is a matter of choice dependent on the performance requirements of the computing system implementing the invention. Accordingly, the logical operations making up the embodiments of the invention described herein are referred to variously as operations, steps or modules. In accordance with the invention, users at remote terminals in a network, communicate through the network to a computer server and are able to build a list of software articles or items that the user wishes to download from the server to his client workstation. As this embodiment of the invention is described herein, a web browser program on a client station for browsing a network, such as the Internet, will be referred to as the browser, and the server workstation with which the browser station is communicating during a shopping transaction will be referred to as the server. Further, the browser will be sending requests in the form of data strings to the server and be receiving page files in return from the server. The articles, or items, that the user is using the browser station to retrieve, will typically be software files such as device drivers. When the user completes selection of the items and requests download, then the server will be sending software files to the browser. To this end, and referring first to Fig. 1, the computing system 20, acting as a server through an application program 45, places at the remote user's command a plurality of pages 40 of information. These pages are originated by the application program 45 which is referred to hereinafter as the market program. Pages 40 are shopping pages produced by the market program at central processing unit (CPU) 23. CPU 23 generates the shopping page files and transmits them through the network 46 to the client stations 35, three of which are illustrated in Fig. 1. Shopping pages 40 built from the shopping page files contain items that are selectable by the user operator using the browser at a remote station 35. In FIG. 1, processor 21 of the computing system 20 includes an input/output section 22, a central processing unit 23, and a memory section 24. The input/output section 22 is connected to a keyboard 25, a display or monitor 26, and a disk storage unit 29 as well as an optical disk drive unit 27 for reading a cd-rom 28 and a floppy disk drive unit 30 for reading a diskette 31. Application program 45, or the market program as referred to herein, may be loaded into the computing system 20 from either the cd-rom 28 or diskette 31. The input/output unit 22 includes a communications adaptor communicating on the network 46 to the remote client stations containing the browser. Examples of computing systems that may be used as either a client-server 20 or a client 35 include the SPARC 1 TM systems offered by Sun Microsystems TM, Incorporated, personal computers offered by IBM Corporation and by other manufacturers of IBM compatible personal computers and systems running the UNIX 2 , OS/2 3 , AIX, DOS, etc. operating systems. Turning now to FIG. 2, logical operations to perform the preferred embodiment of the invention are shown. FIG. 2 is composed of Figs. 2A through 2D indicating in each of these figures the logical operations performed by the browser on the left side of the figure and the logical operations performed by the server on the right side of the figure. In FIG. 2A, the shopping cart operation begins with a user using the browser at a client station to send a request for the HTML (Hyper Text Markup Language) shopping page to the server containing the market program. The request contains the address of the server and of the market program file at the server. In Internet protocol, this is referred to as the uniform resource locator (URL). The user at the client station using the web browser program will enter in the URL space the desired locator string. For example, the user might enter the following the string "http:// gemini.west//dx/". In this string, "http:" indicates the string uses the hyper text transfer protocol. The first slash is a separator, and "/gemini.west/" is the location or node address of the server. The "dx" in the string is a directory which may be used along with other directories in the string to identify where a program file resides in the server. To request the market program, the user would type in the string after dx "/cgi-bin/ds.cgi". In this additional string "ds.cgi" is the market program file, and it is located in "cgi-bin". Operation 150 at the browser sends this shopping page request to invoke the market program at the server to send back a shopping page file. In the server, the shopping page request is received by receiver operation 152. Operation 154 in the server invokes the market program identified by the filename in the request and generates the HTML shopping page file. Once the HTML shopping page file is built by the market program, operation 156 sends this HTML shopping page file to the browser that requested the shopping page. Back at the browser, operation 158 receives and stores the HTML shopping page file. The shopping page files are stored at the browser to provide a history of pages through which the user may search if desired. In operation 160 this file is built and displayed on the monitor of the browser as a page. FIG. 3 is illustrative of the HTML shopping page produced from the shopping page file sent by the market program addressed in the shopping page request. Above line 41 in FIG. 3 are selectable icons associated with the browser program. The buttons illustrated in FIG. 3 are examples of display selectable icons provided by the Netscape TM web browser program. Other browser programs might be utilized at the remote client station. Note that the location field 44 indicates the uniform resource locator (URL) previously described in the example of a shopping page request sent by browser 150. Below line 41 in FIG. 3 is the HTML page produced from the HTML shopping page file returned in response to the shopping page request. The icon "Sun Microsystems," 47A, if selected by the user will bring up the Sun Microsystems, Incorporated home page. Selecting icon SunSoft TM, 47B, will bring up the home page for this subsidiary of Sun Microsystems. Similarly, selecting Products and Solutions, 47C, or Solaris TM Driver Express, 47D, will bring up the initial screens of those programs. The shopping page illustrated in FIG. 3 allows the user customer to select one or more of the icons in row 56, labeled 56A through 56F. Each of the icons represents a category of device drivers, selected ones of which the user customer may wish to receive to update a device driver program or to load a device driver program to run a piece of hardware on the user's computer system. The user may select software drivers for disk devices, network devices, tape devices, audio devices, video devices or multiple processor modules. Alternatively, the user may enter a device name or number in the blank field 57 and conduct a search for software drivers in this manner. In either event, once the user has requested a list of drivers, another shopping page request will be sent to the server and the server will reply with the requested HTML shopping page file. Decision operation 161 detects a request other than an "add" request, i.e. add items to shopping cart. Since this is not an add request, and operation 161 returns the browser to operation 150 to send the request for the page with a list of drivers. Operations 152, 154 and 156 at the server respond with the requested shopping page file in the same manner as described above. As shown in FIG. 4, the newly requested shopping page built from the current shopping page file includes a scrollable alphabetical listing 62 of disk device drivers. From this scrollable list, the user may select a disk device driver for his shopping cart. The user may select one or more items from the scrollable window 62. After making a selection the user adds the selected items to his shopping cart by selecting add icon 64. Alternatively, the user may view another page with additional information on the selected drivers by selecting view information icon 65. If the user's request is not an add request, decision operation 161 returns the process to the browser program to detect other user commands. If the user selects the add icon, decision operation 161 branches "Yes" to operation 162. Operation 162 then reads the user selected items on the shopping page, and operation 164 in the browser generates an add request. The add request is a data string including (1) an identification of the market program from which the user is selecting items, (2) a cart field in the shopping page file, if any, and (3) values identifying items just selected by the user which the user wishes to add to its HTML shopping cart, i.e. the cart field. In FIG. 2B, the browser sends this add request data string to the server in operation 166. At the server, operation 168 receives the add request and invokes the market program in the add request. Operation 170 then separates the field contents in the add request into name value pairs. If there is a cart field in the add request containing previously selected items by the user at the browser, this name i.e. "cart", and value i.e. previous selected items, will be detected at decision operation 172. Decision operation 172 if it does not find a cart field or does not find a value in the cart field will branch "No" to operation 174. Operation 174 will initialize an empty cart list at the server. In effect, the add request currently being processed in such a situation is a request containing the first choices made by the user at the browser, and there is no prior cart field in the add request. Accordingly, a cart list must be generated at the server and this operation is performed at step 174. If there is a value in the cart field received in the add request, then the logical operations in the server branch to convert-to-list module 176. Module 176 converts the cart field string containing previous selected items into a cart list of previous selected items. In FIG. 2C at operation 178, the server adds selected items just received in the current add request to the cart list produced either at operation 174 or operation 176. Since in our example this is the first collection of selected items in an add request, the cart list will come from operation 174. With the cart list updated to contain the currently selected items in the add request, convert-to-field module 180 converts the cart list at the server to a cart field data string. Operation 182 then generates the HTML shopping page file and inserts the cart field string into that file as a hidden field. Operation 184 sends this HTML shopping page file containing the hidden cart field to the browser. After the HTML shopping page file is sent, there is no need to maintain the cart list at the server. Therefore operation 184 releases the "cart" list temporary storage, and the market program exits. At the browser, operation 186 receives and stores the HTML shopping page file containing the hidden field with the cart string of previously selected items. From this page file, operation 188 builds and displays the shopping page. The cart list is not retained by the server. Previously selected items by the user are in the cart field string in the HTML shopping page file. So long as the user maintains the current shopping transaction, or stores the HTML shopping page file, the cart field with selected items is maintained at the browser or in communications between the browser and server. In our example, it is assumed that the user in the first add request selected one item, a device driver for a disk device where the device driver is denoted by the identifier "AT&T GIS NCR 53C815." Accordingly, the HTML shopping page file received by the browser at operation 186 is in HTML code and looks like the file listed in FIG. 7, composed of FIGS. 7A, 7B and 7C. Of course, any code consistent with the operating programs could be used. The listing in FIG. 7 is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the European Patent Office patent file or records, but otherwise reserves all copyright rights whatsoever. Section 250 of the listing is an example of a list of selectable items that would appear in window 61 (FIG. 4 and FIG. 5). The hidden cart field in FIG. 7 is at entry 252 in the file. At entry 252, (FIG. 7C) the hidden field indicates the name of the field is "cart," and the value in the cart field is "AT&T GlS NCR 53C815." In other words, the value is the device driver previously selected by the user. Operation 188 in the browser when it processes the shopping page file shown in FIG. 7 generates the page shown as FIG. 5 on the user's monitor at the client station. The user may now select additional items, may select another page with other device drivers or may make a review request by selecting icon 67 , "Review or download my collection". Assume that the user selects the network icon 56B. A request for the page containing network device driver selections would go out to the server. An HTML shopping page is returned to the browser from the server. The page is similar to that shown in FIG. 5 except the scrollable items in scrolling window 61 would be network software device drivers. If the user then at operation 200 in FIG. 2C were to select the add icon 64 after selecting a network device driver, decision operation 202 would detect that the request being received was not a review request and would branch the process to operation 164 in FIG. 2A to generate the add request. The browser and server would proceed as described above through operations 166 to 184 to add the selected network device drive to the cart field hidden in the shopping page file sent back to the browser in response to the add request. Assuming that the user has shopped enough and wishes to review or download the selected collection of drivers, the user would select the icon 67, "Review or download my collection " . In this instance, the process would branch yes at decision operation 202 to send review request operation 203 in FIG. 2D. This review request includes the "cart" field containing the list of selected items by the user and the market program identifier. In Fig. 2D, the review request is received at operation 205 in the server. Operation 207 detects the market program identifier received in the review request and invokes the market program. Operation 209 converts the "cart" field in the review request to a "cart" list of selected items. At this point the server could add or delete items in the cart list; however in the review request there is no add or delete process so operation 211 in Fig. 2E converts the "cart" list back to the "cart" field. In Fig. 2E, operation 213 then generates a HTML cart page file and inserts the cart field string into that file. Operation 215 sends this HTML cart page file containing the cart field to the browser. After the HTML cart page file is sent, operation 217 releases the "cart" list temporary storage, and the market program exits. At the browser, operation 219 receives and stores the HTML cart page file containing the cart field with the string of collected items selected by the user. From this page file, operation 221 builds and displays the cart page. The cart page includes a window 91 containing the list of collected items selected by the user. The cart page is shown in Fig. 6. If the user selects a view information icon 65 in Fig. 6, then a request will go to the server to produce an HTML shopping page file with information about the selected items in the cart field. If the user wishes to delete one or more items from the collected items in window 91, the user selects the items to be deleted by highlighting them and then selects button 93. In Fig. 2E, at operation 223 the user select a delete item in window 91 and then selects delete icon 93 as discussed above. Decision operation 225 tests whether the operation performed by the user was a delete request or a download request. Since the operation was a delete request, the process branches "No" to delete request generation module 227. Module 227 generates a delete request containing (1) the market program identifier, (2) the "cart" field of collected items and (3) the selected delete items to be deleted from the cart field. The delete request is sent by operation 229 in Fig. 2F from the browser to the server. At the server operation 231 receives the delete request and invokes the market program. Operation 233 then converts the cart field string in the delete request into a cart list of collected items previously selected by the user. Operation 225 reads the selected delete items in the delete request and deletes these selected delete items from the cart list. The updated cart list is converted back to a cart list by operation 211 in Fig. 2E. The server again builds the cart page file at operation 213 and sends the cart page file with updated cart field at operation 215 back to the browser. Receive and store module 219 receives the cart page and stores it at the browser. Operation 221 again builds the cart page and displays the cart page with the updated listed of collected items, i.e. the previous list of collected items less the selected delete items just deleted. Assuming the user is now ready to download the remaining items in the shopping cart, the user at operation 223 in Fig 2E selects download icon 94 (Fig. 6). Decision operation 225 detects the presence of a download request and the process branches to operation 204 in Fig. 2G. In FIG. 2G, operation 204 at the browser sends the download request to the server. The download request identifies the market program and thereby the server providing the market program and includes the cart field with the collection of selected items to be downloaded. At the server, receive operation 206 receives the download request from the browser, and operation 208 invokes the market program identified in the download request. Conversion operation 210 at the server converts the cart field string into a cart list of selected items. Retrieve and send operation 212 then retrieves each of the device drivers identified as a selected item on the cart list and sends each identified device driver to the browser. At the browser, operation 214 receives the selected software device drivers and loads them into a storage device for use by the user. During this shopping process, when a HTML shopping page file is received at the browser, this file is stored. The browser provides a facility whereby a history of HTML page files may be reviewed. This permits the user to browse to other pages not containing the cart field but at a later time to return to the page containing the cart field and resume shopping. Because the cart data, i.e. the selected items in the cart, are in the HTML shopping page file, the user can store that file for use at a later time. In this case, a later time might be another day when accessing the same server and market program over the Internet. Thus, the present invention provides a computer program product embedded in a computer-useable medium, for example, a storage medium containing a computer program, for shopping on the Internet or any network in which all information necessary for meeting the user's item selections are kept in hidden fields in pages that may be retained by the user at the client station. The server need not retain any information about who the user was or what the user selected. While the invention has been particularly shown and described with reference to a preferred embodiment thereof, it will be understood by those skilled in the art that various other changes in the form and details may be made therein without departing from the scope of the invention.

Claims: A computer program product stored on a computer usable medium, for supplying items on a network (46), the network having at least one computer-server (20) for communicating with users employing a browser program on a terminal/computer (35) at a location remote from said computer-server, said computer program product comprising computer readable program means for: a) receiving (152), at the computer-server, a transmitted command from said browser program for a shopping page (40); b) in response to said transmitted command, generating (154) a shopping page file and transmitting (156) the shopping page file to said browser program; c) receiving (168), at the computer-server, at least one user selected item from the shopping page received (158) by the browser program; d) creating (174) a list at the computer-server; e) at the computer-server, adding (178) to the list each user selected item received by said receiving step to provide an updated list; f) returning (184) from the computer-server to said browser program the updated list of items; and g) receiving at the computer-server from said browser program the list and a next selected item; and h) repeating steps (e), (f), and (g) to circulate said updated list between computer-server and terminal/computer until termination of shopping by the browser program. A computer program product in accordance with claim 1, further comprising computer readable program means for: sending (215) from the computer-server selected items to the terminal/computer in response to a command initiated (203) by the browser program. A computer program product in accordance with claim 2, further comprising computer readable program means for: at the computer-server, deleting (235) from the updated list a user selected item received by said receiving step (g). A computer program product in accordance with claim 1, wherein said user selected items identify computer programs, further comprising computer readable program means for: at the computer-server,downloading, upon receipt of a command (204) from the browser, computer programs identified by the user selected items. A computer program product in accordance with claim 1, wherein said computer readable program means for (g) receiving comprise: separating (170) fields received from the browser program into name/value pairs; determining (172) if there are any values in a "cart" field by examination of the "cart" field, and if so, converting (176) said values into a list of previously selected items. A computer program product in accordance with claim 5, wherein said computer readable program means for (e) adding comprise: updating the list of previously selected items with new selected items to provide said updated list; and converting (180) said updated list to a cart field to be returned to the browser program by said returning step (f) A computer program product stored on a computer usable medium, for user shopping on a network (46) having at least one computer-server (20) for interactively communicating with users employing browser programs on terminal/computers (35) at locations remote from said computer-server, said computer program product comprising computer readable program means for: transmitting (150) a request from said browser program to said computer-server for a shopping page; invoking (154) a market application program at said computer-server in response to said request and generating and transmitting a shopping page file to said browser program; building (160), by said browser program, from said shopping page file, a shopping page; sending from said browser program to the computer-server, for operation thereon by said market application program a request having a first field containing new selected items selected from the shopping page and, if there are previously selected items, a second field containing the previously selected items; if said second field was sent by said sending step, generating (182) a shopping list containing identification of items previously selected by said user, and if not, creating (174) a shopping list; adding (178) new selected items from the first field to the shopping list; returning (184) the shopping list of items in a shopping field of a shopping page file to said browser program; storing at least the shopping list by said browser program at a terminal computer; and continuing cyclical transmitting (150), invoking (154), building (160), receiving (168), and generating (182) the shopping list and adding (178) items to the shopping list and returning (184) to and storing the shopping list at the terminal/computer until termination by the browser program. A computer program product in accordance with claim 7, wherein said computer readable program means for determining, adding and returning comprise: separating (170) data strings in the first field and the second field into name/value pairs; determining (172) if there are any previous values in the second field, and if so, converting (176) said previous values into said shopping list of previously selected items; converting values in the first field to new selected items; adding (178) the new selected items to said shopping list; and converting (180) said shopping list to a field data string and then sending the field data string as the shopping field in a newly generated shopping page file. A computer program product in accordance with claim 7, further comprising computer readable program means for: deleting (235) a previous selected item from the shopping list. A computer program product in accordance with claim 7, wherein said items are software programs, and said computer readable program means further comprise: retrieving the software programs identified as selected items in said shopping list; and after the retrieving step, downloading (225) at least one of said software programs to said browser program.

Inventors: CARTER BRUCE A, LEVINE FREDRICK E, CARTER, BRUCE A., LEVINE, FREDRICK E.
Applicants: SUN MICROSYSTEMS INC, SUN MICROSYSTEMS, INC.
Application year: 1996
Main classification: G06F17
IPC codes: G06Q30