通过HTML响应下载文件

问题描述:

我有一个描述HTML页面的JSP。当单击表格中的文档时,应该从数据库下载文档。所有本地,无客户端/服务器体系结构。对于我正在使用的特定体系结构,我只能使用JSP。我使用流构建文件,但是当我下载它时,文件包含JSP,而不是原始文件内容。我该如何解决这个问题? 注意:我尝试使用带有Javascript的href链接下载文件,但无法使它在简单的JSP中工作。代码部分:通过HTML响应下载文件

` queryGetDoc+= "'"+submit+"'"; 
    resultSet2 = statement2.executeQuery(queryGetDoc); 
    File file = new File(submit); 
    file.createNewFile(); 
     if(resultSet2!=null){     
     FileOutputStream fos = new FileOutputStream(file); 
     resultSet2.first(); 
     InputStream is = resultSet2.getBinaryStream(1);    
     byte[] buf = new byte[4096]; 
     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
     int read = 0; 
     while ((read = is.read(buf)) > 0) { 
      fos.write(buf, 0, read); 
     } 
     response.setHeader("Content-disposition","attachement; filename="+submit+suffix); 
     response.setContentType("text/plain"); 
     response.setCharacterEncoding("UTF-8");` 

这是Web主机的问题,而不是JSP。您可以配置Web主机将JSP文件作为Java服务器页面文件处理或不处理。我的猜测是,它把它们当作一个简单的资源文件。

这并不是说你试图直接从浏览器加载jsp文件,对吧?浏览器不处理jsp文件。它处理html文件。您可以将jsp文件视为服务器必须首先转换的html文件。

我知道您希望在同一台计算机上拥有所有内容,但这并不意味着您可以绕过标准的http协议。你仍然需要一台服务器,即使它是与客户端相同的计算机。我建议你为此使用Tomcat。它是免费的,轻量级的,可以完成工作,包括正确加载jsp文件,可以这么说。

+0

JSP文件由外部软件调用。所以它被编译然后执行。我应该怎么做才能让文件在正确的响应中下载? –

+0

@LucianoSacco如果浏览器直接显示JSP,那么我不得不争辩说情况并非如此。所以你的解决方案取决于正确配置的这个外部软件。不幸的是它取决于这个软件,我不能帮你进一步。 – Neil

+0

对不起,我会更具体。 JSP是编译的,它不是简单的显示。 –