2014-10-16 71 views
0

我正在使用Struts 2,並且我寫了下面的代碼從客戶端下載Zip。它在本地工作正常,但是當遠程用戶(不同網絡)嘗試下載時,他們得到錯誤,找不到頁面。向瀏覽器寫入流時清除緩存

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    ZipOutputStream zos = new ZipOutputStream(baos); 
    ZipEntry ze= new ZipEntry("test.xml"); 
    zos.putNextEntry(ze); 
    for(MessagesList messageEntry:allMessages){ 
     String headers= "<Message>\n<Header>\n"; 
     Map<String,String> header = messageEntry.getTradeMessages().getJmsHeaders(); 
     String keyValue=""; 
     for(Map.Entry<String, String> entry : header.entrySet()){ 
      keyValue += entry.getKey()+":"+entry.getValue()+","; 
     } 
     headers += keyValue+"\n</Header>\n"; 
     zos.write(headers.getBytes()); 
     String contents="<Body>\n"+messageEntry.getTradeMessages().getMessageContent()+"</Body>\n</Message>\n"; 
     zos.write(contents.getBytes()); 
    } 
    zos.closeEntry(); 
    zos.close(); 

    stream = new ByteArrayInputStream(baos.toByteArray()); 


    return "download"; 
+0

我們需要更多信息。堆棧跟蹤,環境,配置的相關部分(struts.xml,web.xml)以及用於調用此操作的JSP或URL。 – 2014-10-17 08:13:12

+0

遠程用戶是否通過代理進入? – 2014-10-17 09:24:27

+0

沒有代理。他們在不同的國家,並通過VPN連接 – 2014-10-17 13:05:00

回答

0

這裏是我測試的代碼,它工作正常。

HttpServletResponse response = ServletActionContext.getResponse(); 
    response.setHeader("Cache-Control", "no-store, no-cache"); 
    response.setHeader("Pragma","");