Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 第'页;从web应用程序下载文件时写入文件的HTML代码_Java_Downloadfile - Fatal编程技术网

Java 第'页;从web应用程序下载文件时写入文件的HTML代码

Java 第'页;从web应用程序下载文件时写入文件的HTML代码,java,downloadfile,Java,Downloadfile,我有一个downloadfile servlet代码,它将动态地将内容添加到csv文件中,供用户下载。但是,页面的HTML代码显示在文件中,而不是将我想要的内容添加到csv文件中。谁能告诉我是什么导致了这个错误?这是我的控制器代码 response.setContentType("text/csv"); response.setHeader("Content-Disposition", "attachment"; filename="\\evaluations.csv\

我有一个downloadfile servlet代码,它将动态地将内容添加到csv文件中,供用户下载。但是,页面的HTML代码显示在文件中,而不是将我想要的内容添加到csv文件中。谁能告诉我是什么导致了这个错误?这是我的控制器代码

    response.setContentType("text/csv");
    response.setHeader("Content-Disposition", "attachment"; 
    filename="\\evaluations.csv\\");

    try
    {
        OutputStream outputStream = response.getOutputStream();
        String outputResult = "xxxx, yyyy, zzzz, aaaa, bbbb, ccccc, dddd, eeee, ffff, gggg\n";
        outputStream.write(outputResult.getBytes());
        outputStream.flush();
        outputStream.close();
    } catch(Exception e) {
        status = "Error exporting file, please try again later";
        System.out.println(e.toString());
    }

    //request.setAttribute("status",status);
    //dispatcher = request.getRequestDispatcher("/viewEvaluations.jsp");
    //dispatcher.forward(request, response);
编辑:


删除转发请求实际上阻止了HTML代码被复制到文件中,我也意识到它是多余的,我已经把它们注释掉了。这就是导致问题的代码

如果你只想重新加载当前页面,那么你可以做一个技巧:

您的
标记应如下所示:

<a href="javascript:void(0)" id="test">Click Here</a>
您的控制器代码将是:

@RequestMapping(value = "download", method = RequestMethod.GET)
    public void download(Locale locale, Model model,HttpServletRequest request,HttpServletResponse response,HttpSession session) {
        response.setContentType("text/csv");
        response.setHeader("Content-disposition", "attachment; filename=evaluations.csv");

        try
        {
            OutputStream outputStream = response.getOutputStream();
            String outputResult = "xxxx, yyyy, zzzz, aaaa, bbbb, ccccc, dddd, eeee, ffff, gggg\n";
            outputStream.write(outputResult.getBytes());
            outputStream.flush();
            outputStream.close();
        } catch(Exception e) {

           //logging
        }
    }

如果您想使隐藏在页面加载中的div可见,那么您应该调用
location.reload()
u
$('#divId').show()

为什么要将请求转发到另一个jsp?为什么要执行
dispatcher=request.getRequestDispatcher(“/viewEvaluations.jsp”);转发(请求、响应)?它的意思是在文件下载后刷新页面,这可能是导致错误的原因吗?@ClementOng是的,通过使用
outputStream。写入你已经在响应流中写入的
,然后你再次告诉
调度程序
转发请求。好的,删除转发请求实际上有效,html代码不再显示。我意识到这一部分也是多余的。但是,我仍然无法看到我插入的内容
@RequestMapping(value = "download", method = RequestMethod.GET)
    public void download(Locale locale, Model model,HttpServletRequest request,HttpServletResponse response,HttpSession session) {
        response.setContentType("text/csv");
        response.setHeader("Content-disposition", "attachment; filename=evaluations.csv");

        try
        {
            OutputStream outputStream = response.getOutputStream();
            String outputResult = "xxxx, yyyy, zzzz, aaaa, bbbb, ccccc, dddd, eeee, ffff, gggg\n";
            outputStream.write(outputResult.getBytes());
            outputStream.flush();
            outputStream.close();
        } catch(Exception e) {

           //logging
        }
    }