有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Struts2一次下载一个java

我有一个Struts2操作,它使用StreamResult来流式传输文件。该文件是一个可能非常大的报告。我想设置一个标志,限制用户一次只能下载一次。在我的操作中,我可以设置标志,但是当流结束时,我没有地方取消设置它

在Struts之前,我会设置标志,写入Servlet的OutputStream,然后取消设置标志。但是对于Struts,操作只是将流设置为一个变量,然后操作就完成了。Struts(在Struts.xml中设置)然后在我无法控制的地方进行发送


共 (2) 个答案

  1. # 2 楼答案

    尝试在类FileInputStream中重写close函数,这是FileInputStream API的文档,如果您使用的是另一种“inputstream”,您只需扩展它并重写close方法

    请尝试以下代码:

    public class YourInputStream extends FileInputStream {
        @Override
        public void close() throws IOException{
            super.close();
            // here unset your flag
        }
    }
    

    在你的动作课上:

    inputStream = new YourInputStream(new File(path));