2016-07-13 52 views
1

have seen answers如何寫jpg作爲響應。我想寫htmljpgJava Servlet:在相同的響應中寫入輸出html文本和jpg

我現在擁有的一切:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 
    out.println("<h1 style='text-align:center;'> Welcome to our BookStore </h1>"); 
    out.println("<p style='text-align:center;'><img src='book_store_image.jpg' alt='books img' style='width:304px;height:228px;'></p>"); 
    out.println("<form style='text-align:center;'>" + 
    "<a href='" + request.getContextPath() + "/books'>Buy books</a><br/><br/>" + 
    "<a href="+ request.getContextPath() + "/sellerPage'>Sell books</a>" + 
    "</form>"); 
} 

我知道我不能這樣做抓取圖像<img src='book_store_image.jpg'

問:

我應該打開幾個輸出流吧:一個setContentType("text/html");和一個用於img

+1

「我知道我無法通過執行 ManoDestra

+0

你似乎在問一個問題,但實際上希望得到另一個問題的答案。是的,你可以使用'data:image/...'方法,但我認爲你真正想要做的就是*解析*你的圖像網址到可以從服務器查看的地方。 – JayC

回答

3

傳送圖像base64編碼並使用data:image/...;base64img標記的src屬性中。

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA 
 
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO 
 
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />

Data URI Scheme

1

爲每個請求一個答案。

所以服務的HTML。如果新的HTML包含一個新的圖像,給它一個產生圖像的servlet的URL。

如果圖像是同一個頁面,則發出的請求應該是AJAX調用,只需更改頁面上的圖像,也可以是一些文本。

如果這將是繁瑣的對動態圖像的第二個請求,你可以寫一個嵌入式<img src=[BASE64 IMAGE DATA]> - 這是很可怕的:以Base64 120 KB 160 KB的文本。