一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Servlet實現(xiàn)代理文件下載功能

Servlet實現(xiàn)代理文件下載功能

2021-03-06 13:38blue_jjw Java教程

這篇文章主要為大家詳細(xì)介紹了Servlet實現(xiàn)代理文件下載功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

用戶向代理服務(wù)器發(fā)送請求,代理服務(wù)器從后端服務(wù)器上獲取文件,并返回給用戶
web.xml:

?
1
2
3
4
5
6
7
8
<servlet>
 <servlet-name>BigFile</servlet-name>
 <servlet-class>cn.ac.dsp.servlet.BigFile</servlet-class>
</servlet>
 <servlet-mapping>
 <servlet-name>BigFile</servlet-name>
 <url-pattern>*.ts</url-pattern>
</servlet-mapping>

servlet:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package cn.ac.dsp.servlet;
 
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
 
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.params.CoreProtocolPNames;
import org.apache.log4j.Logger;
 
import cn.ac.dsp.common.Constant;
import cn.ac.dsp.common.SystemParameters;
 
/**
 * 給靜態(tài)大文件提供服務(wù)的servlet
 */
public class BigFile extends HttpServlet {
 private static final long serialVersionUID = 1L;
 private static final Logger log = Logger.getLogger(BigFile.class);
  
 /**
  * @see HttpServlet#HttpServlet()
  */
 public BigFile() {
  super();
  // TODO Auto-generated constructor stub
 }
 
 /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  log.info("request for bigfile");
  long startTime = System.nanoTime();
  String requestUrl = request.getRequestURI();
  //請求的文件名
  String filename = requestUrl.substring(requestUrl.lastIndexOf("/"));
  HttpClient httpClient = new DefaultHttpClient();
  httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, Constant.HttpConnTimeOut);
  httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, Constant.SoConnTimeOut);
  httpClient.getParams().setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8");
  //后端服務(wù)器的IP
  String serverIP = "192.168.101.190";
  //后端服務(wù)器的文件地址
  StringBuilder backUrl = new StringBuilder();
  backUrl.append("http://");
  backUrl.append(serverIP);
  backUrl.append("/LBA/bigfile/");
  backUrl.append(filename);
  HttpGet httpGet = new HttpGet(backUrl.toString());
  httpGet.getParams().setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, "UTF-8");
  log.info("distribute bigfile to " + backUrl.toString());
  HttpResponse backResponse;
  try {
   backResponse = httpClient.execute(httpGet);
//   log.info(backResponse.getParams().getParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET));
   HttpEntity httpEntity = backResponse.getEntity();
   InputStream in = httpEntity.getContent();
//   BufferedReader br = new BufferedReader(new InputStreamReader(httpEntity.getContent(), "UTF-8"));
   byte[] buf = new byte[4096];
   int readLength;
   response.setCharacterEncoding("UTF-8");
   ServletOutputStream out = response.getOutputStream();
   while((readLength = in.read(buf)) != -1){
    out.write(buf, 0, readLength);
   
   in.close();
   out.flush();
   out.close();
  } catch (ClientProtocolException e) {
   StringWriter sw = new StringWriter();
   e.printStackTrace(new PrintWriter(sw));
   log.error("ClientProtocolException when redirect bigfile. " + sw.toString()); 
  } catch (IOException e) {
   StringWriter sw = new StringWriter();
   e.printStackTrace(new PrintWriter(sw));
   log.error("IOException when redirect bigfile. " + sw.toString()); 
  }
  long endTime = System.nanoTime();
  System.out.println("Response time: " + (endTime-startTime) + " ns");
 }
 
 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
 }
 
}

參考:一個文件下載的Servlet

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.csdn.net/blue_jjw/article/details/8774150

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产美女亚洲精品久久久综合91 | 美女福利视频午夜在线 | 青草视频在线观看免费视频 | 日日摸夜夜爽色婷婷91 | 婷婷色在线播放 | 久久精品国产免费播高清无卡 | 日韩精品成人在线 | 国产成人综合亚洲亚洲欧美 | 女人张开腿让男人桶视频免费大全 | 国产成人综合精品一区 | 午夜A级理论片左线播放 | xxxx泡妞中国 | videodesexo中国妞| 色综合天天网 | 车上小婕子系列辣文小说 | 久久精品午夜一区二区福利 | 性绞姿始动作动态图 | 亚洲男人的天堂网 | 国产91影院 | 精品国产乱码久久久久久人妻 | 1024免费福利永久观看网站 | 精品久久成人免费第三区 | 成人在线免费观看 | 全是女性放屁角色的手游 | 小辣椒精品福利视频导航 | 精品国产欧美一区二区五十路 | 日本h乱淫动漫在线观看 | 99精品网站 | 爱情岛论坛亚洲一号路线 | 亚洲精品午夜视频 | 国产免费成人在线视频 | 日韩日日操 | 亚洲日韩欧美一区二区在线 | 法国女佣系列在线播放 | 国产香蕉97碰碰久久人人 | 日本九九视频 | 免费一级欧美片片线观看 | 亚洲va欧美va天堂v国产综合 | 国产亚洲99影院 | 亚洲精品老司机福利在线播放 | 男人午夜免费视频 |