2012-03-05 3 views
0

Java EE/tomcatアプリケーションへのHTTP要求に対する応答をラップして修正したいと考えています。つまり、私は結果を生成するいくつかのStruts 2アクションを持っています。リンクを隠すようなことをするレスポンスを修正するフロントエンドを置いておきたいと思います。それぞれのソースを変更することは問題ありませんそれらの数が多く、多様であるためです。応答を折り返し変更するためのJava EEフィルタはありますか?

私が望むようなサーブレットフィルタを書くことができますが、ホイールを再発明するのではなく、標準的な、十分にテストされたソリューションを構築したいと思います。私は1つを探しましたが、そのような獣を記述するJava EEドキュメントの場所がありますが、ダウンロードできるものは見つかりませんでした。

:これはひどい考えであるという意見があります。私はより良いものとしての提案には開いています。状況は、長い時間にわたって書かれた多数のアクションがあり、その出力にさまざまな修正が加えられているという状況です。私はDRYに違反するので、すべてのアクションを修正したくありません。これは、まさにHTTP応答用のAOPです。私は間違っていると思いますか?

編集#2:変更の意義については、言い表せません。一般的に、新しいコンテンツをページに追加するという意味では意味がありません。レスポンスをスキャンして、比較的小さな変更を加えています。たとえば、特定の条件の下でリンクにクラスを追加したり、ページのさまざまな場所にコードを挿入したり、極端な場合には表示されないdivをクリッピングしたりするユーザー。最大の問題は、システムが約4000個のユニークなページで構成され、それぞれが別々のアクションによって生成され、かつ/または複数の異なるテクノロジを使用して表示されるということです。このシステムの構造が悪いと言うことはできますが、それは15年前の非常に大きなソフトウェアで働く人生の現実です。私の他のアイデアは、スキャンを実行するフィルタを実装し、javascriptに変更を注入することだけです。これは本当にセキュリティに関連する(つまり、ユーザーにコンテンツを見せたくない)状況には役立ちませんが、主にユーザーの利便性のために行われる多くの場合に役立ちます。皆さん、お話をありがとうございます。どうぞお待ちください。

+0

レスポンスを解析し、DOMを変更して返信しますか?ヤック –

+0

あなたが行う必要がある正確な作業に関する詳細をいくつかお伝えしたのかもしれません。変更は実際には重大な変更ですが、これは合理的に多くの作業が必要になるでしょう(サーブレット・フィルタを使用することは明らかにハッキングになります)。あるいは、既存のコードではあまりうまく構成されていないので、小さな変更でなければならないものは、実際には大きく危険ですか? –

+0

あなたの質問を取り入れて私のテキストを編集しました。ご回答いただきありがとうございます。 – fool4jesus

答えて

1

変更が分類できる場合は、jQueryを使用することをお勧めします。 あなたのページにjQueryを追加し、条件に従ってタグを選択し、必要なものを適用するだけです。

レイアウトマネージャがある場合(Struts 2アプリケーションの場合はSiteMeshまたはTilesが必要です)、レイアウトテンプレートに必要なものを追加するだけでOKです。


あなたのプロジェクト内で一貫性のあるタグライブラリを使用していれば、もう一つの解決策があります。たとえば、すべてのプロジェクトに<xyz:myLink/>タグを付けた場合(たとえStrtus2標準タグであっても....など)、タグを再実装してTLDファイルの古い名前に割り当てることができます。

私の以前のソリューション(jQuery)とこのソリューション(タグの再実装)の組み合わせは、あなたを助けてくれると信じています。結果DOMを解析して再作成するよりもはるかに簡単でパフォーマンスが向上します。あなたの結果のページは、XHTML(整形XML)をしている場合


そして、もう一つ別の解決策は、あなたが他のXHTMLへのあなたのXHTMLを変換するためにXSLTトランスを使用することができます。

+0

アミール - あなたが何を意味するのか分かりません。私が何か間違っているとすれば、それは意図的ではないと約束します。私は私とは違う何かをしなければなりませんか? – fool4jesus

1

これは本当に恐ろしい考えのように聞こえますが、urlrewriteフィルタhttp://www.tuckey.org/urlrewrite/を見て、あなたが望むものを何でもできるようにします。あなたも見るかもしれないhttp://www.sitemesh.org/

+0

私はURL書き換えフィルタに精通していますが、それは基本的にはmod_rewrite for javaと思っていました。そういうわけではありませんでしたが、結果(URIのみ)の変更をサポートしています。 – fool4jesus

+0

サーブレットからの出力をすべて解析しなければならない*場合、私はフィルターのアイデアを再考するでしょう。パフォーマンスのオーバーヘッドは、UXを吸うようにします。あなたがやっていることがそれよりも単純ならば、進んでください。私はあなたが必要とするものを行い、それを必要とするすべてのサーブレット/アクションで使用するための小さなヘルパーライブラリを作成することを検討します。 – Sarge

+0

URLリライトフィルターを使用すると、正規表現またはANY要求に一致する要求で任意の操作を行うことができます。あなたはサーブレットスタック内外のリクエストに対してあなたが望む何かを実行するためにそれを絶対に使うことができます。私はあなたがしたいと思っていることはまったく良いデザインだとは思わないが、それがあなたの必要条件なら、これを行う方法です。 –

0

あなたはシステムを維持するのが難しいです。できるだけコアから問題を解決して対処し始めましょう。あなたが望むアーキテクチャを見つけ出し、それに向かってゆっくりと動き始めてください。フィルタを上に置くと、メンテナンス性が悪くなり、組織のコストが高くなります。

関連する問題