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

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

最佳答案

这不是你在 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 header ,其中提及文件名并告诉浏览器应将其作为文件附件下载。

这就是 Content-Disposition header 的简洁描述

In a regular HTTP response, the Content-Disposition response header is a header indicating if the content is expected to be displayed inline in the browser, that is, as a Web page or as part of a Web page, or as an attachment, that is downloaded and saved locally.

如果您是初学者。您可能想了解更多信息

关于java - 如何在Servlet中写入txt文件并在请求时自动下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49295575/

相关文章:

java - 发送响应后Servlet处理数据

java - JSP Tomcat 和 chrome:net::ERR_INCOMPLETE_CHUNKED_ENCODING 200

java - servlet完成后显示HTML页面

java - AWS Opsworks Java 应用程序服务器 403 错误

java - 无法将 jsp session 解析为整数

java - JSP GETTER SETTER 显示结果为 NULL

java - 要求用户进行多次输入

java - 未知的抽象模式类型

java - java中如何操作列表

tomcat - 在 Servlet 中获取服务器证书/SSL