2016-11-11 2 views
1

私はWebアプリケーションを初めて使用しました。 私の問題:同じパラメータを1つのJSPから2つのサーブレットに渡す方法は?サーブレットから別のJSPに同じパラメータを渡しますか?同じパラメータを1つのJSPから2つのサーブレットに渡す方法はありますか?サーブレットから別のJSPに同じパラメータを渡しますか?

重要!我々は最初にプロセスBを行う必要があります!

プロジェクトの処理が多すぎるため、2つのサーブレットにプロセスを分けたいと思います。

現在、processAを実装します。これは、SEARCH PAGE JSPからSERVLET A(processAを実行)に検索語を渡し、結果をWELCOME PAGE JSPに渡します。それは私が使用したコードを(私は絵に赤色で強調表示された)!!!作品

: のWeb.xml

<servlet> 
    <servlet-name>ServletA</servlet-name> 
    <servlet-class>test.processA</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>ServletA</servlet-name> 
    <url-pattern>/download result</url-pattern> 
    </servlet-mapping> 

検索ページJSP:

<form action="download result">   
      Please enter a Keyword <br> 
      <input type="text" name="term"size="20px"> 
      <input type="submit" value="submit"> 

</form> 

servletA:

public class processA extends HttpServlet { 
    protected void doGet(HttpServletRequest request, 
       HttpServletResponse response) throws ServletException, IOException 
      { 
      // reading the user input 

      response.setCharacterEncoding("UTF-8"); 
      PrintWriter out = response.getWriter(); 
      // Retrieve search term from GET request and parse to desired format 
      String searchTerm = (request.getParameter("term").toString()).replace("%20", "_").replace(" ", "_").replace("+", "_").replace(".", ""); 
      System.out.println("=====(servlet) searchTerm is:"+searchTerm); 

    } 

       protected void doPost(HttpServletRequest request, 
         HttpServletResponse response) throws ServletException, IOException 
        { 
       doGet(request, response); 

      } 
       } 

enter image description here

システムにprocessBを実装する方法は?それは私が示した絵のように見えます。

servletBそんなに

public class processB extends HttpServlet { 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
      { 
      doPost(request,response); 
      } 


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
     { 



     String searchTerm = (request.getParameter("term")).replace(" ", "_"); 
     String queryTerm = request.getParameter("term"); 

     System.out.println("=====(servlet) searchTerm is:"+searchTerm); 

System.out.println("=====(servlet) keep doing the other process……………………!!!”); 


} 
} 

感謝! またはdoGETとdoPOSTを同時に使用できない場合は、processAをdoPostに変更できます。

重要!我々は最初にプロセスBを行う必要があります!

+0

ではなく、への転送をjsp、servletBにリダイレクト –

+0

uはservletAを使用してservletBを呼び出し、servletAからservletBにString searchTermを渡しますか? – bob90937

+0

http://stackoverflow.com/questions/5539176/sending-redirect-to-another-servlet-jsp-without-loosing-the-request-parameters –

答えて

2

SearchPage.jspのフォームには、の方法(取得/投稿など)が1つしかありません。

プログラマは、最初にユーザーがdoPostdoGetメソッドのどちらかを選択できるようにするのではなく、要求を処理する必要があるかどうかを決定する必要があります。からProcess A最初コール:

方法の両方は、異なる目的がhere

あなたが単一のサーブレット(servletA/servletB)に処理ユニットAとBの両方を維持する必要が相違、例えば
をチェック有しますJSPは、以下Process B
からWelcome.jspへの応答を転送/ Process AからProcess Bを呼び出し、最後にリダイレクトすると、コードです:

検索。JSP

<form action="download result" method="get"> 
... 
</form> 

servletA:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
     { 
     ... //processing logic of A 
     ... //processing logic of A 
     ... //processing logic of A 
     doPost(request,response);//call Post 
     } 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     ... //processing logic of B 
     ... //processing logic of B 
     ... //processing logic of B 

     RequestDispatcher rd=request.getRequestDispatcher("welcome.jsp"); 
     rd.forward(request, response); 
    } 

注:あなたはその逆を行うことができますが、それは最初のdoPostを呼び出して、後でdoGetあなたの要件ごとです。また、これをform tagmethod="post"に変更する必要があります。クエリの


コメントに以下のコードを使用します。

servletA:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
     { 
     ... //processing logic of A 
     ... //processing logic of A 
     ... //processing logic of A 
     RequestDispatcher dispatcher = null; 
     dispatcher=request.getRequestDispatcher("servletB"); 
     dispatcher.forward(request, response);//call Post 
     } 

servletB:servletAで

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     ... //processing logic of B 
     ... //processing logic of B 
     ... //processing logic of B 

     RequestDispatcher rd=request.getRequestDispatcher("welcome.jsp"); 
     rd.forward(request, response); 
    } 
+0

あなたの共有に感謝します。私はその考えを得た。あなたの場合は、 "新しいサーブレットA"としてservletAとservletBを組み合わせます。しかし、私は2つのサーブレットを保持したいと思います。サーブレットAで "response.sendRedirect(serveletB)"を使用することは可能ですか? – bob90937

+0

このためには、最初に 'servletA'を処理して2つのサーブレットを保持し、' requestdispatcher'を使用してリダイレクトの代わりに 'serlvetB'を呼び出して、パラメータ値がそのままになるようにします。後で 'serlvetB'のリクエストをwelcome.jspに送ります。ここでは、2つのサーブレットがloginおよびwelcomeServlet http://www.javatpoint.com/requestdispatcher-in-servletで使用される例を示します –

関連する問題