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());