快速业务通道

Struts1.x系列教程(15):使用DownloadAction类统计文件下载次数 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
javax.servlet.http.*; import org.apache.struts.action.*; import org.apache.struts.actions.*; import java.io.*; import java.sql.*; public class FileDownloadAction extends DownloadAction { private Connection conn; private String path; private String filename; // 获得了Connection对象 private void openConnection() throws Exception { if (conn == null) { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection( "jdbc:mysql://localhost/struts?characterEncoding=GBK", "root", "1234"); } } // 获得某个文件的下载次数,其中id是文件名的hashcode private int getDownloadCount(int id) throws Exception { openConnection(); PreparedStatement pstmt = conn .prepareStatement("SELECT count FROM t_dcount WHERE id = " + String.valueOf(id)); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { return rs.getInt(1); } return 0; } // 在文件完成下载后,将该文件的下载次数加1 private void incDownloadCount() throws Exception { openConnection(); int id = filename.hashCode(); PreparedStatement pstmt = conn .prepareStatement("UPDATE t_dcount SET count = count + 1 WHERE id = " + String.valueOf(id)); if (pstmt.executeUpdate() == 0) { pstmt.executeUpdate("INSERT INTO t_dcount(id, count, filename) values(" + String.valueOf(id) + ",1,''" + filename + "'')"); } } // 下载文件时调用getStreamInfo方法 protected StreamInfo getStreamInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FileInputStream fis = new FileInputStream(path + filename); final String contentType = "application/file"; // 建议设置content-disposition响应信息头,否则Web浏览器在下载文件时 // 无法在保存文件对话框中显示正确的文件名 response.setHeader("content-disposition", "attachment; filename=" + filename); incDownloadCount(); return new DownloadAction.StreamInfo() // 使用隐式的方法实现了StreamInfo接口 { public String getContentType() { return contentType; } public InputStream getInputStream() throws IOException { return fis; } }; } // 如果Struts动作不加file请求参数,则通过execute方法将指定目录中文件列表输出到客户端 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号