使用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