dynamic数据,以优秀的servlet
我有一个简单的页面,我试图将值传递给可以在Excel中写入的servlet。
当我得到使用request.getParameter(value)
传递的request.getParameter(value)
并使用system.out.println(value)
它将打印传递的值。
当我尝试在excel中写入value
,它会写入空白,但是当我写入string
它会写入确切的string
。 不知道发生了什么事。 需要帮忙。
以下是脚本:
$(document).ready(function () { $('#getFile').click(function () { console.log( $('#test').val()); $.get('excelCreaterServlet', {name: $('#test').val()}, function (response) { console.log(response); window.open("excelCreaterServlet"); }); }); });
下面是servlet代码:
String name = request.getParameter("name"); System.out.println(name); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell(0); HSSFCell cell1 = row.createCell(1); cell.setCellValue(name); cell1.setCellValue("teest"); ByteArrayOutputStream outByteStream = new ByteArrayOutputStream(); wb.write(outByteStream); byte[] outArray = outByteStream.toByteArray(); response.setContentType("application/ms-excel"); response.setContentLength(outArray.length); response.setHeader("Expires:", "0"); // eliminates browser caching response.setHeader("Content-Disposition", "attachment; filename=testxls.xls"); OutputStream outStream = response.getOutputStream(); outStream.write(outArray); outStream.flush();
这是因为你在下面的代码中调用你的servlet两次:
$.get('excelCreaterServlet', {name: $('#test').val()}, function (response) { console.log(response); window.open("excelCreaterServlet"); });
一旦得到和另一次在window.open期间没有名称参数,这导致您的最终输出为空。
解决方法是使用下面的代码应该工作正常:
window.open("excelCreaterServlet?name="+$('#test').val());