JSP:dopost requestdispatcherを使用して、転送ページで呼び出されないことを含めます

StackOverflow https://stackoverflow.com/questions/4144865

質問

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

プロジェクトが選択され、送信ボタンがクリックされたら、選択したプロジェクトを準備して作成するためにサーブレットが呼び出されます requestDispatcher.forward 私のメインページへのreqとrep。

メインページのレイアウト:
ヘッダー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>'sはロードされていません(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>

しかし、サーブレットマッピングは doGetdoPost?


敬具、

B.

役に立ちましたか?

解決

コメントで述べたように、それを聞いているサーブレットのように見えました header.dofooter.do に制限されています GET リクエストのみ。あなたはそれが実行されることを確認する必要があります POST リクエストも同様です。

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

なぜですか doPost() a <jsp:include> 別のJSPページから呼び出されますか?

なぜなら、クライアントアカウントによって発射されたHTTP要求の方法。 RequestDispatcher 真新しいHTTPリクエストなどを発射しないでください(それは sendRedirect() 誰がそれをしているのか)。 RequestDispatcher ただ 再利用 付属/転送されたリソースの最初の要求。要求方法は変更されず、この場合は残ります POST 付属/転送されたリソース。


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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top