JSP:dopost requestdispatcherを使用して、転送ページで呼び出されないことを含めます
-
30-09-2019 - |
質問
現在、ユーザー名とパスワードを使用して、ログインする必要がある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の構文は、 doPost
と doGet
方法。
より多くの明確化が必要な場合、または追加のコード。私にお知らせください。
編集
使用するサーブレットコンテナ: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
と doPost
?
敬具、
B.
解決
コメントで述べたように、それを聞いているサーブレットのように見えました header.do
と footer.do
に制限されています GET
リクエストのみ。あなたはそれが実行されることを確認する必要があります POST
リクエストも同様です。
コメントの新しい質問について:
なぜですか
doPost()
a<jsp:include>
別のJSPページから呼び出されますか?
なぜなら、クライアントアカウントによって発射されたHTTP要求の方法。 RequestDispatcher
真新しいHTTPリクエストなどを発射しないでください(それは sendRedirect()
誰がそれをしているのか)。 RequestDispatcher
ただ 再利用 付属/転送されたリソースの最初の要求。要求方法は変更されず、この場合は残ります POST
付属/転送されたリソース。
とはいえ、あなたはおそらくすべてのあなたの再設計/リファクタリングをしたいと思うでしょう *.do
必要なロジックが実装されている単一の中央フロントコントローラーサーブレットへのサーブレット service()
複製/ボイラープレートの乱雑さを避ける方法。またはさらに良いことに、JSF、Struts(2)、Spring-MVCなどのMVCフレームワークを採用してください。詳細については、確認してください。 この答え.