2016-07-13 6 views
1

I have seen answers wie man jpg als Antwort schreibt. Ich möchte sowohl html als auch jpg schreiben.Java-Servlet: Schreiben Sie, um HTML-Text und jpg in der gleichen Antwort auszugeben

Was ich habe jetzt:

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>"); 
} 

Ich weiß, dass ich nicht Bild, indem Sie holen kann <img src='book_store_image.jpg'

Frage:

Sollte ich mehrere Ausgabeströme für sie öffnen: eine für setContentType("text/html"); und eine für img?

+1

"Ich weiß, dass ich das Bild nicht abrufen kann, indem ich' 'img src = 'book_store_image.jpg'" mache - warum? – ManoDestra

+0

Sie scheinen eine Frage zu stellen, wünschen sich aber tatsächlich die Antwort auf eine andere Frage. Ja, Sie können die 'data: image/...' Methode verwenden, aber ich denke, alles was Sie wirklich tun wollen, ist * Auflösen * Sie Bild URLs, wo sie vom Server angezeigt werden können. – JayC

Antwort

3

Übertragen Sie das Bild base64 codiert und verwenden Sie data:image/...;base64 im src Attribut des Tags img.

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

Siehe Data URI Scheme

1

Für jede Anfrage eine Antwort.

So dienen die HTML. Wenn das neue HTML ein neues Bild enthält, geben Sie ihm eine URL für ein Servlet, das das Bild erzeugt.

Wenn das Bild ein und dieselbe Seite ist, sollte die Anforderung ein AJAX-Aufruf sein, nur das Bild auf der Seite ändern und vielleicht etwas Text.

Wenn es eine zweite Anforderung für ein dynamisches Bild müssen umständlich wäre, Sie ein eingebettet<img src=[BASE64 IMAGE DATA]> schreiben konnte - das ist ziemlich monströs: 120 KB in Base64 ist 160 KB Text.

Verwandte Themen