设为首页 收藏本站
查看: 1310|回复: 0

[经验分享] 用java写一个servlet,可以将放在tomcat项目根目录下的文件进行下载

[复制链接]

尚未签到

发表于 2017-12-27 09:15:10 | 显示全部楼层 |阅读模式
  用java写一个servlet,可以将放在tomcat项目根目录下的文件进行下载,将一个完整的项目进行展示,主要有以下几个部分:
  1、servlet部分   Export
  2、工具类:TxtFileUtil
  3、web.xml
DSC0000.png

  import java.io.File;
  import java.io.FileInputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.net.URLEncoder;
  import javax.servlet.ServletConfig;
  import javax.servlet.ServletException;
  import javax.servlet.ServletOutputStream;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import com.test.util.TxtFileUtil;
  /**
  * 导出文件
  * @author ouyangyu
  *  如何下载tomcat的项目工程下面的文件
  *下载地址:http://localhost:8080/ytxtest/ex.hts?filepath=ss.rar
  *http://localhost:8080/ytxtest/ex.hts?filepath=fj.docx
  */

  public>  {
  private static final long serialVersionUID = 342590465839109906L;
  private String contentType = "application/x-msdownload";
  private String enc = "utf-8";
  private String fileRoot = "";
  /**
  * 初使化方法
  */
  public void init(ServletConfig config) throws ServletException
  {
  String tempStr = config.getInitParameter("contentType");
  if (tempStr != null && !tempStr.equals(""))
  {
  contentType = tempStr;
  }
  tempStr = config.getInitParameter("enc");
  if (tempStr != null && !tempStr.equals(""))
  {
  enc = tempStr;
  }
  tempStr = config.getInitParameter("fileRoot");
  if (tempStr != null && !tempStr.equals(""))
  {
  fileRoot = tempStr;
  }
  }
  /**
  * doget请求
  */
  public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException
  {
  //realUrl =  /D:/ruanjian/tomcat/apache-tomcat-6.0.37/webapps/ytxtest/
  String realUrl =   new TxtFileUtil().getWebRoot();
  //String path = realUrl+"/";
  //path += StaticValue.FILE_UPLOAD_PATH;
  //filepath= ss.rar
  String filepath = request.getParameter("filepath");
  String fullFilePath = realUrl + filepath;
  //fullFilePath = /D:/ruanjian/tomcat/apache-tomcat-6.0.37/webapps/ytxtest/ss.rar
  //file = D:\ruanjian\tomcat\apache-tomcat-6.0.37\webapps\ytxtest\ss.rar
  File file = new File(fullFilePath);
  if (file.exists())
  {
  //filename = ss.rar
  String filename = URLEncoder.encode(file.getName(), enc);
  response.reset();
  response.setContentType(contentType);
  response.addHeader("Content-Disposition", "attachment; filename=\""
  + filename + "\"");
  //fileLength = 54325070
  int fileLength = (int) file.length();
  response.setContentLength(fileLength);
  if (fileLength != 0)
  {
  InputStream inStream = new FileInputStream(file);
  byte[] buf = new byte[4096];
  ServletOutputStream servletOS = response.getOutputStream();
  int readLength;
  while (((readLength = inStream.read(buf)) != -1))
  {
  servletOS.write(buf, 0, readLength);
  }
  inStream.close();
  servletOS.flush();
  servletOS.close();
  }
  }
  }
  /**
  * dopost请求
  */
  public void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException
  {
  doGet(request, response);
  }
  }
  /**
  * 读写文件的工具类
  *
  * @author Administrator
  */

  public>  {
  /**
  * 获取路径
  *
  * @return
  */
  public String getWebRoot()
  {
  String realUrl = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
  String newUrl = "";
  if(realUrl.contains("/WEB-INF/"))
  {
  newUrl = realUrl.substring(0, realUrl.lastIndexOf("WEB-INF/"));
  }
  realUrl = newUrl.replace("%20", " ");// 此路径不兼容jboss
  return realUrl;
  }
  }
  <?xml version="1.0" encoding="UTF-8"?>
  <web-app version="2.5"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
  <description>导出文件</description>
  <display-name>导出文件</display-name>
  <servlet-name>Export</servlet-name>
  <servlet-class>com.test.servlet.Export</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>Export</servlet-name>
  <url-pattern>/ex.hts</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  </web-app>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-428505-1-1.html 上篇帖子: tomcat配置https–采用JDK自带的keytool工具生成证书 下篇帖子: tomcat shutdown后,进程还存在linux系统中的解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表