我正在使用gwt在Web應用程序上工作,並在Serverside上生成一個BufferedImg,我想將它發送到Clientside。我不知道該怎麼做...我如何使用Gwt從服務器生成的圖像到客戶端
回答
可以生成你爲你的服務器端BufferedImage的圖像,然後通過它與客戶端Remote Procedure Calls。
您必須實現:
服務器端
- ImageServiceImpl類在您的服務器端延伸RemoteServiceServlet。 該課程將會生成一張BufferedImage:
File imagePath = new File(url); BufferedImage image = ImageIO.read(imagePath);
你會發送這個圖片到您的客戶端。
- ImageServiceImpl類在您的服務器端延伸RemoteServiceServlet。 該課程將會生成一張BufferedImage:
客戶端
在你客戶端,你必須創建一個同步ImageService接口,它擴展RemoteService接口。
您還必須根據原始服務界面創建另一個客戶端界面異步界面(ImageServiceAsync)。正如在GWT項目
描述異步方法調用的性質要求呼叫者可以異步調用完成時,被通知因爲根據定義,呼叫者不能被阻止,直到調用完成一個回調對象通過。出於同樣的原因,異步方法不具有返回類型;他們通常返回無效。如果您希望更多地控制未決請求的狀態,請返回Request。在進行異步調用之後,返回給調用者的所有通信都通過傳入的回調對象。
最後你的servlet添加到您的網頁。XML
<servlet>
<servlet-name>ImageServiceImpl</servlet-name>
<servlet-class>
com.example.image.server.ImageServiceImpl
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImageServiceImpl</servlet-name>
<url-pattern>/com.example.image.Image/ImageService</url-pattern>
</servlet-mapping>
爲了從服務器發送圖像到你的客戶按照3個步驟:
實例化使用GWT.create服務接口()。
創建一個異步回調對象,以便在RPC完成時得到通知。
- 撥打電話。
這些都是遵循的通用規則,我建議這不是作爲問題的最終解決方案,而是作爲指導,以便了解RPC如何定義和工作。 RPC在開始時並不複雜,但只要您瞭解機制,就可以將各種數據從服務器傳遞到客戶端。
[編輯]
在圖片類型的情況下,具有記住,在GWT,HTML圖像經由在IMG元素SRC屬性加載。經由RPCT從服務器傳遞的圖像給客戶機不能直接進行,但通過使用一招:
- 有RPC調用在基地64.
- 返回到圖像的字符串中的onSuccess()方法,使用該結果String作爲參數setUrl()(其中 設置SRC屬性)。
我知道如何做RPC,我只是認爲圖像類型不可serielizable,可以在那裏不通過RPC發送。無論如何,如果有可能我的問題解決了。謝謝。 – SirAndrew00
我編輯了我的答案來回答你的問題。 – istovatis
你必須將圖像保存爲文件在「公共」位置,然後在客戶端生成圖像的URL。否則,您可以生成圖像作爲HttpServlet的servlet輸出。
您不能直接將圖像發送到客戶端。
您可以使用Base64編碼來序列化您的圖像並通過電線發送。儘管如此,您仍然必須找到解決方案來使用GWT對其進行解碼。這可能讓你開始How do I encode/decode short strings as Base64 using GWT?
我genearated我的形象的BufferedImage並將其轉變成ByteArrayOutputStream,並返回如下..
public void downloadImage(final HttpServletRequest req,final HttpServletResponse res) throws Exception {
File imagePathFile = new File(url);
if (imagePathFile.exists()) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BufferedImage image = ImageIO.read(imagePathFile);
ImageIO.write(image, "jpg", baos);
StringBuffer sbFilename = new StringBuffer();
sbFilename.append("Image_");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
sbFilename.append(sdf.format(new Date()));
sbFilename.append(".jpg");
StringBuffer sbContentDispValue = new StringBuffer();
sbContentDispValue.append("inline");
sbContentDispValue.append("; filename=");
sbContentDispValue.append(sbFilename);
res.setContentType("image/jpeg/jpg/png");
res.addHeader("Cache-Control", "max-age=30");
res.addHeader("Content-disposition", sbContentDispValue.toString());
res.setContentLength(baos.size());
ServletOutputStream os = res.getOutputStream();
baos.writeTo(os);
os.flush();
os.close();
}
}
- 1. GWT - 如何從服務器到客戶端,用戶可以做圖像
- 2. 從服務器到GWT客戶端的GWT和WebSocket/Push數據
- 3. 如何從GWT客戶端讀取服務器端.json文件?
- 4. 網格生成服務器/客戶端?
- 5. 如何從我的HTTP服務器將圖像發送到客戶端?
- 6. 如何使用fileUpload將GWT文件從客戶端傳輸到服務器
- 7. 如何使用JSON從Java服務器發送圖像到Javascript客戶端
- 8. 如何在服務器端C#使用Javascript生成的圖像?
- 9. 如何利用從WSDL生成的Web服務客戶端?
- 10. XPages:生成JSON服務器端,使用客戶端
- 11. 我想從客戶端發送圖像到服務器(使用小程序)
- 12. 複製圖像從服務器到客戶端機器在c#
- 13. 從客戶端機器上傳圖像到服務器
- 14. PHP:從客戶端機器上傳圖像到服務器
- 15. 的Http從客戶端加密到服務器和服務器到客戶端
- 16. GWT傳遞從服務器到客戶端的配置變量
- 17. 從GWT中的服務器發送文件到客戶端
- 18. 在客戶端或服務器端生成用戶界面?
- 19. GWT客戶端如何從服務器文件
- 20. 從socket.io發送客戶端到服務器的圖像
- 21. GWT客戶端和服務器
- 22. 服務器端與客戶端圖表生成
- 23. JavaFX的服務器端圖像生成
- 24. 如何使用mina從客戶端發送POJO到服務器
- 25. 如何使用客戶端從服務器獲取的Javascript壓縮圖像?
- 26. 客戶端 - 服務器(從服務器到客戶端的文件傳輸)
- 27. WCF服務器/客戶端回調,從客戶端到服務器的回覆
- 28. GWT:將PDF文檔從服務器發送到客戶端
- 29. 從客戶端發送圖像到服務器
- 30. 將圖像從C#客戶端發送到C服務器
保存並將其路徑返回給客戶端。 – Cataclysm