يرسل المستخدم طلبًا إلى خادم الوكيل ، ويحصل خادم الوكيل على الملف من خادم الواجهة الخلفية ويعيده إلى المستخدم
web.xml:
<Srevlet> <vervlet-name> bigfile </servlet-name> <Servlet-class> cn.ac.dsp.servlet.bigfile </revlet-class> </servlet> <Sradlet Mapping> <Serlet-name> bigfile </servlet-name> <Url-pattern>.
سيرفليت:
حزمة cn.ac.dsp.servlet ؛ استيراد java.io.ioException ؛ استيراد java.io.inputstream ؛ استيراد java.io.printwriter ؛ استيراد java.io.stringWriter ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.servletOutputStream ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد org.apache.http.httpentity ؛ استيراد org.apache.http.httpresponse ؛ استيراد org.apache.http.client.clientprotocolexception ؛ استيراد org.apache.http.client.httpclient ؛ استيراد org.apache.http.client.methods.httpget ؛ استيراد org.apache.http.impl.client.defaulthttpclient ؛ استيراد org.apache.http.params.coreConnectionPnames ؛ استيراد org.apache.http.params.coreprotocolpnames ؛ استيراد org.apache.log4j.logger ؛ استيراد cn.ac.dsp.common.constant ؛ استيراد cn.ac.dsp.common.systemparameters ؛ / ** * servlet التي توفر الخدمات للملفات الكبيرة الثابتة */ فئة عامة bigfile يمتد httpservlet {private static final long serialversionuid = 1L ؛ Logger Final Static Private = logger.getLogger (bigfile.class) ؛ / ** * seee httpservlet#httpservlet () */ public bigfile () {super () ؛ // TODO AUDALED CONTRUCTOR CONTRUCTOR}/ ** * SEE httpservlet#doget (طلب httpservletrequest ، استجابة httpservletresponse) */ void void المحمية (httpletRequest request ، httpservletsponse response) throws servletexception ، ioexception {log.info "؛ وقت بدء طويل = system.nanotime () ؛ requesturl requesturl = request.getRequesturi () ؛ . httpclient httpclient = new defaulthttpclient () ؛ httpclient.getParams (). httpclient.getParams (). httpclient.getParams (). // سلسلة IP serverip = "192.168.101.190" ؛ // عنوان ملف خادم Backend StringBuilder Backurl = جديد StringBuilder () ؛ backurl.append ("http: //") ؛ backurl.append (serverip) ؛ backurl.append ("/lba/bigfile/") ؛ backurl.append (اسم الملف) ؛ httpget httpget = new httpget (backurl.toString ()) ؛ httpget.getparams (). log.info ("Distured BigFile to" + backurl.toString ()) ؛ httpresponse backresponse ؛ حاول {backresponse = httpclient.execute (httpget) ؛ // log.info (backresponse.getParams (). getParameter (coreprotocolpnames.http_content_charset)) ؛ httpentity httpentity = backresponse.getentity () ؛ inputStream في = httpentity.getContent () ؛ // BufferedReader BR = جديد BufferedReader (New InputStreamReader (httpentity.getContent () ، "UTF-8")) ؛ Byte [] buf = new byte [4096] ؛ int readlength ؛ استجابة. setcharacterencoding ("UTF-8") ؛ servleToutPutStream out = response.getOutputStream () ؛ بينما ((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 عند إعادة توجيه BigFile." + sw.toString ()) ؛ } catch (ioException e) {StringWriter SW = new StringWriter () ؛ E.PrintStackTrace (New PrintWriter (SW)) ؛ log.error ("ioException عند إعادة توجيه bigfile." + sw.toString ()) ؛ } long endtime = system.nanotime () ؛ System.out.println ("وقت الاستجابة:" + (EndTime-StartTime) + "NS") ؛ } / ** * see @see httpservlet#dopost (طلب httpservletrequest ، استجابة httpservletresponse) * / / void void dopost (طلب httpservletrequest ، استجابة httpservletresponse) servletexception ، ioexceptionالمرجع: servlet تنزيل ملف
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.