原文http//blog_sina_com_cn/s/blog_49a269ae01008yv2.html
之前沒怎麼用過這個,這次項目中用到了,於是總結一下:
應該說主要注意三方面:
1、寫一個servlet
2、在web.xml中配置這個servlet
3、頁面上調用這個servlet
第一:
寫一個servlet,當然要繼承javax.servlet.http.HttpServlet,重寫post或者get方法(看需要),這個servlet的思想就是將要下載的文件寫到文件流中去,而這個文件輸出流就是HttpServletResponse對象的輸出流,如下所示:
public class DownloadServlet extends
HttpServlet{
public void doPost(HttpServletRequest
request,HttpServletResponse response) throws
ServletException,IOException
{
try
{
String
downFilename=request.getParameter("curfile");
String
filepath=request.getParameter("path");
response.setContentType("text/plain");
response.setHeader("Location",downFilename);
response.setHeader("Content-Disposition", "attachment; filename=" +
downFilename);
OutputStream outputStream = response.getOutputStream();
InputStream inputStream = new
FileInputStream(filepath+downFilename);
byte[] buffer = new byte[1024];
int i = -1;
while ((i = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, i);
}
outputStream.flush();
outputStream.close();
}catch(FileNotFoundException
e1)
{
System.out.println("沒有找到您要的文件");
}
catch(Exception e)
{
System.out.println("系統錯誤,請及時與管理員聯繫");
}
}
public void doGet(HttpServletRequest
request,HttpServletResponse response) throws ServletException,
IOException
{
doPost(request,response);
}
}
web.xml配置:
<servlet>
<servlet-name>download</servlet-name>
<servlet-class>com.dichain.common.tools.DownloadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>download</servlet-name>
<url-pattern>/Download</url-pattern>
</servlet-mapping>
jsp中調用servlet彈出一個下載對話框:
window.open ('Download?curfile='+curfile+'&path='+path,'newwindow','height=30,width=40,top='+yy+',left='+xx+',toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no');