| ## nca-115-2 |
| ## $Id$ |
| |
| |
| startHtmlPage |
| startHtmlBody |
| putHeader 2 |
| |
| web::putx { |
| <table border="0" cellpadding="0" cellspacing="0" width="770"> |
| {headRow 3 "Websh example code"} |
| <tr valign="top"> |
| {navbar_docu 4} |
| <td width="610"> |
| This section presents a selection of sample Websh applications. |
| All applications are described in detail on this page and come with |
| richly documented source code. For simplicity, they are all-in-one |
| files. Plus, they are on-line and ready to use. For each application |
| discussed below, you will find the corresponding links which present |
| the styled code and the plain text version for download. |
| |
| <br> |
| <a name="toc"><a href="#toc"><h1>1 Table of Contents</h1></a> |
| <br>1 <a href="#toc"><b>Table of Contents</b></a><br> |
| <br>2 <a href="#13"><b>hello world</b></a><br> |
| <br>3 <a href="#26"><b>command dispatching</b></a><br> |
| <br>4 <a href="#41"><b>image</b></a><br> |
| <br>5 <a href="#51"><b>confirmation form</b></a><br> |
| <br>6 <a href="#62"><b>checkbox form</b></a><br> |
| <br>7 <a href="#72"><b>upload file</b></a><br> |
| <br>8 <a href="#83"><b>sessions</b></a><br> |
| <br>9 <a href="#103"><b>cookie</b></a><br> |
| <br>10 <a href="#111"><b>memory game</b></a><br> |
| |
| <br><br> |
| <a name="13"><a href="#toc"><h1>2 hello world</h1></a> |
| |
| In order to get a first impression, let's look at a simple example. |
| All it does is printing "Hello, world". It consists of one websh |
| command, <tt>web::put</tt>. Basically, <tt>web::put</tt> works like Tcl's |
| <tt>puts</tt> command. In addition to printing the text, it does send HTTP |
| headers when invoked for the first time.<br> |
| <a href="examples/helloworld.html" onclick="javascript:window.open('','source','width=500,height=400,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes');" target="source")>source</a> |
| | |
| <a href="examples/helloworld_ws3.txt">download</a> |
| |
| <a name="26"><a href="#toc"><h1>3 command dispatching</h1></a> |
| |
| Now, let's look at one of the main features of websh: the command |
| dispatching. This allows you to produce all your HTML page from one |
| and the same source code. This example produces two HTML pages, the |
| "greetings" page and a "price list" page (even though, for simplicity, |
| the price list is empty). It uses <tt>web::dispatch</tt> to switch into one |
| of these pages, and <tt>web::cmdurl</tt> to produce URLs pointing to each |
| of these pages.<br> |
| <a href="examples/dispatch_1.html" onclick="javascript:window.open('','source','width=500,height=400,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes');" target="source")>source</a> |
| | |
| <a href="examples/dispatch_1_ws3.txt">download</a> |
| |
| <a name="41"><a href="#toc"><h1>4 image</h1></a> |
| |
| This example demonstrates how to return an image instead of the |
| normal "text/html" mime type.<br> |
| <a href="examples/image.html" onclick="javascript:window.open('','source','width=500,height=400,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes');" target="source")>source</a> |
| | |
| <a href="examples/image_ws3.txt">download</a> |
| |
| <a name="51"><a href="#toc"><h1>5 confirmation form</h1></a> |
| |
| This example demonstrates a confirmation form. The user is promted a form to |
| enter, say, order information. The information is validated and, if sucessfull, |
| an e-mail is sent back to the user.<br> |
| <a href="examples/emailform.html" onclick="javascript:window.open('','source','width=500,height=400,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes');" target="source")>source</a> |
| | |
| <a href="examples/emailform_ws3.txt">download</a> |
| |
| <a name="62"><a href="#toc"><h1>6 checkbox form</h1></a> |
| |
| This example demonstrates how to handle checkboxes. The user is promted a form to |
| select checkboxes, to display date informations. <br> |
| <a href="examples/checkbox.html" onclick="javascript:window.open('','source','width=500,height=400,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes');" target="source")>source</a> |
| | |
| <a href="examples/checkbox_ws3.txt">download</a> |
| |
| <a name="72"><a href="#toc"><h1>7 upload file</h1></a> |
| |
| This example demonstrates a upload form. The user is promted a form to |
| enter, local file. The file is validated and, if sucessfull, |
| the server shows in a confirmation the uploaded data back to the user.<br> |
| <a href="examples/upload.html" onclick="javascript:window.open('','source','width=500,height=400,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes');" target="source")>source</a> |
| | |
| <a href="examples/upload_ws3.txt">download</a> |
| |
| <a name="83"><a href="#toc"><h1>8 sessions</h1></a> |
| |
| This example demonstrates file-based server-side sessions. Suppose a |
| customer visits this application for the first time. The application |
| creates a new session file using <tt>state::init</tt> and stores the |
| session id in the query string. From now on, <tt>state::init</tt> will know |
| the session id and re-load the session context - the application |
| "remembers" the customers settings across multiple HTTP requests using |
| a session id embedded in all generated URLs. For simplicity, we do not |
| add shopping items to a shopping cart in this example, but just save |
| the data of two forms which are presented to the customer. This |
| involves a little bit of form handling, and this example also |
| demonstrates error handling in case of unexpected input. But let's |
| look at the example.<br> |
| <a href="examples/session_form.html" onclick="javascript:window.open('','source','width=500,height=400,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes');" target="source")>source</a> |
| | |
| <a href="examples/session_form_ws3.txt">download</a> |
| |
| <a name="103"><a href="#toc"><h1>9 cookie</h1></a> |
| |
| This example demonstrates how to use cookies. It is very similar to the |
| session example above.<br> |
| <a href="examples/cookie.html" onclick="javascript:window.open('','source','width=500,height=400,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes');" target="source")>source</a> | |
| <a href="examples/cookie_ws3.txt">download</a> |
| |
| <a name="111"><a href="#toc"><h1>10 memory game</h1></a> |
| |
| This is a more complex example. You know the game "memory", right ? |
| The goal is to find matching pictures with the least possible number |
| of tries. The application keeps track of the number of your tries for |
| a given game and level and compares it with the "hall of fame". This |
| version does not use sessions except for the "hall of fame", and |
| stores all information in the URL, which makes the output a little bit |
| bulky. Have fun.<br> |
| <a href="examples/memory.html" onclick="javascript:window.open('','source','width=500,height=400,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes');" target="source")>source</a> |
| | |
| <a href="examples/memory_ws3.txt">download</a> |
| </td> |
| </tr> |
| </table> |
| } |
| |
| finishPage 0 |
| |