我當前必須生成一個顯示字符串文本的圖像,我需要在Servlet上創建此圖像,然後以某種方式將圖像傳遞給JSP頁面,以便它可以顯示它。我試圖避免保存圖像,而是以某種方式將圖像傳輸到JSP。幫助將圖像從Servlet傳送到JSP頁面
自從我開始尋找將圖像從Servlet傳遞到JSP的方法後,我還沒有找到生成圖像的方法。
編輯: JSP頁面已經做出,而不是由servlet創建的,我必須將圖像傳遞到現有JSP
任何幫助表示讚賞。
我當前必須生成一個顯示字符串文本的圖像,我需要在Servlet上創建此圖像,然後以某種方式將圖像傳遞給JSP頁面,以便它可以顯示它。我試圖避免保存圖像,而是以某種方式將圖像傳輸到JSP。幫助將圖像從Servlet傳送到JSP頁面
自從我開始尋找將圖像從Servlet傳遞到JSP的方法後,我還沒有找到生成圖像的方法。
編輯: JSP頁面已經做出,而不是由servlet創建的,我必須將圖像傳遞到現有JSP
任何幫助表示讚賞。
您需要將圖像作爲字節數組寫入響應的輸出流。事情是這樣的:
byte[] imageBytes = getImageAsBytes();
response.setContentType("image/jpeg");
response.setContentLength(imageBytes.length);
response.getOutputStream().write(imageBytes);
然後在你的JSP您只需使用標準img
元素:
<img src="url to your servlet">
如果我正確理解你的問題,事件的順序將是:
因此,您無法生成圖片並將其傳遞給JSP。但是,您可以生成網址以獲取圖像並將其放入JSP中。這很容易通過servlet傳遞給HttpServletRequest對象(JSP中的請求範圍)。例如,生成:
<a href="http://myhost.com/image_servlet?id=1234"/>
您並沒有真正說出該文本是什麼或生成該圖像需要哪些信息。如果您無法將其封裝到GET URL中,則可能需要添加額外信息並將其放入HttpSession中,以便在下一個獲取圖像請求時檢索它。
您既可以在相同的反應不 回報,因爲你返回不同的類型(例如text/html
類型的HTML頁面和image/jpeg
類型的圖像)。
對於這樣的事情,我會在初始servlet請求(包含HTML頁面)期間生成圖像。我將它存儲在我的servlet中的緩存中,然後用包含帶該句柄的圖像的URL的圖像標記寫入HTML頁面。
例如該瀏覽器向http://whatever/page
,servlet生成的圖像,並在頁面像
<img src="http://whatever/image/unique_handle_to_image">
寫HTML標籤瀏覽器將呈現HTML頁面,併爲這個問題到一個新的請求的一部分,我帶圖像句柄的servlet。
例如瀏覽器現在要求http://whatever/image/unique_handle_to_image
然後我返回圖像作爲內容類型image/jpeg
或類似。
所以你有兩個要求。一個用於渲染圖像並臨時存儲的頁面,以及第二個用於返回圖像的頁面。你必須記得清除圖像緩存,但這很簡單。我不會擔心存儲大量圖像,因爲來自瀏覽器的兩個請求通常(!)快速連續發送。
我想這是可以使用data uri提供您的瀏覽器支持它,並建立類似
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot" />
注意有一些圍繞這些需要注意的地方。查看鏈接頁面。
我會做一些沿着這條線來實現這一目標:
在你把一個鏈接到圖像的JSP頁面:
<img src="servlet/path?word=value">the rest</img>
該鏈接指向你的servlet,它會產生,使用請求圖像參數,您不需要保存它,只需將它放入響應的輸出流。您必須記住爲此servlet禁用瀏覽器緩存。
首先顯示JSP頁面,然後請求所有圖像,它應該工作得很好。
當然,你不應該把文本顯示在這樣的參數中,你應該以某種方式對它進行加密或者將它存儲在HTTP會話中。
希望這會有所幫助。
...
response.setContentType("image/jpeg");
response.setContentLength(imageBytes.length); // imageBytes - image in bytes
response.getOutputStream().write(imageBytes);//
outStream.flush();
outStream.close();
我將不得不在JSP頁面中會顯示圖像 – ChronoXIII 2009-07-20 15:40:35