<b>Struts1.x系列教程(15):操纵DownloadAction类统计文件下载次</b>[Java编程]
本文“<b>Struts1.x系列教程(15):操纵DownloadAction类统计文件下载次</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
除了尺度的org.apache.struts.action.Action类外,在Struts中还供应了别的7个Action类来完成特别的工作.本文及背面的文章中将介绍这些Action类的用法.
1、DownloadAction类简介
大概有时需求在Web程序中加入下载功效.假如要下载的是静态文件,可以直接交给Web服务器处理,但假如要对下载的文件做额外的功效,如统计文件的下载次数.就需求在下载文件之前先要调用呼应的程序举行处理.
固然我们可以直接在Action子类中来处理下载文件,但是假如这样的程序对比多时,就会写很多反复的代码.为了简化这个工作.Struts供应了一个新的Action类:DownloadAction.全部担当了DownloadAction类的Struts行动都可以非常简单地完成下载文件的工作.
DownloadAction类有一个抽象办法getStreamInfo.这个办法的定义以下:
protectedabstractStreamInfogetStreamInfo(ActionMappingmapping,
ActionFormform,HttpServletRequestrequest,
HttpServletResponseresponse)throwsException;
getStreamInfo办法返回一个StreamInfo对象.StreamInfo接口是DownloadAction类的一个内部接口,这个接口的定义以下:
publicstaticinterfaceStreamInfo
{
publicabstractStringgetContentType();
publicabstractInputStreamgetInputStream()throwsIOException;
}
从上面的代码可以看出,StreamInfo接口有两个办法.此中getInputStream办法返回了服务端要下载的文件的InputStream对象.getContenttType办法返回了HTTP呼应消息头字段Content-Type的信息.在getStreamInfo办法中只要返回了实现这两个办法的StreamInfo对象,便可以自动完成下载工作.
为了便利起见,DownloadAction类中还供应了两个实现StreamInfo的内类:FileStreamInfo和ResourceStreamInfo.这两个类的构造办法的定义以下:
publicFileStreamInfo(StringcontentType,Filefile);
publicResourceStreamInfo(StringcontentType,ServletContextcontext,Stringpath);
我们可以利用FileStreamInfo类来下载静态的文件.假如要下载的文件在Web根目录,可以利用ResourceStreamInfo类.此中path参数表示文件相关于Web根目录的途径,必须以“/”开首,表示从Web根目录开始.
2、实例:统计文件的下载次数
在本节中将利用DownloadAction类实现一个统计文件下载次数的Web程序.这个程序的基本原理是当一个文件下载完成后,加这个文件在数据库中的下载次数加1,假如某个文件是第一次下载,则在数据库中增添一条新记录,下载次数为1.
为了实现这个Web程序,需求以下几步:
【第1步】成立用于保存文件下载次数的数据表
在本例中我们利用名为struts数据库,并且在struts数据库中成立一个t_dcount表,代码以下:
CREATETABLEstruts.t_dcount(
idINTNOTNULL,
countINTNOTNULL,
filenameVARCHAR(256)NOTNULL,
PRIMARYKEY(id)
)ENGINE=InnoDB DEFAULTCHARSET=gbk;
以上是“<b>Struts1.x系列教程(15):操纵DownloadAction类统计文件下载次</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |