用java写一个servlet,可以将放在tomcat项目根目录下的文件进行下载,将一个完整的项目进行展示,主要有以下几个部分:
1、servlet部分 Export
2、工具类:TxtFileUtil
3、web.xml
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 class Export extends HttpServlet
{
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 class TxtFileUtil
{
/**
* 获取路径
*
* @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>
用java写一个servlet,可以将放在tomcat项目根目录下的文件进行下载的更多相关文章
-
java 写一个";HelloJavaWorld你好世界";输出到操作系统文件Hello.txt文件中
package com.beiwo.homework; import java.io.File; import java.io.FileOutputStream; import java.io.IOE ...
-
用JAVA写一个函数,功能例如以下: 随意给定一组数, 找出随意数相加之后的结果为35(随意设定)的情况
用JAVA写一个函数.功能例如以下:随意给定一组数,比如{12,60,-8,99,15,35,17,18},找出随意数相加之后的结果为35(随意设定)的情况. 能够递归算法来解: package te ...
-
五:用JAVA写一个阿里云VPC Open API调用程序
用JAVA写一个阿里云VPC Open API调用程序 摘要:用JAVA拼出来Open API的URL 引言 VPC提供了丰富的API接口,让网络工程是可以通过API调用的方式管理网络资源.用程序和软 ...
-
用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
package com.ljn.base; /** * @author lijinnan * @date:2013-9-12 上午9:55:32 */ public class IncDecThrea ...
-
自定义报告,用Java写一个html文件
因为testng不满足我们的展示,所以我们会自己定义一个报告,实施步骤是,把静态页面做好后,放在Java项目中,其实和生成一个日志文件类似,只是该了后缀,Java中需要使用到PrintStream,案 ...
-
使用JAVA写一个简单的日历
JAVA写一个简单的日历import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateF ...
-
【转】忙里偷闲写的小例子---读取android根目录下的文件或文件夹
原文网址:http://www.cnblogs.com/wenjiang/p/3140055.html 最近几天真的是各种意义上的忙,忙着考试,还要忙着课程设计,手上又有外包的项目,另一边学校的项目还 ...
-
忙里偷闲写的小例子---读取android根目录下的文件或文件夹
最近几天真的是各种意义上的忙,忙着考试,还要忙着课程设计,手上又有外包的项目,另一边学校的项目还要搞,自己的东西还在文档阶段,真的是让人想死啊!! 近半个月来,C#这方面的编码比较多,android和 ...
-
Java写一个简单学生管理系统
其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来 ...
随机推荐
-
webpack 教程 那些事儿06-gulp+webpack多页
本篇主要讲述用gulp+webpack构建多页应用 折腾到现在,项目还必须要进行,.vue文件必须要加载,也就是webpack必须引入.时间不多了,抛弃上个方案之后,只能牺牲热加载性能,用gulp+w ...
-
FM/PCM与FM/PPM的区别
FM/PCM的优点: 1 高可靠性和高抗干扰性.大家知道,一般PPM遥控设备都要求在操作时先开发射机后开接收机,先关接收机后关发射机.其原因是在没有发射信号时,接受机会因自身内部的噪音或外界的 ...
-
mysql 插入语句
mysql 插入语句 什么时候用单引号,什么时候不用? 1.先创建一个表 create table user(username varchar(255),age int,marry boolean,b ...
-
yum 安装 kvm
KVM是什么? for Kernel-based Virtual Machine 安装环境Centos 6.5 mini x64 禁用selinux, 禁用防火墙 安装过程: 1. 查看我们的电脑是 ...
-
Activiti工作流学习-----基于5.19.0版本(5)
五.与Spring集成 实际项目中一般都有Spring的身影,与Spring集成使得Activiti的实用性得到提高.activiti和Spring整合需要activiti-spring的jar在类路 ...
-
Poem: Reserverd Words
Let this long package float, Goto private class if short. While protected with debugger case, Contin ...
-
兼容现有jQuery API的轻量级JavaScript库:Zepo
Zepo是一个JavaScript框架,其特点是兼容现有jQuery API的同时,自身体积十分小:它与jQuery有着类似的API.如果你会jQuery,那么也就会使用Zepto了. $('div' ...
-
百度ueditor富文本编辑器的使用
百度ueditor富文本编辑器的使用 //以下为我在官网下载的ueditor v1.3.5 php版的大楷配置步骤第一步: //配置文件的引入应该比功能文件先引入,最后设置语言类型.即:editor. ...
-
linux shell通配符及if语句判断
$# 是传给脚本的参数个数 $0 是脚本本身的名字$1 是传递给该shell脚本的第一个参数$2 是传递给该shell脚本的第二个参数$@ 是传给脚本的所有参数的列表$* 是以一个单字符串显示所有向脚 ...
-
React-简书视频学习总结
react的基础语法 redux这个数据层框架 react-redux如何方便我们在react中使用redux react-router 4.0 这样的非常实用的相关的第三方模块儿 immutable ...