El usuario envía una solicitud al servidor proxy, y el servidor proxy obtiene el archivo del servidor de backend y lo devuelve al usuario
web.xml:
<Servlet> <Servlet-name> bigfile </servlet-name> <ervlet-class> cn.ac.dsp.servlet.bigfile </servlet-class> </servlet> <ervlet-mapping> <ervlet-name> bigfile </ servlet-name> <url-pattern>*. Ts </ url-pattern> </servlet mapping>
Servlet:
paquete 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; 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; import cn.ac.dsp.common.constant; import cn.ac.dsp.common.systemparameters; / ** * Servlet que proporciona servicios a archivos grandes estáticos */ clase pública BigFile extiende httpservlet {private static final long serialversionUid = 1l; Private static final Logger log = logger.getLogger (bigFile.class); / ** * @see httpservlet#httpservlet () */ public bigFile () {super (); // TODO STUB AUTO GENERADO DE CONSTRUCTOR}/ ** * @see httpservlet#doget (httpservletRequest solicitud, httpServletResponse Response) */ Protected void doget (httpservletRequest solicitud, httpServletResponse Response) ServletException, iOexception {log.info (loger ("". "Solicitud"; ""; ""; ""); ""; ""; ""; ""; ""; ""); Long Starttime = System.nanotime (); Cadena requestUrl = request.getRequesturi (); // Solicitud de nombre de archivo solicitada 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"); // el IP String ServerIP = "192.168.101.190"; // La dirección de archivo del servidor de backend StringBuilder BackURL = new StringBuilder (); backUrl.append ("http: //"); BackUrl.append (ServerIP); backurl.append ("/lba/bigfile/"); backurl.append (nombre de archivo); Httpget httpget = new httpget (backUrl.ToString ()); httpget.getParams (). setParameter (coreProTocolpNames.http_content_charset, "UTF-8"); log.info ("distribuir BigFile a" + BackUrl.ToString ()); Httpresponse back -Response; intente {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 = nuevo byte [4096]; int readLength; respuesta.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 (nuevo PrintWriter (SW)); log.error ("ClientProtocolexception cuando redirige BigFile." + SW.ToString ()); } catch (ioException e) {StringWriter SW = new StringWriter (); E.PrintStackTrace (nuevo PrintWriter (SW)); log.error ("ioException cuando redirige BigFile". + SW.ToString ()); } largo endtime = system.nanotime (); System.out.println ("Tiempo de respuesta:" + (Endtime-starttime) + "ns"); } / ** * @see httpservlet#dopost (httpservletRequest solicitud, respuesta httpServletResponse) * / proteged void dopost (httpservletRequest solicitud, respuesta httpServletResponse) tira ServletException, ioexception {// TODO Auto-Generado Método}}}}}}}}}}}}}}}}}}}}}}}}}Referencia: una descarga de archivo servlet
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.