2

現在、ユーザー名とパスワードを使用してログインする必要がある Web アプリケーションを作成しています。プロセスの次のステップは、ログインしたユーザーが関与するプロジェクトを選択することです。

プロジェクトが選択され、送信ボタンがクリックされると、サーブレットが呼び出されて、選択したプロジェクトを準備し、メインページに arequestDispatcher.forwardreq および resp を作成します。

メインページのレイアウト:
ヘッダー div:

<div><jsp:include page="header.do" flush="true"/></div>

ボディ div:

<div>   code that is present in the mainpage.jsp </div>

フッター div:

<div><jsp:include page="footer.do" flush="true"/></div>

これらの 3 つの div がメインページを構成しているとしましょう。

でページを転送すると、メインページrequestDispatcherのコンテンツが表示されます。ただし、<jsp:include>はロードされません (DIV は空のままです)。ページを更新したときのみ (doGetと仮定します)、インクルードが正しく読み込まれます。

doPost requestDispatch の実行時にインクルードをロードできるようにする方法はありますか?

**注: requestDispatchers の構文は、メソッドdoPostdoGetメソッドでまったく同じです。

さらに明確にする必要がある場合、または追加のコードが必要な場合。私にお知らせください。


編集

使用するサーブレット コンテナ: Tomcat 6.0

Web.xml:

<!--- Servlet Mapping for Project Selection Servlet-->
<servlet>
    <servlet-name>ProjectSelect</servlet-name>
    <servlet-class>MyProject.Login.ProjectSelect</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ProjectSelect</servlet-name>
    <url-pattern>/ProjectSelect.do</url-pattern>
</servlet-mapping>

doGetしかし、サーブレット マッピングはand とどのような関係があるのでしょうdoPostか?


敬具、

B.

4

1 に答える 1

1

header.doコメントで述べたように、リッスンしていてリクエストのみfooter.doに制限されているサーブレットのように見えました。リクエストでGETも実行されるようにする必要があります。POST

コメントの新しい質問について:

aが別の jsp ページからdoPost()呼び出されたときにメソッドが呼び出されるのはなぜですか?<jsp:include>

クライアントアカウントによって発行されたHTTPリクエストのメソッドのためです。はRequestDispatcherまったく新しい HTTP リクエストなどを起動しません (それsendRedirect()を行っているのはその人だけです)。含まれている/転送されたリソースの最初のリクエストを再利用RequestDispatcherするだけです。リクエスト メソッドは変更されず、この場合、含まれている/転送されたリソースに残ります。POST


とはいえ、重複/ボイラープレートの混乱を避けるため*.doに、必要なロジックが実装された単一の中央フロントコントローラーサーブレットにすべてのサーブレットを再設計/リファクタリングすることをお勧めします。service()または、JSF、Struts(2)、Spring-MVC などの MVC フレームワークを採用することをお勧めします。詳細については、この回答を確認してください。

于 2010-11-10T15:52:28.420 に答える