リクエストをサーブレットにディスパッチすることに関する質問があります。サーブレット - url-paternが似ているときにディスパッチ要求
私はすべてのサーブレットのために/ servlet/*のようなurlパターンを強制するパブリック・サーバーにWebサイトをデプロイしました(とにかくデフォルト構成であると聞きました)。 問題は、アプリケーションの開発中にそのような制限がないため、このようなパターンをサポートするためにビルドしていなかったことです...今、私のアプリケーションはURLのために機能しません。のは、私は、サーブレットを宣言し、このようにマッピングされているとしましょう:
<servlet>
<servlet-name>MainController</servlet-name>
<servlet-class>controller.controllers.MainController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MainController</servlet-name>
<url-pattern>/servlet/MainController</url-pattern>
</servlet-mapping>
問題は、私は私のサーブレットでこのコードを使用することです:
this.getServletContext()
.getRequestDispatcher(destination).forward(request, response);
destination
パラメータは私のWebアプリケーションのルートに常に*.jsp
です
<url-pattern>/MainController</url-pattern>
リクエストディスパッチャがwebappのルートにある.jspを常に検索していたため、すべて正常に機能していました。私は思い出すかの、のように、それはそのような演技だしかし、なぜ、今、私の新しいURLパターンと、それだけでのように* /サーブレットですべての私の.jspをSERCHしようとすると、コルスの私に HTTP Status 404 - /servlet/index.jsp
を投げる私は完全に理解してサーブレットは現在のコンテキスト外には拡張できません。
しかし、私の質問は、私は運命ですか?リクエスト・ディスパッチャに.jspに行くように指示する方法はありません。私は "/ servlet/*"パターンを処理せずに求めていますか? 私はそれを転送する前にそれを扱うので、私は絶対に要求のオブジェクトを必要とします。
私は本当にこれをどうやって解決するのか分からないので、誰かがすでにこの状況に直面していたとか、少なくとも私よりも状況がはっきりしていることを願って助けを求めています。
これを読んで私を助けていただきありがとうございます。
お礼、
サンパウエンデです。
こんにちはBalusC、 お返事ありがとうございます。 実際には、ディスパッチする直前に小切手を追加する方が良い場合でも、実際にはすべての宛先は「/」で始まります。 私のアプリケーションでは、表示する前にページをサーバーに戻す必要があるかどうかを確認します。直接アクセスすることは問題ありません。私のアプリケーションは本当にこのgetRequestDispatcher()に基づいています。転送(要求、応答)これは何も働いていない理由です。 とにかく、あなたが言っていることは面白いと思いますが、私はいくつかの点でコードをリファクタリングします。 お礼、 サンパウエンデ。 – Sampawende