使用struts2实现文件下载
的有关信息介绍如下:struts是一个轻量级的MVC框架,这里介绍使用Struts完成文件的下载功能。Struts提供了stream结果类型,该结果类型就是专门用于支持文件下载功能的。指定stream结果类型时,需要指定一个inputName参数,该参数指定一个输入流,这个输入流是被下载文件的入口。通过Struts2的文件下载支持,允许系统控制浏览者下载文件的权限,包括实现文件名为非西欧字符的文件下载
开发前准备,下载使用struts所需要的jar包,可百度搜索“struts官网”。如图所示,根据提示进行下载即可。
打开eclipse,新建一个web项目,并导入使用struts所必须的jar包。在eclipse开发环境中把jar包复制到WEB-INF/lib下,会自动添加到类加载路径中。或者手动添加,如图2所示
实际上用一个超链接就可以下载对应资源,但是当资源名字为中文时,这种方法则行不通。如下图所示的小例子,在jsp页面中建立两个超链接,一个资源名字英文,一个中文。当点击英文资源时可以正常下载,当点击中文资源时报错。另外这种方法也无法实现下载权限控制,下面介绍使用Struts下载,来解决这两个问题。
首先在web.xml中配置struts的核心过滤器。如图所示
编写下载页面struts2Down.jsp和登录页面login.jsp当校验用户没有登录时跳转到该登录页面。代码示例,如图所示。
编写对应的action,这里为了示意权限校验,LoginAction中直接返回SUCCESS,并把username放入session域中,下载前判断session域中是否有用户,有则可以下载否则进入登录页面。FileDownloadAction是不要验证权限直接下载;AuthorityDownAction是需要验证权限实现下载。
编写struts的配置文件,把页面和action关联起来。
运行测试效果,如图所示。