Server-Side Includes | |
Ähnlich den Vorverarbeitungsdirektiven ermöglichen Server-Side Includes den Einschluss verschiedener Werte (beispielsweise das Datum der letzten Änderung einer Datei) oder einer vollständigen Datei in Ihr Skript. Im Folgenden sind von IIS unterstützte Server-Side Include-Direktiven aufgeführt:
Alle Direktiven sind in HTML zugelassen. Ausschließlich die Direktive #include ist jedoch sowohl in HTML- als auch ASP-Seiten zugelassen. Nur die Direktive #include wird hier detailliert erläutert. |
Server-Side Includes: Anmerkungen/Fehlerbehebung | |
Das Einschließen von Dateien ist eine hervorragende Methode zum Schreiben von wieder verwendbarem Code. Diese Methode wird häufig für Code verwendet, der in fast jedem Skript eingesetzt wird: z. B. der Aufbau einer Verbindung zu einer Datenbank oder die Trennung der Verbindung, wenn der Code diese nicht länger benötigt. Ihre Server-Side Include-Dateien brauchen keine bestimmte Dateierweiterung, Microsoft empfiehlt jedoch die Erweiterung |
#include | |||||||
<!-- #include PathType = "strFileName" --> | |||||||
<!-- #include PathType = "strFileName" --> Über das Server-Side Include #include können Sie die Inhalte einer bestimmten Datei in den HTML-Inhalt oder das ASP-Skript einfügen. Sie müssen die Server-Side Include-Anweisung #include in einen HMTL-Kommentar einschließen. Andernfalls wird der Text des Server-Side Includes als reiner Text angezeigt. |
|||||||
Parameter | |||||||
Seit IIS 5.0 gibt es noch einen zweiten Weg, eine Datei einzuschließen: Sie können das <SCRIPT>-Tag kombiniert mit dem Attribut SRC in folgendem Format verwenden: <SCRIPT LANGUAGE = "VBScript" RUNAT=SERVER SRC="strFileName"> </SCRIPT> In dem oben angegebenen Code entspricht der Parameter strFileName dem, der mit der Direktive INCLUDE verwendet wurde. Er kann für einen absoluten oder relativen Pfad stehen. |
|||||||
Beispiel 1 | |||||||
Das folgende Skript enthält nur eine einfache Codezeile ("zum Anfang der Seite zurückgehen") und eine horizontale Zeile mit einer Grafik. <!--ReturnTop.INC --> <CENTER> <HR> Click <A HREF = #top>here</A> to go back to the top of the page.<BR> <IMG SRC = "/Images/CorpLogo.GIF"></CENTER><BR> Diese Datei könnte überall dort eingefügt werden, wo zum Seitenanfang zurückgegangen werden soll: <HTML> <HEAD><TITLE>Include Example</TITLE></HEAD> <BODY> <% [CODE TO RETRIEVE GLOSSARY TERMS FROM SQL SERVER DATABASE] ' Filter the recordset to include only the A's. adoRecGlossary.Filter = "UPPER(SUBSTRING(GlossTerm, 1)) = 'A'" ' Iterate through the items in the filtered recordset. Do While Not adoRecGlossary.EOF %> Term: <%=adoRecGlossary("GlossTerm")%><BR> Definition: <%=adoRecGlossary("GlossDef")%><BR> <% adoRecGlossary.MoveNext Loop ' Next include the link to top file: %> <!-- #include virtual = "/Includes/ReturnTop.INC" --> <% ' Repeat for the next letter... %> </BODY> </HTML> |
|||||||
Beispiel 2 | |||||||
Das folgende Skript enthält ASP-Code, der über das <SCRIPT>-Tag zusammen mit der Methode SRC in eine Datei eingefügt werden soll: ' ReturnTop2.INC Response.Write "<CENTER>" Response.Write "<HR>" Response.Write "Click <A HREF = #top>here</A> to go back to the top of the page.<BR>" Response.Write "<IMG SRC = "/Images/CorpLogo.GIF"></CENTER><BR>" Diese Datei könnte überall dort eingefügt werden, wo zum Seitenanfang zurückgegangen werden soll: <HTML> <HEAD> <TITLE>Include Example 2</TITLE> </HEAD> This page will now include a file...<BR> <SCRIPT LANGUAGE="VBScript" RUNAT="SERVER" SRC="ReturnTop2.INC"> </SCRIPT> . . . |
|||||||
Hinweise | |||||||
Durch Einsatz der Direktive INCLUDE können Sie Dateien, die HTML- oder ASP-Code bzw. eine Kombination der beiden enthalten, einschließen. Wenn Sie die Methode SCRIPT-Tag zum Einschluss einer Datei verwenden (siehe auch Beispiel oben), darf die einzuschließende Datei ausschließlich ASP-Code enthalten. Die Beispiele verdeutlichen, wie der Einsatz von Include-Dateien die Menge an redundantem Arbeitsaufwand verringern kann. Die gegebenen Beispiele sind jedoch sehr einfach. Nehmen wir als weiteres Beispiel an, dass Sie eine Include-Datei haben, die die DSN Ihrer Datenbank, den Benutzernamen und das Kennwort enthält. Diese Include-Datei könnten Sie auf der gesamten Website verwenden. Das Ändern von Benutzername und Kennwort wäre dann einfach auszuführen: Sie müssten diese lediglich in der Include-Datei ändern. Wenn Sie das Server-Side Include #include verwenden, um die Inhalte einer ASP zu integrieren, müssen Sie die Trennzeichen <%...%> um Skripttext verwenden. Andernfalls wird der Inhalt der Datei als regulärer HTML-Code angesehen. Ein Verwendungszweck dieses Server-Side Includes ist die Lokalisierung der Teile Ihres Skripts, die häufig verwendet werden, z. B. Informationen zum Zugang zur Datenbank. Auf diese Weise können Sie zudem Benutzernamen und Kennwörter schnell und effizient ändern. Wenn Sie sich dazu entschließen, das Server-Side Include #include zu diesem Zweck zu verwenden, müssen Sie darauf achten, dass die eingeschlossenen Dateien ausreichend gesichert sind. Sie können Dateien in Dateien einschließen, die wiederum in andere Dateien eingeschlossen sind. Sie können auch die Inhalte einer bestimmten Datei mehrmals in einem Skript einschließen. Ein Beispiel dafür ist ein einfaches Skript zur Fehlerhandhabung wie die folgende Datei: <% If Err.Number <> 0 Then %> <HTML> <HEAD><TITLE>Error Notice</TITLE></HEAD> <BODY> There has been an error in your script (<%=Request. ServerVariables("SCRIPT_NAME")%>.<BR> Please contact customer service at 1-800-555-HELP and tell them that you've experienced an error in (<%=Request. ServerVariables("SCRIPT_NAME")%> and that the parameters sent to the script were the following:<BR> (<%=Request.ServerVariables("QUERY_STRING")%>.<BR><BR> We apologize for the inconvenience. </BODY> </HTML> <% End If %> Diese Datei (mit Namen <%Response.Buffer = True%> <HTML> <HEAD><TITLE>Database Info Page</TITLE></HEAD> <BODY> <% Set adoCon = Server.CreateObject("ADODB.Connection") AdoCon.Open "MyDatabase" %> <!-- #include virtual = "/Accessory/ERROR.INC" --> <% Set adoRec = adoCon.Execute ("SELECT * FROM TopSales") %> <!-- #include virtual = "/Accessory/ERROR.INC" --> <% %> </BODY> In diesem Skript ist festgelegt, dass der Benutzer den Inhalt der Datei Wenn Sie eine Datei einschließen, ist darauf zu achten, dass diese nicht die aktuelle Datei enthält. Dies würde zu einem Fehler auf dem Webserver führen, der den Dienst anhält. Das bedeutet, dass Sie Ihre Arbeit unterbrechen und den Webdienst neu starten müssen. Beachten Sie auch, dass Server-Side Includes vor dem Skriptcode verarbeitet werden. Aus diesem Grund können Sie nicht dynamisch entscheiden, welche Datei eingeschlossen werden soll. Das folgende Skript führt beispielsweise zu einem Laufzeitfehler. <% Dim strFileName strFileName = "/Apps/CustomConstants.INC" %> <!-- #include file="<%=strFileName%>"--> Abschließend müssen Server-Side Includes außerhalb der Skript-Trennzeichen (<%...%>), <SCRIPT></SCRIPT>-Tags und <OBJECT></OBJECT>-Tags platziert werden. Der folgende Code führt beispielsweise zu einem Laufzeitfehler (das schließende Trennzeichen %> fehlt): <% Dim strLastName strLastName = "Weissinger" <!-- #include file="/Apps/CustomConstants.INC"--> Dieser Code schlägt ebenfalls fehl: <SCRIPT LANGUAGE="VBScript"> Sub btnHello_Click( ) Dim strLastName strLastName = "Weissinger" <!-- #include file="/Apps/CustomConstants.INC"--> End Sub </SCRIPT> Dies ist das einzige Server-Side Include, das Sie sowohl in HTML- als auch ASP-Dateien verwenden können. Wenn Sie das Server-Side Include #include in einer Datei einsetzen, muss die Erweiterung dieser Datei eine der zu |
|||||||