L'utilisateur envoie une demande au serveur proxy et le serveur proxy obtient le fichier du serveur backend et le renvoie à l'utilisateur
web.xml:
<Serplet> <Serplet-Name> BigFile </Servlet-Name> <Serplet-Class> CN.AC.DSP.Servlet.Bigfile </Servlet-Class> </Servlet> <Servlet-Mapping> <Servlet-Name> BigFile </vrlett-name> <url-Pattern> *.
Servlet:
Package CN.AC.DSP.Servlet; Importer java.io.ioException; import java.io.inputStream; import java.io.printwriter; import java.io.stringwriter; Importer javax.servlet.servletException; Importer javax.servlet.servletOutStream; import javax.servlet.http.httpservlet; Importer 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; Importer cn.ac.dsp.common.constant; Importer CN.AC.DSP.COMMON.SystemParameters; / ** * Servlet qui fournit des services aux fichiers volumineux statiques * / classe publique Bigfile étend httpServlet {private static final long SerialVersionUID = 1l; Logger final statique privé Logger = logger.getLogger (bigfile.class); / ** * @see httpservlet # httpservlet () * / public bigfile () {super (); // Todal de constructeur généré automatiquement} / ** * @see httpservlet # doget (requête httpservletRequest, httpservletResponse réponse) * / Protected void doget (httpservletRequest request, httpservletResponse réponse) lance pour serviraxception, ioexectation {log.info ("demande pour BigFile"); long startTime = System.NanoTime (); String requestUrl = request.getRequeSturi (); // fileName String filename nom de fichier = 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"); // la chaîne IP ServerIp = "192.168.101.190"; // L'adresse de fichier du serveur backend stringBuilder backUrl = new StringBuilder (); backurl.append ("http: //"); backurl.append (serverIp); backurl.append ("/ lba / bigfile /"); backurl.append (nom de fichier); Httpget httpget = new httpget (backurl.toString ()); httpget.getParams (). SetParameter (CoreProtoColPNames.http_content_charset, "utf-8"); log.info ("Distribuez bigfile à" + backurl.toString ()); HttpResponse BackResponse; try {backResponse = httpclient.execute (httpget); // log.info (backResponse.getParams (). getParameter (CoreProtoColPNames.http_content_charset)); Httpentity httpentity = backResponse.getEntity (); InputStream dans = httpentity.getContent (); // BufferedReader br = new BufferedReader (new inputStreamReader (httpentity.getContent (), "utf-8")); octet [] buf = nouveau octet [4096]; int readLength; Response.SetcharAtterencoding ("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 en cas de redirection Bigfile." + Sw.ToString ()); } catch (ioException e) {stringWriter sw = new StringWriter (); E.PrintStackTrace (New PrintWriter (SW)); Log.Error ("ioException lors de la redirection Bigfile." + Sw.ToString ()); } Long EndTime = System.NanoTime (); System.out.println ("Temps de réponse:" + (Starte-Starttime) + "NS"); } / ** * @SeE HttpServlet # doPost (HttpServLetRequest Request, HttpServletResponse Response) * / Protected void doPost (httpServLetRequest, httpservletResponse réponse) lance servletException, ioException {// too ateneated Method Stub}}}Référence: un servlet de téléchargement de fichiers
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.