Das CallFolderServlet dient dazu, Webanfragen an einen Webserver an die DLE weiter zu leiten. Eine Servlet Definition gliedert sich dabei immer in zwei Bereiche. Zum einen die reine Definition eines Servlets mit seinen Parametern, zum anderen das sogenannte Servlet Mapping, das URLs zu Servlets zuordnet. Ein Servlet hat mindestens einen Namen, der beliebig gewählt werden kann, jedoch eindeutig innerhalb einer Anwendung sein muss und eine Java Klasse, die für den Aufruf zuständig ist. Beim CallFoldertServlet ist dies die Klasse at.visionflow.dle.dwe.DLECallFolderServlet. Dieses Servlet benötigt zumindest ein weiterer sogenannter Init-Parameter mit Namen dle.folder. Hier wird festgelegt, welcher DLE Ordner (Folder) aufgerufen werden soll.
Eine Minimalkonfiguration eines DLE Aufrufs erfordert daher Beispielhaft folgende Definition:
<servlet>
<servlet-name>Brick</servlet-name> <servlet-class>at.visionflow.dle.dwe.DLECallFolderServlet</servlet-class>
<init-param>
<param-name>dle.folder</param-name>
<param-value>WEB:Tutorial</param-value> </init-param>
</servlet>
Nach der Servlet Definition wird dann über das Servlet Mapping festgelegt, welche URLs zu welchem Servlet geleitet werden.
Die beliebteste und einfachste Methode ist es, einfach alle Aufrufe, die mit „.brick“ enden, an das Servlet weiter zu leiten:
<servlet-mapping>
<servlet-name>Brick</servlet-name>
<url-pattern>*.brick</url-pattern>
</servlet-mapping>
Es können auch mehrere URL Patterns hintereinander angegeben werden, das * darf dabei jedoch nur am Anfang oder am Ende eines Patterns angegeben werden. Alternativ könnte man z.B. alle Anfragen die unterhalb von /secure und /geheim liegen, an ein anderes (vorher definiertes) Servlet weiterleiten, das dann z.B. einen anderen DLE Ordner aufruft:
<servlet-mapping>
<servlet-name>SecureBrick</servlet-name>
<url-pattern>/secure/*</url-pattern>
<url-pattern>/geheim/*</url-pattern>
<url-pattern>/ </url-pattern>
</servlet-mapping>
Das letzte URL Pattern („/“) im obigen Beispiel erlaubt es „Root“ anfragen an die Webanwendung zu beantworten. Ruft man die Web-Anwendung direkt auf, kann man entweder über eine welcome-file Einstellung auf eine statische Seite (z.B. index.html) verzweigen, oder durch ein „/“ (root) Mapping wie oben, zur DLE verzweigen.
Das CallFolderServlet hat weitere optionale Parameter, die als Init-Parameter analog zum dle.folder Parameter angegeben werden können.
Alle Parameter, die mit „dle.“ Anfangen, werden dabei als spezielle Parameter behandelt. Alle weiteren Init-Parameter werden als DLE Felder behandelt. Enthalten sie einen Doppelpunkt, werden sie eins zu eins an die DLE übergeben, ansonsten wird per Default der Wert aus dem Parameter dle.parameter.prefix vorangestellt. Ist dieser Parameter nicht definiert und der Parameter enthält keinen Doppelpunkt, oder fängt mit „dle.“ an, werden sie ignoriert. Auf diese Art kann man innerhalb der DLE Aufrufparameter als DLE Variablen fix vorgeben.
| Parameter | Beschreibung |
| dle.folder | Welcher DLE Ordner (Folder) aufgerufen werden soll. |
| dle.parameter.prefix | Parameter Präfix für Init- und Anfrageparameter, die keinen Doppelpunkt enthalten. |
| dle.request.default.character-encoding | Der Zeichensatz der Anfrage, der als Default verwendet werden soll, wenn keiner beim Aufruf mitgegeben wurde. Z.B. UTF-8. |
| dle.response.default.character-encoding | Der Zeichensatz der Antwort, der als Default verwendet werden soll, wenn keiner bei der Antwort mitgegeben wurde. Z.B. UTF-8. |
| dle.upload.allowed | True oder False, gibt an, ob ein Upload mit diesem Servlet erlaubt ist. Default ist False. |
| dle.upload.tempDir | Verzeichnis, in dem die Uploaddateien temporär zwischengespeichert werden, solange der Empfang läuft. |
| dle.upload.destDir | Verzeichnis, in dem die Uploaddateien endgültig gespeichert werden sollen. Die Dateien erhalten einen eindeutigen Namen. |
| dle.upload.maxFileSizeMegaBytes | Maximale Größe einer Datei beim Upload. Wird die Größe während des Uploads überschritten, wird der Upload abgebrochen. |
| dle.upload.maxFileCount | Maximale Anzahl der Dateien pro einzelnem Upload. Wird die Anzahl während des Uploads überschritten, wird der Upload abgebrochen. |
| dle.upload.storeDataInObject | True oder False. Gibt an, ob die Daten als Base-64 Zeichenkette im Upload Datenobjekt (DLE:UploadedFile) gespeichert werden sollen. Default ist False. |
| dle.upload.storeDataOnDisk | True oder False. Gibt an, ob die Daten als Datei gespeichert werden sollen. Default ist True. |
| dle.response.header.<name> | Parameter, die mit der Zeichenkette „dle.response.header.“ starten, definieren Default-Header, die in der http-Antwort automatisch gesetzt werden. „<name>“ Kennzeichnet dabei den Header-Namen. |
| dle.request.variables.allow | Liste der Variablen, die der Browser über Anfrageparameter setzen darf. Ist sie angegeben, werden alle anderen Variablen ignoriert. Einträge werden durch ; oder Zeilenumbrüche getrennt und müssen den ganzen Variablennamen samt Paket treffen. Ein Eintrag ist ein Wildcard-Muster (* beliebig viele Zeichen, ? genau ein Zeichen, z.B. GLOBAL:Search*) oder, mit dem Präfix regex:, ein regulärer Ausdruck (z.B. regex:WEB:(Event|TableRequest)\..*). Groß-/Kleinschreibung wird unterschieden. Kann auch als context-param für die ganze Webanwendung angegeben werden, der Init-Parameter hat Vorrang. Ein ungültiger regulärer Ausdruck verhindert den Start des Servlets. |
| dle.request.variables.deny | Liste der Variablen, die der Browser nicht setzen darf. Format wie bei dle.request.variables.allow, die Sperrliste hat Vorrang vor der Erlaubnisliste. Unabhängig davon werden vom Servlet oder der DLE selbst ermittelte Variablen immer ignoriert: WEB: Variablen (z.B. WEB:UserIsLoggedIn, WEB:ClientId), nicht schreibgeschützte BASE: Variablen der Session (z.B. BASE:Language, BASE:TmpDir, BASE:DatabaseConnector) sowie Attribute von WEB:HttpRequest, WEB:HttpRequestHeader, WEB:HttpRequestCookie, WEB:HttpRequestParameter, WEB:HttpRequestAttribute und WEB:UploadedFile. Explizit angegebene LOCAL: Variablen werden ebenfalls ignoriert, außer dle.parameter.prefix ist LOCAL: oder ein Eintrag der Erlaubnisliste nennt selbst das Paket LOCAL: (z.B. LOCAL:Page*, regex:LOCAL:...). Allgemeine Einträge wie * geben LOCAL: Variablen nicht frei. LOCAL: Variablen, die über dle.parameter.prefix entstehen, sind davon nicht betroffen. |