我有一個簡單的GWT應用程序,它由一個包含單個FileUpload字段的FormPanel組成。此表單上的操作是將其發送到GWT.getModuleBaseURL()+「process」,該web.xml反過來告訴GWT是FileProcessServlet。在HttpServlet和GWT應用程序的客戶端之間進行通信
FileProcessServlet是一個類,我提出,延伸的HttpServlet和覆蓋的doPost(HttpServletRequest的REQ,HttpServletResponse的RESP)來解析上傳的文件,把它變成使用Base64Utils一個Base64字符串。現在,我想向客戶端傳遞一個字符串,它是剛剛發送它的文件的Base64編碼。
對於我的生活,我只是無法弄清楚如何做到這一點。關於Communicating with the Server的GWT文檔沒有說明從FormPanel.submit()接收信息的任何內容。沒有與這樣的請求相關的回調函數,就像GWT RPC的情況一樣。同時,我需要使用一個servlet,因爲我想分析一個文件,而這不能由客戶端完成。有什麼建議麼?
~~~~
PS:一種選擇是,我可以直接寫信給使用java.io的PrintWriter的servlet的html頁面(如this建議)。這可能會提供一種解決方案,將Base64字符串存儲在帶有特殊ID的div中,然後使用DOM在客戶端上獲取此內容。不過,我還沒有得到PrintWriter與我合作。每當我使用它時,使用不同的內容類型和字符編碼,我仍然看不到任何內容打印在頁面上。我目前試圖打印出來的是:
String base64 = Base64Utils.toBase64(file);
resp.setContentType("text/html; charset=UTF-8");
resp.setCharacterEncoding("UTF-8");
PrintWriter out = resp.getWriter();
out.print(base64);
out.flush(); out.close();
但是什麼都沒有出來。調試器已確認在倒數第二行的字符串base64不爲空也不爲空。任何有關這方面的幫助也將不勝感激。儘管如此,我衷心希望有更好的辦法。
這不是空要麼? – home
如何將servlet集成到頁面中? – home
我不確定我瞭解你的問題。 – Coder