1. Grundlegende Konzepte 1. Sitemesh ist eine Seitendekorationstechnologie: 1 : Es fängt den Seitenzugriff durch Filter ab 2. In Sitemesh werden Seiten in zwei Typen unterteilt: dekorative Vorlagen und normale Seiten. Zweitens das Prinzip der Vorlagenänderung von Webseiten ![]() 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
ein Fehler gemeldet wird und der Inhaltswertdes Meta-Tags „>“ oder „<“ enthält.Der Standardwert ist beispielsweise „< 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 ?
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
1. Stellen Sie sicher, dass das System über die e...
Hyperlinks ermöglichen es Benutzern, sofort von ei...
Heute werde ich aufzeichnen, wie man MySQL 8.0.18...
So ändern Sie den Stil der von elementUI bereitge...
Einführung in das Schlüsselwort void Zunächst ein...
Bei den tatsächlichen Projekten, an denen ich tei...
Inhaltsverzeichnis 1. Was ist Rekursion? 2. Mathe...
Dieser Artikel stellt den Beispielcode zur Implem...
Apache Arrow ist ein beliebtes Format, das von ve...
Vorwort Jeder weiß, dass das Partitionsfeld Teil ...
Vorwort Im aktuellen JavaScript gibt es kein Konz...
Eine CSS-Layout- und Stilfrage: Wie kann man die ...
Verstehen Sie zunächst die Funktion updatexml() U...
In der SQL-ähnlichen Anweisung beispielsweise SEL...
1. Dynamisches Laden von Skripten Mit der wachsen...