Struts框架文件授权下载的实现

来源 :科学与财富 | 被引量 : 0次 | 上传用户:huojugjf
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  (江西工业贸易职业技术学院 南昌 330100)
  摘 要:用action的stream结果类型实现文件的下载功能,从而有效地解决文件下载的权限控制问题,并根据系统的功能需求完成与下载相关的其它工作。
  关键词:Struts框架;授权下载;stream结果类型;文件输入流
  一、引言
  网站中的文件下载是比较常用的功能,实现起来也很简单,只要有一个关联到相关资源文件的超链接就可以实现下载,不需要编写服务器端代码。然而这样的下载方式虽然易于实现,却难以实施权限控制。例如,我们希望资源对所有人可见,但只有登录用户可以下载,或者下载前需要扣除用户账户积分。对于这样的功能要求,常规的超链接直接关联到资源文件的方式便无法满足需求了,要考虑其它的技术手段。
  在Struts框架中,一种可行的方法是用action来处理文件的下载,然后就可以通過登录检查拦截器来控制只有登录用户才能下载资源,或者在action中根据系统需要,在下载前扣除用户账户积分,如果账户积分不足,则不能下载,等等各种需求均可实现。
  二、使用action处理文件下载
  使用action来处理文件的下载而不是通过超链接直接链接到资源文件,这是实现授权下载的第一步。而通过action来实现文件下载则需要用到action的一种名为stream的result结果类型。这种结果类型可以向客户端提供文件输入流,既可用于文件下载,也可用于动态生成文件。
  使用stream结果类型需要在Action类中定义一个返回InputStream的方法,所谓InputStream就是提供给客户端的文件输入流,即被下载文件的入口。返回InputStream的方法可以使用默认的名称getInputStream(),这样可以免去在配置文件中设置参数的麻烦。在getInputStream()方法中,可以调用ServletContext提供getResourceAsStream()方法返回指定文件对应的输入流,具体代码如下:
  public InputStream getInputStream(){
  String filepath="……";//要下载的文件路径名,可以使用自应用程序根目录开始的绝对路径,例如“/download/work.rar”,其中“download”是位于WebRoot文件夹中的子文件夹。
  return ServletActionContext.getServletContext().getResourceAsStream(filepath);
  }
  这里使用变量filepath表示要下载的文件路径名,可以通过页面传递的参数间接得到要下载的文件名。例如用参数fileId得到页面提交的要下载的文件的资源编号,再调用资源类的有关方法获得这个资源的文件名filename,并根据所在文件夹的位置得到文件路径名filepath,为getInputStream()方法的执行提供必要的信息。
  在Action类中定义了getInputStream()方法之后,接下来我们还需要创建具体处理下载任务的action方法。本例就直接使用默认的execute( )方法,并且先不做任何控制,直接在execute( )方法中写上“return SUCCESS;”语句,无条件下载文件。在这个Action类中,我们定义了私有变量fileId和它的setter及getter,用来接收页面传递的资源编号,从而知道是要下载哪个资源。另外还定义了私有属性filename和它的setter及getter,稍后将用它向struts.xml配置文件传递文件名信息。
  定义action方法后,在struts.xml中配置action以及action的stream结果类型。当action返回success结果视图时,struts框架会自动调用getInputStream()方法得到指定文件的输入流,向客户端提供指定文件的下载。具体配置代码如下所示:
   attachment;filename=${filename}
  

  其中参数“contentDisposition”指定了文件下载的处理方式和保存下载文件的默认文件名。
  文件下载的处理方式包括内联(inline)和附件(attachment)两种方式。在不设置的情况下默认是内联方式,浏览器会尝试直接显示文件。假如是浏览器可以打开的文件类型,如图像文件、文本文件等,就会直接把图像或文件内容显示在浏览器窗口。假如是浏览器无法打开的文件类型,如office文档、压缩文件等,就会出现另存为或新建下载任务对话框进行下载。附件方式则会直接出现另存为或新建下载任务对话框进行下载。
  除出弹出对话框进行下载,通常我们还希望在对话框中显示默认的文件名,这个文件名通常是要下载的文件的原文件名,因此filename=${filename}就是用来将原文件名设置为下载时的默认文件名。${filename}是取action中变量filename的值,即要下载的文件的原文件名。为了解决配置文件显示${filename}值时出现的中文乱码的问题,可以在getFilename()方法中返回filename的“ISO-8859-1”编码格式的字符串。
  至此,使用action下载文件的功能已实现,接下来就可以以此为依托,实现授权控制。
  三、下载的授权控制
  如果需要對下载权限进行控制,例如未登录用户不能下载,那么可以使用自定义的登录验证拦截器对刚才的下载action进行拦截,假如拦截器发现用户未登录,则显示提示信息并跳转到登录页面而不执行后续的下载action。
  如果下载要扣除账户积分,积分不足则不能下载,那么可以在下载的action中比较当前登录用户的账户积分与下载资源所需要花费的积分,如果不足则返回其它结果视图并给出相应的提示信息,只有在账户积分足够的情况下才返回SUCCESS结果视图执行下载。
  通常,对于已支付积分下载过的资源,再次下载时可以不用二次扣费。如果这样的话,那么可以用一个数据表记录用户付费下载过的资源,在下载前先查看用户是否为这个资源付过费,如果付过就不再扣积分也不能再查积分是否足够下载了。
  还有很多其它的下载控制及相关工作,借助这个action方法,都可以实现,这里就不再赘述了。
