O usuário envia uma solicitação para o servidor proxy e o servidor proxy obtém o arquivo do servidor de back -end e o retorna ao usuário
web.xml:
<Verlet> <Verlet-name> bigfile </servlet-name> <Servlet-class-class> cn.ac.dsp.servlet.bigfile </servlet-class-class> </servlet> <sirtlet-mapping> <sutlet-name> bigfile </servlet-name> <url-tattern>*.
servlet:
pacote cn.ac.dsp.servlet; importar java.io.ioException; importar java.io.inputStream; importar java.io.printwriter; importar java.io.stringwriter; importar javax.servlet.servletexception; importar javax.Servlet.ServletOutputStream; importar javax.servlet.http.httpServlet; importar javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; importar org.apache.http.httpentity; importar org.apache.http.httpResponse; importar org.apache.http.client.clientprotocolexception; importar org.apache.http.client.httpclient; importar org.apache.http.client.methods.httpget; importar org.apache.http.impl.client.defaulthttpClient; importar org.apache.http.params.coreConnectionPNames; importar org.apache.http.params.coreprotocolpNames; importar org.apache.log4j.logger; importar cn.ac.dsp.common.constant; importar cn.ac.dsp.common.systemparameters; / ** * servlet que fornece serviços a arquivos grandes estáticos */ public classe bigfile estende HttpServlet {private estático final serialversionuid = 1L; LOGTER DE LOGGER DE ESTÁTICO PRIVADO = 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 (); // solicitou o nome do arquivo 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"); // O IP String Serverip = "192.168.101.190"; // o endereço do arquivo do servidor de backend stringbuilder backurl = new StringBuilder (); backurl.append ("http: //"); backurl.append (serverip); backurl.append ("/lba/bigfile/"); backurl.append (nome do arquivo); Httpget httpget = new httpget (backurl.toString ()); httpget.getparams (). setParameter (CoreProtocolpNames.http_content_charset, "utf-8"); log.info ("Distribua o bigfile para" + backurl.toString ()); BackResponse de HttpResponse; tente {backResponse = httpclient.execute (httpget); // log.info (backResponse.getparams (). getParameter (CoreProtocolpNames.http_content_charset)); Httpentity httpentity = backResponse.getEntity (); InputStream in = httpentity.getContent (); // bufferredreader BR = new BufferredReader (novo InputStreamReader (httpentity.getContent (), "UTF-8")); byte [] buf = novo byte [4096]; Int ReadLength; Response.Setcharacterencoding ("UTF-8"); ServletOutputStream Out = Response.getOutputStream (); while ((readLength = in.read (buf))! = -1) {out.write (buf, 0, comprimento de leitura); } in.close (); out.flush (); out.Close (); } catch (clientProtocolexception e) {stringWriter sw = new StringWriter (); E.PrintStackTrace (novo PrintWriter (SW)); Log.error ("ClientProtocolexception quando redirecionar BIGFILE." + SW.ToString ()); } catch (ioexception e) {stringwriter sw = new stringWriter (); E.PrintStackTrace (novo PrintWriter (SW)); log.error ("IoException quando redirecionar o bigfile". + sw.toString ()); } long endtime = System.nanotime (); System.out.println ("Tempo de resposta:" + (Endtime-starttime) + "ns"); } / ** * @see httpServlet#doPost (solicitação httpServLeTrequest, httpServletResponse resposta) * / voce protegido DoPost (httpServleTrequest Solicy, httpServletResponse Response) lança servicexception, ioxception)Referência: um servlet do download de um arquivo
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.