Nó chắc chắn có thể được thực hiện. Bạn muốn xem Asynchronous programming with HTTP trong tài liệu, nó giải thích cách thực hiện điều này theo cách không chặn. Bạn sẽ cần một chút javascript cho phần chuyển hướng mặc dù.
Và tôi không biết ý bạn là gì với "lệnh hệ thống" nhưng bạn có thể muốn create a job cho nó, để bạn có thể kích hoạt nó với một yêu cầu. Sau đó, bạn có thể poll it cho đến khi hoàn tất và sau đó chuyển hướng người dùng. Nhưng thực sự tài liệu làm một công việc vô cùng tốt hơn trong việc giải thích nó sau đó tôi đang làm bây giờ.
Dưới đây là ví dụ về hành động điều khiển mà tôi cho rằng lệnh hệ thống của bạn trả về một số loại đầu ra Chuỗi cho người dùng. Khi công việc được hoàn thành, nó sẽ gửi một phản hồi cho người dùng, do đó kích hoạt trình xử lý thành công trong ví dụ javascript.
public static void executeSystemCommand(String input) {
Promise<String> outputPromise = new SystemCommandJob(input).now();
String output = await(outputPromise);
renderText(output);
}
Về cơ bản nếu bạn đang sử dụng jQuery $.ajax
bạn có thể sử dụng hoàn toàn các sự kiện để thăm dò ý kiến các dữ liệu (chỉ cần làm theo yêu cầu một lần nữa nếu nó đã không thành công trong thời gian chờ) và sử dụng thành công /thực hiện sự kiện để chuyển hướng người dùng khi ứng dụng phản hồi để cho biết rằng "lệnh hệ thống" được thực hiện đang chạy.
Ví dụ về một hàm bạn có thể sử dụng:
function poll(){
$.ajax({
url: "/systemcommand",
success: function(data){
// redirect to next page here
document.location.href = '/output'
},
complete: poll,
timeout: 20000
});
};
Cũng a great example on long polling là trong javascript trên StackOverflow.