You can use TclHTTPD "out of the box" to implement a basic Web server.
However, if you want to create your own Web application, you'll want
to integrate your own custom Tcl code with the server.  

*** Custom Code Directory ***

The recommended way to do this is to create Tcl packages for your
functionality and put them into a "custom code" directory.
The "custom" directory of the distribution has some trivial examples.

Specify the location of the custom code directory with the -library
command line argument or the "library" .rc file Config specification.
The files in this directory are sourced in alphabetical order.
If you run with "-debug 1" then you'll see feedback as these are loaded.

If you do not need to substantially change the way the default server
works, but instead just add more stuff, then you are done.  Otherwise...

*** Modifing the server startup code ***

The Tcl scripts that start up the server are divided into three files.
You will end up modifying one or more of the following files:

bin/httpd.tcl
	(The main program)
	This main script processes command line arguments,
	loads the configuration file,
	starts the Http server,
	loads the per-thread httpdthread.tcl file,
	and enters the event loop.

	This file embodies assumptions about the installation directory
	structure.  If you repackage TclHttpd, you'll probably have
	to modify this file.

bin/tclhttpd.rc
	(The Configuration File)
	This script is sourced before the command line arguments are processed.
	Its use is limited to setting simple parameters.  Typically these
	correspond to command line arguments.  However, you are free to
	add new Config parameters.  If you have
		Config foo	"The value of foo"
	in your .rc file, then you can access that value by using the
	    config::cget foo
	command, or (if you haven't changed bin/httpd.tcl) by using the
	global Config array:
	    global Config
	    set foovalue $Config(foo)

bin/httpdthread.tcl
	(The per-thread main program)
	This file is sourced by the main interpreter, and again by
	each worker thread if you are using threads.
	This file starts up most of the packages associated with a normal
	web server.  At the very end it loads all the code from the custom
	code directory described above.

	If you need to disable some of the standard web server features,
	you may need to edit this file.  You can select a different version
	of this file with the "-main" command line argument, or the
	"main" .rc Config specification.

*** Starting the server ***
	If you have created copies of the configuration
	file and per-thread startup file, you'll need to specify those
	on the command line:

	tclsh8.3 httpd.tcl -config my.rc -main mythread.tcl

	or you can also create a modified copy of httpd.tcl that embeds the
	names of the other custom files, so starting the server reduces to

	tclsh8.3 myhttpd.tcl

