1. 基本概念 1. Sitemeshはページ装飾技術です。 1 : フィルターを通してページアクセスを遮断する 2. サイトメッシュでは、ページは装飾テンプレートと通常のページの 2 種類に分かれています。 第二に、ウェブページのテンプレート変更の原則 ![]() ユーザーが左側のナビゲーションバーで「Show the Great Wall」(/ShowGreatWall.do)をクリックすると、右側の「Show the Great Wall」ページが指定されたテンプレートで装飾されます。 ![]() 上記のプロセスを要約すると、Sitemesh が Web ページを変更する基本原理は次のように説明できます。 ![]() 3. Sitemeshの設定と使用 1) WEB-INF/web.xmlにフィルター定義とsitemeshタグライブラリ定義を追加する 次のようにコード をコピーします 。<フィルター> <filter-name>サイトメッシュ</filter-name> <フィルタークラス>com.opensymphony.module.sitemesh.filter.PageFilter</フィルタークラス> </フィルター> <フィルターマッピング> <filter-name>サイトメッシュ</filter-name> <urlパターン>/*</urlパターン> </フィルターマッピング> <タグライブラリ> <taglib-uri>サイトメッシュデコレータ</taglib-uri> <タグライブラリの場所>/WEB-INF/sitemesh-decorator.tld</タグライブラリの場所> </タグライブラリ> <タグライブラリ> <taglib-uri>サイトメッシュページ</taglib-uri> <タグライブラリの場所>/WEB-INF/sitemesh-page.tld</タグライブラリの場所> </タグライブラリ> 2) WEB-INF/decorators.xml を作成します。このファイルでは、どのテンプレートを含めるか、各テンプレートがどの URL を変更するかを設定できます。また、テンプレート制御を必要としない URL も設定できます。decorators.xml の例は次のとおりです。 次のようにコード をコピーします 。<除外> <パターン>/ログイン*</パターン> </除外> <デコレーター defaultdir="/デコレーター"> <デコレータ名="メイン" ページ="DecoratorMainPage.jsp"> <パターン>/*</パターン> </デコレータ> <デコレータ名="pop" ページ="PopPage.jsp"> <パターン>/showinfo.jsp*</パターン> <パターン> /myModule/GreatWallDetailAction.do* </パターン> </デコレータ> </デコレータ> 3) 変更したテンプレートの例を見てみましょう 次のようにコード をコピーします 。<%@page contentType="text/html;?charset=GBK"%> <%@taglib uri="サイトメッシュデコレータ"?prefix="デコレータ" %> <html> <ヘッド> <タイトル> <デコレータ:タイトル/> </タイトル> <デコレータ:head/> </head> <本文> こんにちは世界 <hr/> <デコレータ:本体/> </本文> </html> 4) 変更されたページの例を見てみましょう。 次のようにコード をコピーします 。<%@ ページコンテンツタイプ="text/html;?charset=GBK"%> <html> <ヘッド> <title>こんにちは世界</title> </head> <本文> <p>装飾されたページはここに表示されます。</p </本文> </html> 5) デコレーションテンプレートで使用できる Sitemeshタグ<decorator:head /> を見て、デコレーションしたページのheadタグ内のコンテンツを抽出してみましょう。 <decorator:body /> は、 装飾されたページの body タグの内容を取り出します。 <decorator:title default="" /> は、 装飾されたページのタイトル タグのコンテンツを取得します。 default はデフォルト値です。 <decorator:getProperty property="" default="" writeEntireProperty=""/> は、 装飾されたページの関連タグの属性値を取得します。 writeEntirePropertyは、プロパティの値を表示するか、 「property=value」HTMLタグの属性を 表示するかを示します。
に ">" または <" が含まれている場合は、エラーが報告され、トランスコードする必要があることに注意してください。たとえば、 < default はデフォルト値です。 <decorator:usePage id="" /> は、 装飾されたページによってオブジェクトとして構築され、装飾されたページの JSP で直接参照できます。 6) デコレーションテンプレートでタグを使用する例を見る 次のようにコード をコピーします 。<html lang=" <デコレータ:getProperty プロパティ="lang"/> "> <ヘッド> <title> <デコレータ:title デフォルト="Hello" /> </title> <デコレータ:ヘッド /> </head> <body <デコレータ:getProperty property="body.onload" writeEntireProperty="1"/> > メタから変数会社の名前を取得します。 <デコレータ:getProperty プロパティ="meta.company"/> 変更されたページの本文の内容は次のとおりです。 <デコレータ:本体 /> <デコレータ:usePage id="myPage" /> <%=myPage.getRequest().getAttribute("ユーザー名")%> </本文> </html> 7) 変更されたページの対応するコードを確認します。 次のようにコード をコピーします 。<html lang="ja"> <ヘッド> <title>私のサイトメッシュ</title> <meta name="会社" content="スマートドット"/> <meta name="著者" content="zhangsan"/> <スクリプト> 関数 count(){10 を返す;} </スクリプト> </head> <body onload="count()"> <p>これは修正されたページです</p> </本文> </html> IV. 結論 1. Sitemesh で最も重要なことは、装飾用のテンプレートを作成し、どのページを装飾するかを decorators.xml で設定することです。したがって、Sitemeshを使用する主なプロセスは、デコレーションテンプレートを作成し、 decorators.xmlでURLパターンを構成することです。 2. プロジェクト全体を分析して、どのページをテンプレートに抽象化する必要があるかを確認します。たとえば、セカンダリ ページ、三次ページ、ポップアップ ウィンドウなどはすべて、対応するテンプレートにする必要があります。一般的に、大規模な OA システムには 8 個を超えるテンプレートはありません。 特別なリクエスト パスがフィルターの範囲内にあるが、テンプレートを使用したくない場合はどうすればよいでしょうか 。
次のようにコード をコピーします 。<?xml バージョン="1.0" エンコーディング="ISO-8859-1"?> <デコレーター defaultdir="/デコレーター"> <!-- 除外された URL は Sitemesh によって装飾されることはありません --> <除外> <パターン>/index.jsp*</パターン> <パターン>/ログイン/*</パターン> </除外> <デコレータ名="main" ページ="main.jsp"> <パターン>/*</パターン> </デコレータ> </デコレータ> decorators.xml には 2 つの主要なノードがあります。 デコレータ ノードはテンプレートの場所とファイル名を指定し、パターンを使用してどのパスがどのテンプレートを参照するかを指定します。 excludes ノードは、テンプレートを使用しないリクエストのパスを指定します。 たとえば、上記のコードでは、/index.jsp と /login/ で始まるリクエスト パスはテンプレートを使用しません。 もう 1 つ注意すべき点は、decorators ノードの defaultdir 属性が、テンプレート ファイルが保存されるディレクトリを指定することです。 |
<<: 高い同時実行性の下でNginxのパフォーマンスを最適化する方法をまとめます
基本的な準備この実装には、クラス名が ball である単純な div が必要です。 HTMLコード:...
序文ご存知のとおり、HTML5 はインターネット コミュニティ全体に標準を提供する組織である Wor...
この記事では、水平棒グラフを実現するためのvue echartsの具体的なコードを参考までに共有しま...
PS: 最近、nginx を詳細に紹介している <<High-Performance ...
システムをリセットした後、かなり前にインストールした MySQL データベースのコンソール クエリで...
効果は以下のとおりです。 例1 例2:例1[結婚式の計画]を例にとるHTML: <div cl...
目次1. 現在のシステムにMySQLがインストールされているかどうかを確認する2. インストールされ...
MySQL はリレーショナル データベース管理システムです。リレーショナル データベースは、すべて...
「脳が多数の領域間の関係を処理できるように、入力は論理的なグループに分割する必要があります。」 – ...
この記事では、DingTalkの勤怠カレンダーを実装するためのVueの具体的なコードを参考までに共有...
画像をプルする docker プル mysql完成した画像を見る Docker イメージイメージを介...
この記事では、Frameset が作成した、できるだけシンプルなフレームワークを紹介します。さて、ま...
1. SVNサーバーをインストールする yum でサブバージョンをインストール2. SVNバージョン...
背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...
背景すべては、WeChat 技術グループのクラスメートが「写真の主な色を取得する方法はあるか」と尋ね...