我正在使用的工具只能發送GET請求,並且需要使用請求中包含的信息處理繁重的操作。這些操作然後返回一個包含我將用於重定向的URL的String。使用servlet上的doGet()方法處理繁重的操作
經過一番研究,我發現doGet()方法用於預處理請求,而doPost()可用於後期處理。
有沒有什麼辦法可以使用doGet()方法執行這些繁重的操作?如果我必須使用doPost()方法,我怎樣才能將我的請求變成POST請求?
謝謝。
編輯:我已經嘗試在doGet方法中處理這些繁重的操作。但似乎servlet不會等到生成用於重定向的url字符串。我已經讀過嘗試在性能方面同步doGet()方法是一件壞事。
編輯2 - 關於我要做的事情:我正在使用的工具是Oracle解決方案。您可以在客戶端啓動自定義操作,包括Web應用程序。啓動自定義操作將嚮應用程序發送一個GET請求,其中包含有關從中啓動應用程序的頁面的所有信息(用戶,所選項目等),然後應用程序使用此信息處理我所討論的繁重操作。操作包括使用相同的ID在Oracle客戶端上創建新會話,根據所選項目進行查詢,創建XML數據,甚至使用位於Oracle服務器上的外部程序。最後,它會返回一個可下載PDF報告的下載URL,並使用此URL重定向應用程序。
這裏的servlet代碼:
package com.servlets;
import java.io.IOException;
import javax.naming.InitialContext;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.actions.agileSessionHandler;
import com.actions.BOMComparisonReport;
public class DefaultServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
agileSessionHandler handler = new agileSessionHandler(...);
BOMComparisonReport report = new BOMComparisonReport(...);
handler.setSessionObject(request);
String url = report.generateBOMReport(...);
request.setAttribute("redirectURL", url);
this.getServletContext().getRequestDispatcher("/WEB-INF/BOMCompDefault.jsp").forward(request, response);
}
}
你在文獻中看到過這些嗎?我不會將這兩種方法之間的差異描述爲預處理和後處理。你可能誤解了**冪等** HTTP方法的工作原理嗎? –
向我們展示Servlet代碼。 – NINCOMPOOP