[英]Passing Session parameters to Thread
一旦用戶單擊提交按鈕,我想在 Servlet 的 web 項目中同時執行兩個任務
1. 運行代碼來觸發一些后端活動
2. 向用戶顯示網頁。
我在這里嘗試使用代碼示例
由於我設置的會話屬性很少,因此我需要在其中一個線程中進行設置。 我嘗試將第一個點放在一個線程中,將第二個點放在第二個線程中,但是變量沒有從 doPost() 方法解析到線程。
小服務程序:
public class JOBRUN extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
AESASNewOpenPeriod=request.getParameter("AESASNewOpenPeriod");
ScriptRunOption = Integer.parseInt(request.getParameter("AESASJOBRUNOPTION"));
HttpSession session=request.getSession();
String Stream="aaaa";
session.setAttribute("AEStream", Stream);
//Do Job 1 (Update table)
//Do Job 2 (Display webpage to user)
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
您可以為作業 1 創建一個匿名線程(如果您不需要專用的Thread
類)。
new Thread(new Runnable() {
Session localSession = session;// assign the session object to thread variable.
public void run() {
// you can access localSession here. and do the JOB 1
}
}).start();// this will run asynchrously(non blocking).
此外,如果您只想傳遞一些屬性來執行作業 1(即,如果您不想更改會話),則可以僅傳遞相關屬性。例如
String threadStream = session.setAttribute("AEStream");//local memeber variable inside anonymous thread
然后從線程后的下一行,您可以執行作業 2。
注意:如果你的意思是別的——運行一個帶有 request 的異步工作線程,你可以從 Servlet 3.x AsyncContext開始
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.