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のパフォーマンスを最適化する方法をまとめます
背景要件: ERP システムに「ボタン権限制御」機能を追加する必要があり、権限の制御粒度をボタン レ...
この記事の例では、古典的なマインスイーパゲームを実装するためのjsの具体的なコードを参考までに共有し...
目次1. 問題を発見する2.重複したデータを残さずにすべて削除する3. 削除テーブルから重複データを...
1. 要素の幅/高さ/パディング/マージンのパーセンテージ基準要素の幅/高さ/パディング/マージンの...
目次1. はじめに2. 環境整備1. 基本環境3.Mysqlマスタースレーブ構成をインストールする1...
1. MySQLのトランザクションの概念MySQL トランザクションは主に、操作量が多く複雑度の高い...
https ベースポート 443。これはキーと呼ばれるものに使用されます。これらのことを理解せずにで...
クイックリーディングSQL ステートメントを監視する必要があるのはなぜか、監視方法と監視手段について...
MySql のウィンドウ関数を使用して統計データを収集する際に、小さな問題が見つかったので、それにつ...
CSS3 の 3D 効果を使用して立方体を作成する方法を学ぶと、3D シーンの回転と変位のプロパティ...
要件: ページに画像を表示する必要がありますが、さまざまな理由により、画像はサーバー 2 にあります...
1. DNSサーバーの概念インターネットでの通信には IP アドレスの助けが必要ですが、数字に対する...
1.Mysqlイメージを取得するdocker pull mysql:5.7 2. MySQLイメージ...
成果を達成する実装コードhtml <div クラス = 'ラッパー'> ...
まず、データベース パーティショニングとは何でしょうか?以前、MySQL のテーブル パーティショニ...