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のパフォーマンスを最適化する方法をまとめます
最近、要素テーブルを使用すると、並べ替えの問題によく遭遇します。単純な並べ替えであれば、要素の公式が...
目次1. はじめに2. 設定手順1. はじめに1. NAT モード (VMnet8) は、仮想マシン...
実装のアイデア: CSSでtext-shadowを使用してテキストの光る効果を実現します効果画像: ...
nginx プロセス モデルでは、トラフィック統計、トラフィック制御、データ共有などのタスクを完了す...
ファイルの切り替えは Linux でよく行われる操作です。Linux を初めて学ぶときに最初に触れる...
#!/bin/bash #SVNをダウンロード yum -y サブバージョンをインストールします ...
目次1. 環境整備2. データの準備3. ショーを始める4. 単語分割エンジン要約する参考文献1. ...
HTML に触れる初心者は、いくつかの HTML タグを学びます。関連記事:初心者が学ぶ HTML...
本日の投稿では、Web デザインで使用される円形要素の優れた例をいくつか挙げ、美しい丸いボタン、メニ...
今日は奇妙なネットワーク問題に遭遇しました。調査プロセスといくつかの構成状況を記録し、Linux で...
以下に、トレーニング機関からのヒントと私自身の要約をいくつか示します。以下のインデックスの内容を説明...
次のコードは、Chrome による Cookie の変更の監視を導入しています。コードは次のとおりで...
目次ビジネスシナリオ:効果のデモンストレーション:ビジネスシナリオ: el-form を使用する場合...
Ubuntu 16.04 に MySQL 5.7 をインストールするにはどうすればいいですか?メイ...
目次vuex 永続性要約するvuex 永続性vuex: ブラウザを更新すると、vuexの状態は初期状...