2012-03-25 3 views
3

まず、Javaプログラマではない、あるいはTomcatに非常に精通していると言わせてください。 Apache Tomcat 5.0.9で動作するSaaSアプリケーションです。私はサーバー構成ファイルへのアクセス権がなく、.jspファイルも追加できません。私は午前tomcat 5.0.9サーバにアクセスできない404エラーページの宣言 - カスタム404メッセージが必要

状況です私は、Mozilla Rhinoの環境で実行されているスクリプトを持っていると私は、次の2つのオブジェクトへのアクセスがあります。

org.apache.coyote.tomcat5.CoyoteRequestFacade org.apacheを。 coyote.tomcat5.CoyoteResponseFacade

ステータスをSC_NOT_FOUND(404)に設定し、カスタムメッセージを提供する必要があります。問題は、私が何をしていてもステータスが404なら、ベンダーが設定した "醜い" 404エラーメッセージが出ます。私は "sendError"、 "setStatus"を使用しようとしましたが、ディスパッチャを取得して別のページにリダイレクトしようとしましたが、ステータスを404に設定している間にラッパーを試しましたが、フィルタについての情報を見たことがありますが、この状況でそれをどのように適用するか、それが正しいアプローチであるかどうかはわかりません。

また、404が設定されるとすぐに、Webサーバーは自身のページを提供するように見えます。私はこれをオーバーライドできない "エラーページの宣言"であると仮定しています。私はこの質問How to get the message in a custom error page (Tomcat)?(と他の多くの)を読んだが、私はこれを私の特定の状況に翻訳するのに十分理解していない。

したがって、エラーページの宣言をプログラムで「オーバーライド」することは可能ですか?または、404エラーを返すにはどうすればよいですか?私は、この時点で、平易なテキストのために解決するだろう - それは空想的である必要はありません。 404ステータスを使用するには何らかの方法が必要ですは「使いやすい」メッセージを表示します。

ご協力いただければ幸いです!

P.S.このアプローチの理由は、問題のページが検索エンジンと人間の両方によって(潜在的に)消費されるということです。検索エンジンがキャッシュからページを削除するように404が必要なので、利用可能なページがなくなったために必要なステップを人間の知事に伝えるためには、「きれいな」メッセージが必要です。

答えて

2

Tomcatは404ステータスを解釈し、標準エラーページをエラーメッセージまたはスタックトレースとともに表示しています。

response.sendError(404, "Your error message here")を使用していない場合、カスタムエラーページ - http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q6を使用する必要がありますが、これはあなたができないと言ったweb.xmlを修正できるという事実に依存しています。

今、あなたはOK HTTPステータスコード(200)を返すことができ、その応答を消費するクライアントが添付人間とブラウザだけであれば、かなりフォーマットされたエラー内容が

を表示できるようにするために、それらはNoneになります賢明な人。

一方、それを消費しているクライアントが何らかのソート(スクリプト、別のプログラムなど)のマシンであり、応答コードに基づいてロジックを実行している場合、これは良い解決策ではありません。 200ステータスコード、あなたはすべてがOKになったと言っています(エラーコード - 4xxまたは5xxではなく)

+0

ありがとうございました!私は404が機械と人の両方によって消費されることに言及すべきでした。私は両方が必要なのです。私はマシンがキャッシュからページを削除するように404が必要ですが、人間がそれを読んだら「かなり」のメッセージが必要です。私は私の質問を更新します。 –

+0

web.xmlを修正できない場合は、標準のtomcatエラーページを置き換える方法はないと思います –

関連する問題