jetty java 文件下载代码_Jetty + Servlet 实现文件下载

Jetty非常适合做嵌入式web开发,正如Jetty的口号"Don’t deploy your application in Jetty, deploy Jetty in your application!"。

这个简单的例子是使用Jetty提供文件下载:

首先pom.xml配置文件如下

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

4.0.0

com.luangeng

jettydownload

1.0-SNAPSHOT

jar

jettydownload

http://maven.apache.org

UTF-8

8.1.9.v20130131

org.eclipse.jetty.aggregate

jetty-webapp

${jetty.version}

org.eclipse.jetty

jetty-jsp

${jetty.version}

junit

junit

3.8.1

test

View Code

---

main方法启动Jetty:

package com.luangeng;

import org.eclipse.jetty.server.Connector;

import org.eclipse.jetty.server.Handler;

import org.eclipse.jetty.server.Server;

import org.eclipse.jetty.server.handler.DefaultHandler;

import org.eclipse.jetty.server.handler.HandlerCollection;

import org.eclipse.jetty.server.nio.SelectChannelConnector;

import org.eclipse.jetty.servlet.ServletContextHandler;

import org.eclipse.jetty.webapp.WebAppContext;

public class App

{

public static void main( String[] args ) throws Exception {

Server server = new Server();

server.setStopAtShutdown(true);

SelectChannelConnector connector = new SelectChannelConnector();

connector.setPort(8080);

connector.setReuseAddress(true);

server.setConnectors(new Connector[] { connector });

ServletContextHandler context = new ServletContextHandler();

context.setContextPath("/lg");

context.addServlet(DownLoadServlet.class, "/download");

context.addServlet(TestServlet.class, "/test/*");

HandlerCollection handlers = new HandlerCollection();

handlers.setHandlers(new Handler[] { context, new DefaultHandler() });

server.setHandler(handlers);

server.start();

server.join();

}

}

---

提供简单的测试 TestServlet.java

packagecom.luangeng;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;importjava.io.PrintWriter;/*** Created by LG.*/

public class TestServlet extendsHttpServlet {public voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

response.setContentType("text/html");

PrintWriter out=response.getWriter();out.println("");

out.println("

test");

out.println("

");out.println("GET method");

out.println("");

out.println("");

out.flush();

out.close();

}public voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

response.setContentType("text/html");

PrintWriter out=response.getWriter();out.println("");

out.println("

test");

out.println("

");out.println("POST method");

out.println("");

out.println("");

out.flush();

out.close();

}

}

---

完成下载功能的Servlet:

DownloadServlet.java

packagecom.luangeng;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;import java.io.*;importjava.net.URLEncoder;/*** Created by LG.*/

public class DownLoadServlet extendsHttpServlet {public voiddoGet(HttpServletRequest request, HttpServletResponse response) {//PrintWriter pw = null;

FileInputStream in = null;

OutputStream outs= null;//String path = request.getParameter("filepath");

String path = "/Users/LG/test.txt";//path = new String(fileName.getBytes("iso8859-1"),"UTF-8");

try{

File file= newFile(path);if(!file.exists())

{

response.setStatus(404);//pw.println("file not found!");//request.getRequestDispatcher("/err.jsp").forward(request, response);

return;

}

response.setContentType("text/html");

String realname= path.substring(path.indexOf("/")+1);

response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));

in= newFileInputStream(path);

outs=response.getOutputStream();byte buffer[] = new byte[1024];int len = 0;while ((len = in.read(buffer)) > 0) {

outs.write(buffer,0, len);

}

System.out.println(response.getStatus());

}catch(Exception e)

{//pw.println(e.getMessage());

response.setStatus(300);//log

}finally{

response.setStatus(200);try{if(outs != null) {

outs.flush();

outs.close();

}if(in != null) {

in.close();

}

}catch(IOException e) {

}//if(pw!=null) {//pw.flush();//pw.close();//}

}

}public voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

doGet(request, response);

}

}

---

end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值