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
In diesem Artikel wird der spezifische Code für J...
Dieser Artikel erläutert anhand von Beispielen di...
Durch das Umschreiben der URL lässt sich die bevo...
Starten Sie den MySQL-Container in Docekr Verwend...
<tr> <th width="12%">AAAAA&l...
Einführung in jQuery Die jQuery-Bibliothek kann e...
Die Datenmigration muss von MySQL nach ClickHouse...
Inhaltsverzeichnis 1. Anfrage erhalten: 2. Anfrag...
Ohne weitere Umschweife werde ich den Code direkt...
Dies ist ein offizieller Screenshot. Nach der Ins...
MySQL verfügt über die folgenden Protokolle: Fehl...
Vorwort vsftp ist eine benutzerfreundliche und si...
In diesem Artikelbeispiel wird der spezifische Co...
CentOS6.9 installiert Mysql5.7 zu Ihrer Informati...
Zuvor wurde unter https://www.jb51.net/article/20...