使用Struts+ognl进行文件下载

作者: Andy_1777 | 来源:发表于2017-03-24 14:52 被阅读0次

    Struts2框架不仅提供了一系列的拦截器帮我们完成验证,参数注入的任务,还可以使用不同的type 完成不同的功能,接下来解析一下使用配置文件Action中结果类型为stream时完成文件下载的功能。

    需要理解的是,Action在值栈中,而ognl的根就是值栈。这就是为什么在配置文件中可以使用ognl表达式来获取Action的属性(Action中要实现对应属性的get方法)。

    步骤一:配置struts.xml配置文件

    配置结果类型为stream

    步骤二:配置参数

         1)配置ContentType:配置需要下载文件的web类型,在web.xml中寻找zip对应的mine-type

         2)配置inputName:配置流的名称,需要在Action提供对应的Set(),Get()方法。这个流就是给浏览器用户下载的流。

        在Action中完成相关代码:

    (注意需要使用ServletContext来获得流)

         3)配置contentDisposition:

         该内容需要放在响应头中,而响应头只能使用拉丁码表,因此,如果我们的文件名称为中文,则需要使用URLEncoder编码对中文进行编码才能发送。

    在此,我们是用ognl表达式来完成这一需求。

    <param name="contentDisposition">

         attachment;filename="${filename}" 

    </param>

         注意:a.此处不是EL表达式,EL表达式只在jsp页面出现,不在配置文件中出现。

                     b.ognl表达式中根是值栈,值栈中放的是Action

                     c.配置文件中使用ognl表达式的格式是${},在括号中填写ognl。由于没有加#,所以是从根,即Action中取值

                     d.在Action中添加filename属性,并对其完成转码。

         4)配置bufferSize:设定缓冲区大小

    到此已经完成了所有工作,运行后的结果为:

    相关文章

      网友评论

        本文标题:使用Struts+ognl进行文件下载

        本文链接:https://www.haomeiwen.com/subject/xbcfottx.html