Spring MVC中的文件下载

我们可以利用Spring MVC 框架来对文件进行上传和下载功能,使用Spring MVC 框架对文件进行上传和下载就变得更加简单和减少代码量,在上一篇中我们已经对文件进行了上传功能,现在就对上传成功的文件进行下载,跟文件上传一样,首先新建一个web项目并引用相应的jar包。如果想要这个项目启动起来我们必须要修改一下web.xml文件。如下图:我们需要在web.xml文件添加以下代码,下面的代码是我们SpringMvc.xml的相应配置,我们等下就要创建一个名为SpringMvc.xml的配置文件,因为在web容器中不可能只有一个配置文件,所以标签是让SpringMvc.xml跟随web容器第一个进行启动。标签是配置路径,这里用“/”表示这个路径可以匹配所有的请求,这种配置还能实现restful。其实还有一种配置就是使用“.do”还可以写成“.action”表示以.do结尾的或者以.action结尾的URL都由前端控制器DispatcherServlet来解析 ,其余的匹配不上的静态资源由web.xml下的defaultservlet处理。
Spring MVC中的文件下载

接下来就是SpringMvc.xml的相关配置,如下图:开启SpringMvc的相关注解。因为我们写的控制器类都放在web包下,所以使用扫描机制扫描web包及其子包下的所有控制器类。上传文件需要用到jsp页面,所以需要注册视图解析器,不然jsp页面显示不出来,对模型视图名称的解析,即在模型视图名称添加前后缀。因为这里配置了默认后缀“.jsp”,路径为“/WEB‐INF/jsp”,所以在跳转页面的时候只用写jsp的名字,不用带后缀。
Spring MVC中的文件下载

以上的配置跟文件上传的配置是一样的。jsp页面如下:from表单提交数据,它的请求路径是控制器路径+方法路径。我们相要对文件进行下载就先要上传文件,from标签是文件上传的代码,上传文件成功让其返回此文件的文件名filename,然后在a标签中拼接路径时把此文件名拼接上去。
Spring MVC中的文件下载

控制器方法如下:@Controller用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller对象。@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。@PathVariable绑定URL占位符到功能处理方法的参数上,主要实现RESTFULL风格的请求@PathVariable括号内的变量要跟jsp页面传递的变量名保持一致,不然接收不了相应的数据。下载文件的前提是要找到此文件上传成功后存放的目标目录下的路径,因为上传的文件都保存到E盘的IOTest目录下,所以此文件的路径为E:/IOTest/+filename。找到文件后就是以二进制流数据进行下载。然后通知浏览器以attachment方式进行下载,下载的文件名称为指定的名称。
Spring MVC中的文件下载

如下,文件上传成功后便可点击下载就会下载文件,下载完成后可在下载内容中看到我们刚刚下载的文件。
Spring MVC中的文件下载