使用Struts2一次下载一个java
我有一个Struts2操作,它使用StreamResult来流式传输文件。该文件是一个可能非常大的报告。我想设置一个标志,限制用户一次只能下载一次。在我的操作中,我可以设置标志,但是当流结束时,我没有地方取消设置它
在Struts之前,我会设置标志,写入Servlet的OutputStream,然后取消设置标志。但是对于Struts,操作只是将流设置为一个变量,然后操作就完成了。Struts(在Struts.xml中设置)然后在我无法控制的地方进行发送
# 1 楼答案
我认为你应该创建一个拦截器来包装这个下载操作,它可以锁定/解锁当前用户的访问。有关更多信息,请参见http://struts.apache.org/2.x/docs/interceptors.html
# 2 楼答案
尝试在类
FileInputStream
中重写close
函数,这是FileInputStream API的文档,如果您使用的是另一种“inputstream”,您只需扩展它并重写close
方法请尝试以下代码:
在你的动作课上: