私は別のJSPファイルを呼び出すためにajaxを使いたいと思います。 AjaxはJSPからの結果を待つことなく、次のページにリダイレクトします。私がajaxでPHPを呼び出している場合。 PHPファイルはignore_user_abort()を使用して、リダイレクトを実行しているJSが終了しないようにすることができます。同じことをするJSPに似たようなメソッドがありますか?jspにignore_user_abort()と同じPHP関数がありますか?
0
A
答えて
3
要求スレッドとは異なるスレッドでタスクを実行します。
JSPでこれを行う方法を尋ねているのは非常に奇妙です。 A JSPは、ビジネスロジックを実行するのではなくHTMLで結果を提示することを意図しています。あなたは通常servletを使用します。また、より簡単に粒度の細かいJavaの処理を行うこともできます。
まあ、サーブレットのこの基本的なキックオフの例を考えると、あなたはignore_user_abort(true)
とPHPと同じで達成することができなければなりません:
@WebServlet("/someurl")
public class SomeServlet extends HttpServlet {
private ExecutorService executor;
@Override
public void init() {
executor = Executors.newFixedThreadPool(10); // Create pool of 10 threads.
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// First collect necessary request data.
Map<String, String> params = request.getParameterMap();
// Task is your custom class which implements Callable<SomeResult> and does the job accordingly in call() method.
Task task = new Task(params);
// Task is now in a queue and will run in a separate thread of the pool as soon as possible.
Future<SomeResult> future = executor.submit(task);
// Current request will block until it's finished. If client aborts request, the task will still run in background until it's finished.
SomeResult someResult = future.get();
// Now do your thing with SomeResult the usual way. E.g. forwarding to JSP which presents it.
request.setAttribute("someResult", someResult);
request.getRequestDispatcher("/WEB-INF/someResult.jsp").forward(request, response);
}
@Override
public void destroy() {
executor.shutdownNow(); // Very important. Or your server may hang/leak on restart/hotdeploy.
}
}
はこれに注意してください。これをすべてのサーブレットに実装しないでください。この種の仕事が絶対に必要な人のみ。これにスレッドをこぼさないでください。
関連する問題
- 1. 関数の変数と関数の変数に同じ名前があります。アクセスするには?
- 2. Magento:ULリストの高さが同じになるjs関数がありますか?
- 3. extern宣言と関数定義が同じファイル内にあります
- 4. MatlabにJava関数String.split(デリミタ)と同様の関数がありますか?
- 5. PHPのignore_user_abort()に相当するmod_perl2/Perl 5はありますか?
- 6. 複数のNSFetchRequestControllerが同じビューにありますか?
- 7. SQL:同じテーブルに複数の一致がありますか?
- 8. mediaelement.js同じページに複数の動画がありますか?
- 9. 複数のビューポートが同じJTextAreaにありますか?
- 10. 同じ領域に複数の断片がありますか?
- 11. Highcharts.js - 複数のテーマが同じページにありますか?
- 12. php関数が別の関数の中にあります
- 13. php関数openssl_verify()の代わりにColdfusionがありますか?
- 14. is opencvにmatlab conv2と同等の関数があります
- 15. PHPは同じ関数で複数回同じクエリを実行します。
- 16. Fortranに同等のMATLAB dec2bin関数がありますか?
- 17. CassandraにSQL:LIKE Conditionと同じクエリがありますか?
- 18. 同じプロジェクトのGwtとjsp
- 19. なぜEMRインスタンスにはマッパーと同じ数のレデューサーがありますか?
- 20. 関数未定義:javascript関数を同じファイル内で定義する必要がありますか?
- 21. :2 PHP関数、同じ結果:なぜ?
- 22. イベントハンドラと関数は同じですか?
- 23. PHPには他のハッシュ関数がありますか?
- 24. 同じタブの下に複数のアクティビティがあります
- 25. 同じIPの443ポートに複数のドメインがあります
- 26. PERFORCEの複数のチェンジリストに同じファイルがあります
- 27. 同じページに複数のビューがありますMVC2
- 28. 同じ場所に複数のマーカーがあります - MarkerClusterer
- 29. 同じアプリケーション内に複数のFlaskオブジェクトがあります
- 30. 角2同じページに複数のコンポーネントがあります
ありがとうございました!実際には、JSPで別のURLを呼び出すためにJquery Ajaxを使用しています。結果を確認するためにJSPファイルのみを編集できます。 JSPで同じことをする方法はありますか? –
JSPからビジネスロジックをサーブレットに移動するだけです。結果に基づいてHTMLのみを動的に生成するようにJSPを設定します。 – BalusC