其他文献
(嘉应学院医学院 广东 梅州 514031)  摘要:我国体育产业发展属于刚刚起步阶段,离市场融合阶段还有相当一段距离,然而,随着企业跨产业经营并购、技术创新和战略联盟等形势的不断发展,体育产业与相关产业的融合现象越来越受到关注,体育与体育服装器械、体育与媒体产业、旅游业等产业之间的融合是大势所趋,是必然发展趋势。本文介绍体育与相关产业融合发展的意义,体育产业融合发展的机制及体育与相关产业融合发展
期刊
(日照職業技术学院 山东日照 276826)
期刊
(南宁冠领信息技术有限公司 530000)  摘要:随着企业现代化生产规模的不断扩大,立体仓库己成为生产物流系统中的一个重要且不可缺少的环节,分拣输送机是其关键设备。因此各个生产企业都迫切地需要改进生产技术,提高生产效率,尤其在需要进行物料分拣的企业,以往一直采用人工分拣的方法,致使生产效率低,生产成本高,企业的竞争能力差,物料的自动分拣已成为企业的唯一选择。针对上述问题,利用PLC技术设计了一种
期刊
(冀中能源峰峰集团有限公司九龙矸石热电厂 河北邯郸 056200)  摘要:火电厂生产系统中汽轮机承担的重要的功能,将锅炉传递的蒸汽能转化为机械能,从而保证设备的运转要求。由于火电厂生产环境比较特殊,在设备运行环节受到外界因素的影响比较明显,容易导致各项设备故障的出现,降低生产效率。本文将从实际生产经验出发,结合汽轮机的主要运行特征,制定一系列的优化策略,提升汽轮机的生产效率。  关键词:火电厂;
期刊
(陕西黄河集团有限公司 陕西西安 710043)  摘要:磷化技术是当前采用较多的金属表面处理技术,在涂装工业中,由于锌盐磷化能够显著增加复合涂层的耐久性和使用寿命而被广泛应用。但是一般的磷化温度都比较高,开发常温节能、无毒低污染的磷化工艺己成为当今磷化工艺的主要研究方向。本文将重点对金属常温磷化、各种类型、发展状况及发展趋势进行分析。  关键词:金属常温磷化;优点;影响因素;发展趋势  1 概述
期刊
(浙江丽水 323000)  摘要:水利工程是一个重要的工程,每一个国家在水利工程方面都投入相当大的资金设备以及社会福利条件。水利工程是我国的民生工程,在我国进行水利工程改革后,我国水利工程明显有了很大的提高。在这个过程中我们也注意到在水利工程管理当中依旧存在相当大一部分的问题,例如,如何对水利工程进行合理科学的管理,我们应该根据水利工程中存在的弊端,提出解决的方法和合理的建议,是我们今天要进行的
期刊
(广东电网有限责任公司韶关新丰供电局 广东韶关 511100)  摘要:由于电气工程及其自动化技术具有自身明显的优势,社会各个领域都广泛应用电气工程及其自动化技术。就目前而言,我国电气工程及其自动化技术仍然存在着一系列的问题,存在着明显的不足之处,我国需要加强对电气工程及其自动化技术的研究。因此,本文主要探討电气工程及其自动化发展的现状与趋势,为充分发挥电气工程及其自动化技术的优势提供合理的参考意
期刊
(山西财经大学经济学院 山西太原 030006)  摘要:交易费用作为新制度经济学的中的一个重要概念,对新制度经济学的发展有重要意义,科斯提出交易费用的节约是选择何种经济组织方式的重要因素。但是交易费用真的毫无缺陷吗?在此想要提出并加以分析的问题是:交易成本理论是完善的吗?有哪些主要缺陷?将着重分析其四个主要缺陷或矛盾:“交易费用”作为理论体系的核心范畴存在的缺陷。  关键词:交易费用 外延 缺陷
期刊
(海军工程大学电气工程学院 湖北武汉 430033 )  摘要:随着信息化的不断发展,电磁设备被广泛应用在生活当中,与此同时,电磁兼容设备的安全性和可靠性也受到了很大挑战。为了更好地处理这一问题,需要依靠电磁兼容的原理、电磁兼容设备的接地类别、各种接地方式的恰当范围以及科学搭配接地方法,以此来实现电磁兼容设备的安全性和可靠性系数的最大化,进而顺应生态经济建设的要求。本文主要分析了电磁兼容中的接地技
期刊
(郑州大学机械工程学院 河南 郑州 450000)  摘要:伴随我国信息技术和制造业的快速发展,机械制造与自动化技术的发展也愈加完善和成熟。为了能够符合现代化制造业的发展需求,自动化技术需要不断完善和改进,积极引入更加具有信息化的相关技术,进而更好的服务我国机械制造业的未来发展。本文详细概述了自动化技术的自身特点和未来的发展趋势。  关键词:机械制造;自动化技术;特点;发展趋势  机械制造技术主要
期刊