因项目需查询数据量比较大(须要查询Hbase等nosql数据库),采用用户点击查询后,后台查询并生成查询文件;而后消息通知用户后,用户点击下载的方式来知足用户需求。html
Web容器用的Tomcat,拟采用tomcat提供文件下载功能。前端
需修改tomcat下的web.xm和server.xml文件web
修改web.xmlsql
<init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> -------------------修改成:----------- <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param>
修改server.xml数据库
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="true"> <Context path="" docBase="laowang" debug="0" reloadable="true"/> </Host> ------------新加一个<Context>---------------- <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="true"> <Context path="" docBase="laowang" debug="0" reloadable="true"/> <Context path="/test" docBase="/home/laowang/test" debug="0" privileged="true"></Context> </Host>
其中:path中的 "/test"为请求访问路径;/home/laowang/test为文件存在服务器的实际路径。apache
2.1.3 效果tomcat
web中listings的 含义是Directory Listing(虚拟目录),默认false实际上是处于安全考虑的,修改成true实际上是不安全的,不建议的。安全
直接将文件放置到目录:apache-tomcat-8.0.53/webapps/ROOT,由于tomcat自己提供的就是web服务,能够直接访问,不用修改任何东西。服务器
ROOT目录,从新打包的时候,文件会丢失的,只能用于临时文件还能够,与项目需求不符合。app
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="true"> <Context path="" docBase="laowang" debug="0" reloadable="true"/> </Host> ------------新加一个<Context>---------------- <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="true"> <Context path="" docBase="laowang" debug="0" reloadable="true"/> <Context path="/test" docBase="/home/laowang/test" debug="0" privileged="true"></Context> </Host>
(1)因未开启虚拟路径服务,因此不能访问其余文件。
(2)只有文件名称彻底对的上,才能访问。
你们经过截图可能也发现了,文件是直接打开的,而并非下载到本地,项目需求是要下载到本地打开的。
有两个方式解决
(1)第一个是在打开的文件右键-》另存为就能够下载,可是这样太不不方便。
(2)结合前端html使用a标签,点击后直接下载。(推荐)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <a href="http://10.192.168.11:9108/test/test.txt" download="test.txt">download</a> </body> </html>
效果图,点击后就直接下载到默认目录了。