簡體   English   中英

如何將相同的參數從一個JSP傳遞到兩個servlet? 然后將servlet中的不同參數傳遞給相同的JSP?

[英]how to pass the same parameter from one JSP to two servlets? Then pass the different parameters from servlet to the same JSP?

我是Web應用程序的新手。 我的問題:如何將相同的參數從一個JSP傳遞到兩個Servlet? 然后將servlet中的不同參數傳遞給相同的JSP?

重要!! 我們應該先執行流程A,然后再執行流程B!

由於項目需要太多流程,因此我想將流程分為兩個servlet。

當前,我完成實現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);

          }  
                }

在此處輸入圖片說明

那么如何將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。

重要!! 我們應該先執行流程A,然后再執行流程B!

您的SearchPage.jsp表單只能有一種操作方法 (獲取/發布等)。

作為程序員,您必須首先決定處理請求的方式和方式,而不是讓用戶在doPostdoGet方法之間進行選擇。

兩種方法有不同的用途,請在此處檢查差異

您必須將處理單元A和B都保存在一個servlet(servletA / servletB)中,
例如:首先從JSP調用Process A ,然后從Process A調用Process B ,最后將響應重定向/轉發到Process B Welcome.jsp
下面是代碼:

search.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 tag更改method="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:

 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);  
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM