2011-06-17 27 views
0

我有一個可以從shell調用的Java類。 (通過「java [command] [options]」)該類接收一組參數並輸出一個MIDI文件。當從外部調用耗時的Java命令時阻止/顯示「正在工作...」通知的最佳方法

我想要做的是建立一個簡單的Web應用程序,它從預定的目錄中讀取,該目錄總是包含3個MIDI文件(僅!!)。這個webapp的訪問者會看到這三個文件,並且必須選擇他/她認爲最好的一個(提交表單)。 Web應用程序將使用該信息使用Java類生成一組3個新的MIDI文件,同時將信息記錄到日誌文件並將舊文件移動到存檔目錄。

3件事情,我不知道是:

1)什麼網絡語言將是最適合呢?我打算在某個時候將它變成一個完整的應用程序,但是依賴於Java讓我覺得使用Servlet是一個很好的選擇。但是,PHP或Rails(例如)會更容易嗎?可以通過PHP或其他語言的shell命令調用Java嗎?

2)生成MIDI需要一些時間,所以我想在用戶提交表單後在屏幕上顯示某種加載欄或「等待...」通知。基本上我希望應用程序在執行shell命令時阻止並顯示該通知,並在命令完成並生成新的MIDI時呈現新頁面。是否有任何示例可以實現此目標(使用PHP或Servlets的AJAX會很好)?

3)當網站上有一個以上的人,並且有一個人提交了表單(並開始MIDI生成)時,我希望每個人都能得到一個加載通知或者至少觸發一些操作。有沒有一種乾淨的方式來做到這一點?

感謝任何迴應!

回答

0

你的問題有點開放,你應該嘗試在未來更多地關注你的問題。儘管如此,我會盡力給你一些指導。

1)我不一定會說有一種「最好」的方式來做到這一點,因爲您可以輕鬆使用任意數量的解決方案。你有建設一個Web應用程序的經驗嗎?如果是這樣,請使用您熟悉的內容。如果沒有,也許可以選擇一種適合您的語言的框架,或者探索以該語言從頭開始創建服務器。

2)3)關注實現的功能,同樣,你能做到這一點在許多方面。 Ajax絕對是解決這兩個問題的一種方式。我認爲你應該對你計劃使用的技術做更多的研究,以便你更清楚自己的能力。嘗試使用Ajax創建解決方案,並查看其工作原理。

+0

我意識到,我對Web應用程序不是很有經驗。我想我會嘗試一下你對Ajax的建議,看看我需要的是什麼 - 畢竟這不是一個生產應用程序,所以我不害怕首先有一個hacky /凌亂的解決方案。 – mhy

+0

不要害怕失敗,這就是你學習的方式!編程很好,都是關於迭代的。如果您的第一個解決方案看起來很拙劣,請重新嘗試並優化您的解決方案 – Grantismo

0

如果可能,您應該向網絡用戶提供真實的反饋。使用progress bar,您可以使用AJAX調用servlet或任何服務器端腳本,該腳本檢查程序的狀態並完成一個百分比。

這裏會有兩種不同的操作。你提到的第一件事就是開始處理MIDI。第二個操作是檢查應用程序的狀態。如果你(像你所說的那樣)一次只能運行一個進程,那麼這一秒更重要。

您可以考慮的一個想法是在完成處理後向用戶發送指向最終文件的鏈接。如果每個用戶需要很長時間,並且您擁有很多用戶,那麼可能會延長網頁對用戶的響應時間。這是一個可怕的想法,大多數用戶會發現這是不可接受的。諸如電子郵件之類的替代傳送方法可能更可口。

+1

實際上,這是用於研究目的;現在我並不真正關心用戶,人們可以直接訪問該網站並對MIDI進行評分。我只是想確保當有人訪問該頁面時,在MIDI已經生成時不能啓動MIDI處理。也許我可以在MIDI生成開始時生成一個標記,並在完成後刪除它?並且一旦令牌在那裏,如果其他人試圖產生MIDI,它們要麼被拒絕要麼放入隊列中?啊,我不知道。 – mhy

相關問題