Sitemesh-Tutorial – Grundsätze und Anwendungen der Seitendekorationstechnologie

Sitemesh-Tutorial – Grundsätze und Anwendungen der Seitendekorationstechnologie

1. Grundlegende Konzepte

1. Sitemesh ist eine Seitendekorationstechnologie:

1 : Es fängt den Seitenzugriff durch Filter ab
2 : Finden Sie die passende Dekorationsvorlage basierend auf der URL der besuchten Seite
3 : Extrahieren Sie den Inhalt der besuchten Seite und platzieren Sie ihn an der entsprechenden Stelle in der Dekorationsvorlage
4 : Schließlich wird die dekorierte Seite an den Client gesendet.

2. In Sitemesh werden Seiten in zwei Typen unterteilt: dekorative Vorlagen und normale Seiten.
1) Mit „Dekorative Vorlage“ ist eine Seite gemeint, die zur Dekoration anderer Seiten verwendet wird.
2) Normale Seiten, die sich im Allgemeinen auf verschiedene Anwendungsseiten beziehen.
3. Als nächstes veranschaulichen wir anhand eines einfachen Beispiels das Grundprinzip der Sitemesh-Modifikation von Webseiten.

Zweitens das Prinzip der Vorlagenänderung von Webseiten







Weisen Sie Sitemesh über den Registrierungsmechanismus von Sitemesh an, die Vorlage XXX zu verwenden (vorausgesetzt, die vorherige Vorlage wird verwendet), um die besuchte Seite beim Zugriff auf den Pfad zu ändern.



Wenn der Benutzer in der linken Navigationsleiste auf „Die Große Mauer anzeigen“ (/ShowGreatWall.do) klickt, wird die Seite „Die Große Mauer anzeigen“ auf der rechten Seite mit der angegebenen Vorlage dekoriert.



Um den obigen Prozess zusammenzufassen, kann das Grundprinzip der Sitemesh-Änderung von Webseiten wie folgt erklärt werden:



3. Konfiguration und Verwendung von Sitemesh

1) Filterdefinition und Sitemesh-Taglib-Definition zu WEB-INF/web.xml hinzufügen

Kopieren Sie
den Code wie folgt:

<Filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<Filterzuordnung>
<filter-name>sitemesh</filter-name>
<URL-Muster>/*</URL-Muster>
</filter-mapping>
<Taglib>
<taglib-uri>Sitemesh-Dekorator</taglib-uri>
<taglib-location>/WEB-INF/sitemesh-decorator.tld</taglib-location>
</taglib>
<Taglib>
<taglib-uri>Sitemesh-Seite</taglib-uri>
<taglib-location>/WEB-INF/sitemesh-page.tld</taglib-location>
</taglib>

2) Erstellen Sie WEB-INF/decorators.xml, in dem Sie konfigurieren können, welche Vorlagen enthalten sind und welche URLs jede Vorlage ändert. Sie können auch konfigurieren, welche URLs keine Vorlagensteuerung benötigen. Ein Beispiel für decorators.xml ist wie folgt:

Kopieren Sie
den Code wie folgt:

<schließt aus>
<Muster>/Anmeldung*</Muster>
</excludes>
<Dekoratoren Standardverzeichnis="/Dekoratoren">
<Decoratorname="Hauptseite"="DecoratorMainPage.jsp">
<Muster>/*</Muster>
</Dekorator>
<Dekoratorname="pop" Seite="PopPage.jsp">
<Muster>/showinfo.jsp*</Muster>
<Muster>
/meinModul/GreatWallDetailAction.do*
</Muster>
</Dekorator>
</Dekoratoren>

3) Schauen wir uns ein Beispiel einer geänderten Vorlage an

Kopieren Sie
den Code wie folgt:

<%@page contentType="text/html;?charset=GBK"%>
<%@taglib uri="sitemesh-decorator"?prefix="Decorator" %>
<html>
<Kopf>
<Titel> <Dekorator:Titel/> </Titel>
<Dekorator:Kopf/>
</Kopf>
<Text>
Hallo Welt <hr/>
<Dekorator:Body/>
</body>
</html>

4) Schauen wir uns ein Beispiel einer geänderten Seite an:

Kopieren Sie
den Code wie folgt:

<%@ Seite contentType="text/html;?charset=GBK"%>
<html>
<Kopf>
<title>Hallo Welt</title>
</Kopf>
<Text>
<p>Hier kommt die dekorierte Seite hin.</p
</body>
</html>

5) Sehen wir uns das Sitemesh-Tag

<decorator:head />

an

, das in der Dekorationsvorlage verwendet werden kann,

und extrahieren wir den Inhalt im Head-Tag der dekorierten Seite.

<decorator:body />

entfernt den Inhalt des Body-Tags der dekorierten Seite.

<decorator:title default="" />

entfernt den Inhalt des Titel-Tags der dekorierten Seite. default ist der Standardwert.

<decorator:getProperty property="" default="" writeEntireProperty=""/>

entnimmt den Attributwert des entsprechenden Tags der dekorierten Seite.

writeEntireProperty gibt an, ob der Wert der Eigenschaft oder

das Attribut des HTML-Tags "property=value"

angezeigt werden soll


Body-Tag-Attribute

Beachten Sie, dass

ein Fehler gemeldet wird und

der Inhaltswert

des Meta-Tags

„>“ oder „<“ enthält.

Der Standardwert ist beispielsweise „&lt; default“.

„<decorator:usePage id="" />“

wird von der dekorierten Seite als Objekt erstellt und kann direkt in der JSP der dekorierten Seite referenziert werden .

6) Sehen Sie sich ein Beispiel für die Verwendung von Tags in einer Dekorationsvorlage an

Kopieren Sie
den Code wie folgt:

<html lang=" <decorator:getProperty property="lang"/> ">
<Kopf>
<title> <decorator:title default="Hallo" /> </title>
<Dekorator:Kopf />
</Kopf>

<body <decorator:getProperty property="body.onload" writeEntireProperty="1"/> >
Den Namen der Variable „company“ erhalten Sie aus den Metadaten:
<decorator:getProperty Eigenschaft="meta.company"/>
Nachfolgend sehen Sie den Inhalt des Hauptteils der geänderten Seite:
<Dekorator:Body />
<decorator:usePage id="meineSeite" />
<%=myPage.getRequest().getAttribute("Benutzername")%>
</body>
</html>

7) Schauen Sie sich den entsprechenden Code auf der geänderten Seite an:

Kopieren Sie
den Code wie folgt:

<html lang="de">
<Kopf>
<title>Mein Sitemesh</title>
<meta name="Unternehmen" content="smartdot"/>
<meta name="Autor" content="zhangsan"/>
<Skript>
Funktion zählen(){return 10;}
</Skript>
</Kopf>
<body onload="Anzahl()">
<p>Dies ist eine geänderte Seite</p>
</body>
</html>

IV. Fazit

1. Das Wichtigste bei Sitemesh besteht darin, Vorlagen zur Dekoration zu erstellen und diese Vorlagen in decorators.xml zu konfigurieren, um welche Seiten sie dekorieren sollen. Daher besteht der Hauptprozess bei der Verwendung von Sitemesh darin, eine Dekorationsvorlage zu erstellen und dann das URL-Muster in decorators.xml zu konfigurieren.

2. Analysieren Sie das gesamte Projekt, um zu sehen, welche Seiten in Vorlagen abstrahiert werden müssen. Beispielsweise müssen sekundäre Seiten, tertiäre Seiten, Popup-Fenster usw. möglicherweise alle in entsprechende Vorlagen umgewandelt werden. Im Allgemeinen verfügt ein großes OA-System nicht über mehr als 8 Vorlagen.

Was passiert, wenn ein spezieller Anforderungspfad im Rahmen des Filters liegt, Sie aber keine Vorlage verwenden möchten

?


So unvernünftig kannst du doch nicht sein!

Keine Sorge, SiteMesh hat dies bereits berücksichtigt und die in Schritt 5 oben erwähnte Datei decorators.xml wird jetzt ins Spiel kommen!
Unten ist meine decorators.xml :

Kopieren Sie
den Code wie folgt:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Dekoratoren Standardverzeichnis="/Dekoratoren">
<!-- Ausgeschlossene URLs werden von Sitemesh niemals dekoriert -->
<schließt aus>
<Muster>/index.jsp*</Muster>
<Muster>/login/*</Muster>
</excludes>
<Dekoratorname="Hauptseite" Seite="main.jsp">
<Muster>/*</Muster>
</Dekorator>
</Dekoratoren>

Es gibt zwei Hauptknoten in decorators.xml :
Der Dekorationsknoten gibt den Speicherort und den Dateinamen der Vorlage an und verwendet das Muster, um anzugeben, welche Pfade auf welche Vorlagen verweisen.
Der Excludes-Knoten gibt an, welche Anforderungspfade keine Vorlagen verwenden.

Im obigen Code verwenden beispielsweise /index.jsp und alle Anforderungspfade, die mit /login/ beginnen, keine Vorlagen.

Ein weiterer zu beachtender Punkt ist, dass das Attribut defaultdir des Decorators-Knotens das Verzeichnis angibt, in dem die Vorlagendateien gespeichert sind.

<<:  Fassen Sie zusammen, wie Sie die Nginx-Leistung bei hoher Parallelität optimieren können

>>:  Ein praktischer Bericht über einen durch den MySQL-Start verursachten Unfall

Artikel empfehlen

JavaScript zum Erzielen eines Kalendereffekts

In diesem Artikel wird der spezifische Code für J...

MySql-Wissenspunkte: Transaktion, Index, Sperrprinzip und Nutzungsanalyse

Dieser Artikel erläutert anhand von Beispielen di...

Prinzip und Anwendungsbeispiele des URL-Umschreibmechanismus von Nginx

Durch das Umschreiben der URL lässt sich die bevo...

So verbinden Sie Navicat mit der Docker-Datenbank auf dem Server

Starten Sie den MySQL-Container in Docekr Verwend...

Wofür wird jQuery verwendet? jQuery ist eigentlich ein js-Framework

Einführung in jQuery Die jQuery-Bibliothek kann e...

5 Möglichkeiten zur Migration von MySQL zu ClickHouse

Die Datenmigration muss von MySQL nach ClickHouse...

Eine einfache Möglichkeit, das Passwort in MySQL 5.7 zu ändern

Dies ist ein offizieller Screenshot. Nach der Ins...

MySQL-Protokolleinstellungen und Anzeigemethoden

MySQL verfügt über die folgenden Protokolle: Fehl...

So verhindern Sie, dass sich vsftpd-Benutzer über SSH anmelden

Vorwort vsftp ist eine benutzerfreundliche und si...

Vue implementiert einfache Rechnerfunktion

In diesem Artikelbeispiel wird der spezifische Co...

MySQL 5.7.17 Installations- und Konfigurations-Tutorial unter CentOS6.9

CentOS6.9 installiert Mysql5.7 zu Ihrer Informati...