Introduction | p. 1 |
Tcl and the Web | p. 3 |
Why Use Tcl? | p. 3 |
Who Should Read This Book? | p. 4 |
Organization of the Book | p. 5 |
Coding Style and Conventions | p. 6 |
Safe-Tcl | p. 7 |
The interp Command | p. 9 |
Interpreters Versus Namespaces | p. 11 |
Command Aliases | p. 11 |
Safe Slave Interpreters | p. 15 |
Safe-Tcl Extensions | p. 24 |
Security Policies | p. 24 |
The Tcl Plugin Security Model | p. 25 |
Configuration Management | p. 25 |
The Configuration Package | p. 31 |
Administration of Security Policies | p. 34 |
Writing a Feature | p. 35 |
CGI Scripting | p. 41 |
What Is CGI? | p. 42 |
Tcl for CGI Scripting | p. 42 |
CGI Scripting Versus Microscripting | p. 43 |
Configuring the Web Server to Execute Tcl Scripts as CGI | p. 43 |
Security | p. 44 |
"Raw" CGI Processing | p. 47 |
Laurent Demailly's uncgi Library | p. 47 |
Advanced CGI Libraries | p. 50 |
Welch's cgilib.tcl Library | p. 50 |
Don Libes's cgi.tcl Package | p. 51 |
Using the cgi.tcl Package | p. 51 |
Attribute Value Encoding and Quoting | p. 55 |
Creating Dynamic Web Pages | p. 60 |
Examples of TclU Application | p. 63 |
Simple Documents--No Input | p. 63 |
Input from CGI | p. 68 |
Forms | p. 74 |
Hyperlink Database | p. 76 |
Tables | p. 76 |
Frames | p. 77 |
Cookies | p. 79 |
File Upload | p. 82 |
Using Extensions | p. 84 |
Fast-CGI | p. 87 |
Servlets and Microscripting | p. 89 |
Microscripting Web Servers | p. 92 |
Simple Substitution | p. 93 |
Template-Based Substitution | p. 93 |
Microscripting Example Documents | p. 97 |
Conditional HTML | p. 101 |
The Tcl University Examples | p. 102 |
Form Processing | p. 104 |
The TclU Package | p. 112 |
Tcl-Enabled Web Servers | p. 117 |
NeoWebScript | p. 119 |
Installing NeoWebScript | p. 119 |
Installing NeoWebScript-SA | p. 121 |
Microscripting with NeoWebScript | p. 121 |
NeoWebScript Tcl API | p. 125 |
VelociGen | p. 127 |
VET Tcl API | p. 128 |
The Tcl Web Server | p. 129 |
An Embeddable Server | p. 130 |
Compatibility and Conformance | p. 131 |
Tcl Templates | p. 132 |
Safe-CGIO | p. 132 |
Virtual Documents and Internet Devices | p. 135 |
On-the-Fly Reconfiguration | p. 137 |
AOLServer | p. 137 |
AOLServer Dynamic Pages | p. 138 |
Predefined Elements | p. 138 |
ADP Tcl Commands | p. 140 |
AOLServer Tcl Libraries | p. 140 |
Other Web Services Using Tcl | p. 142 |
DynaWeb | p. 142 |
Sibylla | p. 142 |
Cuesta Technologies | p. 143 |
Internet Appliances | p. 143 |
WebBox Tcl API | p. 144 |
Client-Side Scripting | p. 145 |
Getting Tcl-Enabled | p. 146 |
Installing the Tcl Plugin | p. 146 |
Installing on Solaris | p. 147 |
Installing on Unix from Source | p. 148 |
Installing on Windows | p. 148 |
Installing on Macintosh | p. 149 |
Installing Plume | p. 149 |
Including a Tclet in a Web Page | p. 149 |
MIME Types | p. 151 |
Embedding Tclets | p. 151 |
Writing a Tclet | p. 154 |
Tclet Execution Environment | p. 167 |
embed_args Array | p. 170 |
Detecting the Tclet Environment | p. 175 |
Security Policies | p. 176 |
Requesting a Security Policy | p. 177 |
Policy Administration | p. 178 |
Restrictions on Security Policies | p. 178 |
Built-In Security Policies | p. 179 |
Description of Policies | p. 179 |
The home Policy | p. 180 |
The inside and outside Policies | p. 182 |
The javascript Policy | p. 190 |
The trusted Policy | p. 191 |
Description of Features | p. 192 |
The persistent Feature | p. 192 |
The network Feature | p. 206 |
The stream Feature | p. 207 |
The url Feature | p. 209 |
Debugging Tclets | p. 214 |
Enabling the Console | p. 214 |
The Plugin Logging Facility | p. 216 |
The Plugin Wish | p. 218 |
The Use of Tcl for Scripting a Page | p. 220 |
Other Risks Associated with Tclets | p. 220 |
Document Processing | p. 221 |
The "html_library" Package | p. 222 |
The TclXML Package | p. 227 |
XAPI-Tcl | p. 228 |
Document Object Model | p. 241 |
Validation | p. 241 |
White Space | p. 243 |
Use of the HTML and XML Parsers | p. 244 |
Creating XML Documents | p. 245 |
The Tcl University Example | p. 247 |
The TclU-notes Package | p. 249 |
WWW Applications | p. 257 |
Downloading Documents | p. 258 |
The http Package | p. 258 |
Incremental Data Processing | p. 264 |
POSTing Forms | p. 266 |
Error Handling | p. 267 |
Stopping a Download | p. 270 |
Configuring the http Package | p. 272 |
Advanced Features | p. 274 |
The Document Handling Package | p. 280 |
The URL Package | p. 285 |
Displaying Documents | p. 287 |
Displaying Simple Document Formats | p. 287 |
Displaying HTML Documents | p. 287 |
Tcl, Java, and the Tcl Bean | p. 291 |
An Overview of Jacl and Tcl Blend | p. 292 |
Jacl and Tcl Blend Feature Comparison | p. 293 |
Jacl and Applets | p. 294 |
The Java Package | p. 295 |
Array Objects | p. 302 |
Java Introspection: The java::info Command | p. 303 |
Classes and Signatures | p. 307 |
Class Names | p. 307 |
Signatures | p. 307 |
Conversions | p. 309 |
Array Objects | p. 309 |
Java Extensions for Tcl | p. 310 |
Class Loading | p. 312 |
Implementing Tcl Commands | p. 312 |
Choosing the Interface | p. 315 |
Using Tcl as Glue | p. 315 |
Jacl | p. 317 |
JavaBeans | p. 318 |
JavaBean Events | p. 318 |
Event Interfaces, Methods, and Names | p. 319 |
The Tcl Bean | p. 322 |
Creating a Java Studio Customizer | p. 326 |
Implementing a New Object Type | p. 332 |
Creating Java Classes from Data | p. 346 |
Summary | p. 347 |
Java Package | p. 347 |
Java Extensions | p. 348 |
Java Studio Package | p. 348 |
Tcl Java API | p. 348 |
Event-Driven Programming | p. 363 |
Client Sockets | p. 365 |
Asynchronous Connection | p. 365 |
Summary | p. 367 |
Configuring a Channel | p. 367 |
Buffering | p. 368 |
End-of-Line Translation | p. 368 |
End-of-File Character | p. 370 |
Blocking and Nonblocking I/O | p. 370 |
Summary | p. 372 |
Event Processing | p. 372 |
Application State | p. 400 |
Server Sockets | p. 403 |
Random Ports | p. 403 |
The Accept Command | p. 404 |
Server Socket Options | p. 405 |
Additional fconfigure Command Options for Sockets | p. 405 |
Forking and Nonforking Daemons | p. 406 |
Application Example | p. 437 |
CCI Client Example | p. 437 |
CCI Server Example | p. 438 |
fcopy Command | p. 440 |
Writing a Channel Driver | p. 442 |
Registering the Channel Driver | p. 443 |
Server Sockets | p. 446 |
Per-Channel Data | p. 447 |
Channel Driver Callbacks | p. 448 |
Socket Creation Command | p. 449 |
Summary | p. 456 |
Index | p. 459 |
Table of Contents provided by Syndetics. All Rights Reserved. |