[英]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
表單只能有一種操作方法 (獲取/發布等)。
作為程序員,您必須首先決定處理請求的方式和方式,而不是讓用戶在doPost
和doGet
方法之間進行選擇。
兩種方法有不同的用途,請在此處檢查差異
您必須將處理單元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.