如何在Servlet中写入txt文件并在请求时自动下载

时间:2018-03-15 09:23:41

标签: java jsp servlets

我想在我的Servlet中创建一个txt文件,并在客户端请求时自动在客户端下载它。我有以下代码写入txt,但它使用glassfishserver在Netbeans IDE中提供访问被拒绝错误。我该怎么办?

 //File creation
 String strPath = "C:\\example.txt";
 File strFile = new File(strPath);
 boolean fileCreated = strFile.createNewFile();
 //File appending
 Writer objWriter = new BufferedWriter(new FileWriter(strFile));
 objWriter.write("This is a test");
 objWriter.flush();
 objWriter.close();

1 个答案:

答案 0 :(得分:1)

这不是你在JSP中做的事情。您最好拥有Servlet并创建一个Outputstream并将文字放入其中。然后将该流刷新到HttpServletResponse

@WebServlet(urlPatterns = "/txt")
public class TextServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
        response.setContentType("text/plain");
        response.setHeader("Content-Disposition", "attachment; filename=\"example.txt\"");
        try {
            OutputStream outputStream = response.getOutputStream();
            String outputResult = "This is Test";
            outputStream.write(outputResult.getBytes());
            outputStream.flush();
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

请记住,您需要设置内容类型text/plainContent-Disposition标题,提及文件名,并告知broswer应将其作为文件附件下载。

这就是 Content-Disposition 标题在简明描述中的含义

  

在常规HTTP响应中,Content-Disposition响应标头是   标题,指示是否期望内容显示内容   在浏览器中,即作为网页或作为网页的一部分,或作为   附件,在本地下载和保存。

如果您是初学者。您可能希望从此了解更多信息