0

ユーザーが検索条件を入力できる Web ページがあります。get メソッドを使用して検索フォームを送信すると、コントローラー クラスが検索パラメーターを読み取り、それらを要求属性として設定してからページに戻り、データベース接続と SQL クエリを持つ Java クラスを呼び出します。私が持っている質問は次のとおりです。ユーザーが現在の検索がまだ終了していないときに新しい検索を実行することを決定した場合、新しい検索を開始する前にサーバーで現在の検索を終了する方法はありますか?

4

2 に答える 2

0

あなたは本当にここで多くの情報を提供しませんでした. 特に、データベースへの接続方法を書いていませんでした。JDBCを使用している場合は、 Statement.cancel()でクエリの実行をキャンセルできます。また、現在実行中のクエリに関する情報をセッションのどこかに保持する必要があります。

于 2013-01-14T22:25:27.530 に答える
0

検索を実行しているスレッドが必要でありinterrupt()、-検索スレッドがThread.sleep()操作の実行中に何らかの処理を行っていることを認めます(最終的にはそれらを追加する必要があります)-スレッドはInterruptedException、検索処理を中断するために処理する必要がある によって中断されます.

それでも、Thread.currentThread()2 番目のもので参照を取得するには、どこかに (つまり、セッション内に) 保存する必要があります。

これは些細なことではなく、あまりきれいでもありません。検索ロジック (つまり、Thread.sleep()前に述べたもの)にいくつかの中断ポイントを配置し、InterruptedException適切に処理する必要があるためです。

確かに、前のスレッドがまだ実行中であることを無視して、新しい検索を実行する方が簡単です。

于 2013-01-15T00:06:56.333 に答える