2016-04-05 20 views
2

yazma ve eş zamanlı durum koduyla Konum olarak başlık ayarladıktan sonra http durumu 302 ile konum olarak tepki başlığını ayarlanamıyor 302.ben bir görüntü yazmak için bir gereksinim var bir görüntü

//Code Snippet 
    InputStream input = request.getServletContext() 
       .getResourceAsStream("/WEB-INF/a.gif"); 
    BufferedImage bi = ImageIO.read(input); 
    OutputStream out = response.getOutputStream();  
    ImageIO.write(bi, GIF_FORMAT, out); 

    response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); 
    response.setHeader("Location", redirectUrl); 

Yukarıda ile denedi kod ama hepsi boşuna. Konum Http 302 durumuyla ayarlanamadığı için. Yanıtın temizlenmesini önlemek için deneyin, ancak yine de yanıt ortadan kalkıyor. Herkes bu tür bir gereksinimle karşılaştı mı? Jsp/Servlet için yeni olduğum için lütfen yardım edin.

cevap

2

Sen tepkisini servlet için yazmadan önce ilk başlıkları belirlemek zorunda: Eğer ayarlamak istediğiniz başlıkları bilene kadar

//Set headers 
response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY); 
response.setHeader("Location", redirectUrl); 

//Write response 
InputStream input = request.getServletContext() 
      .getResourceAsStream("/WEB-INF/a.gif"); 
BufferedImage bi = ImageIO.read(input); 
OutputStream out = response.getOutputStream();  
ImageIO.write(bi, GIF_FORMAT, out); 
+0

Yukarıdaki öneriyi daha önce denedim, ancak bunu yapmak için benim görüntüümde akışa yazma başarısız oluyor ve yanıt –

+0

boş çıkıyor. Farklı bir siteye yönlendirme gönderiyor ve bir fotoğraf göstermeyi bekliyorsunuz. Resme, sonra da bazı JavaScript tarafından tarayıcı tarafında ayarlanan yönlendirmeye yanıt vermelisiniz. – user987339

0

Gecikme çıktı akışına yazma veya ByteArrayOutputStream içinde park veya benzeri. İçerik yazmadan önce başlıkları ayarlamanız gerekir veya çalışmaz.

+0

ByteArrayOutputStream kullanarak sorunu çözmeye çalıştım, ancak yine de görüntüyü yazmıyordum, bunun yerine artık başlığını ve durumunu 302 olarak ayarlamasına izin veriyor. Diğer öneriler? Teşekkürler :) –

+0

Eğer başlıkları ayarlarsanız görüntü göndermez demek? Bir yönlendirme gönderirken muhtemelen bu tamam. Üstbilgileri göndermediyseniz resmi göndermezseniz, üstbilgileri ayarlayıp ayarlamayacağınıza karar verdikten sonra ByteArrayOutputStream içeriğini sunucu yanıt akışına ilettiniz mi? – Vampire

İlgili konular