Java JSP-允许用户从服务器下载文件

Java JSP-允许用户从服务器下载文件,java,html,jsp,Java,Html,Jsp,我已经用Java/JSP编写了一个程序,它根据用户输入动态创建一个CSV文件并将其存储(在服务器上) 如何允许用户下载此文件 当前正在使用以下命令来决定存储文件的路径 String csv2 = "D:\\erp\\Dispatch\\DC_" + (df.format(date)).toString() + "_Print.csv"; CSVWriter writer2 = new CSVWriter(new FileWriter(csv2)); 根据我的研究,最好的办法是将其存储在web目

我已经用Java/JSP编写了一个程序,它根据用户输入动态创建一个CSV文件并将其存储(在服务器上)

如何允许用户下载此文件

当前正在使用以下命令来决定存储文件的路径

String csv2 = "D:\\erp\\Dispatch\\DC_" + (df.format(date)).toString() + "_Print.csv";
CSVWriter writer2 = new CSVWriter(new FileWriter(csv2));
根据我的研究,最好的办法是将其存储在web目录中,并提供文件的相对路径。在这种情况下,我应该将文件存储在哪里(或者如何将其存储到web目录)

注意:上面的路径是在JSP中设置的,因此我可以使用相同的变量向用户提供URL/路径

注2:服务器是tomcat服务器

使用以下代码:

<a href="path for the file" download="filename with extension"><u>Download</u></a>

您可以创建一个文件,无需将其存储在服务器上,即可将其作为可下载文件立即返回给客户端

这样做的好处是,除非定期清理服务器,否则服务器上不需要临时存储,因为临时存储可能会不断增长

当然,如果您希望创建一个“归档”的旧CSV文件作为服务给您的客户,那么这并不是真正的优势。但大多数时候,“创建/提供下载/丢弃”是更有趣的方法

下面是一些示例代码,可以让您了解:

1) servlet(注意:未显示异常处理)

2) WEB-INF/WEB.xml中的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      version="3.0"> 
     ....
    <servlet>
        <display-name>download</display-name>
        <servlet-name>download</servlet-name>
        <servlet-class>com.mypackage.CsvDownloadServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>download</servlet-name>
        <url-pattern>/download</url-pattern>
    </servlet-mapping>
    ....
</web-app>
这与前面的
链接具有相同的效果,只有参数由用户提供。一旦用户单击submit按钮,就会调用servlet代码,并开始CSV生成和后续下载。
同样,不会显示用户输入检查。

您真的希望服务器上有一个文件,还是希望用户下载动态生成的CSV,就像它在转到servlet或JSP时下载动态生成的HTML一样?如果是后者,则将CSV写入响应编写器,而不是文件编写器。如果是前者,则读取文件并将其写入响应编写器。不要将文件放在webapp文件夹下。嘿,谢谢。任何有助于理解我应该如何使用响应编写器的链接或内容?没有。但它是一个编写器,你可以像其他任何编写器一样使用它:你为它编写字符,这些字符构成响应体。谢谢兄弟。我已经解决了这个问题(fgot关闭)。不过,您的方法似乎更全面:)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      version="3.0"> 
     ....
    <servlet>
        <display-name>download</display-name>
        <servlet-name>download</servlet-name>
        <servlet-class>com.mypackage.CsvDownloadServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>download</servlet-name>
        <url-pattern>/download</url-pattern>
    </servlet-mapping>
    ....
</web-app>
<a href="/myapp/download?p=myparamvalue">Click Here</a>
 <form method='GET' action='/myapp/download'>
    Enter a value for parameter "p":
    <input id="p" type="text" size="10" name="p">
    <input type="submit" value="Generate and Download">
 </form>