我有一個簡單的JSP頁面,其中包含2個按鈕:查看和導出。當單擊查看按鈕時,我將從數據庫中獲取數據,將副本保存到會話中,並將HTML代碼寫入包含數據的標籤中。稍後,當用戶單擊導出時,我想在服務器中生成一個excel文件(使用會話中的數據)並將其下載到客戶端。使用AJAX下載JSP文件
Excel文件在服務器端成功創建。我正在使用客戶端的AJAX請求從服務器下載Excel文件。
JSP代碼:
try{
String filepath=ExportToExcel(session.getAttribute("InvestmentDetails"));
//Setting file to download
response.setContentType("application/x-download");
response.setHeader("Content-Disposition","attachment; filename=\"SIPInvestment_531.xls\"");
response.setStatus(200);
InputStream in = null;
ServletOutputStream outs = response.getOutputStream();
try {
File filetodownload=new File(filepath);
response.setContentLength(Integer.parseInt(String.valueOf(filetodownload.length())));
in = new BufferedInputStream(new FileInputStream(filetodownload));
int ch;
while ((ch = in.read()) != -1) {
outs.print((char) ch);
}
}
finally {
if (in != null) in.close();
}
outs.flush();
outs.close();
}
catch(Exception ex){
str=ex.getMessage();
}
這裏是JavaScript:
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
}
}
xmlhttp.open("POST","/SIP/rptClientInvestmentDetails.jsp?requesttype=export",false);
xmlhttp.send();
的請求到達JSP頁面上。沒有任何異常,它寫入響應輸出流。但是沒有下載從瀏覽器彈出。可能是什麼問題?
你不會得到一個異常,說明你」是否已經開始寫入響應,因爲您嘗試再次寫入嵌入在JSP中的不適當Java代碼中的響應? –