ผู้ใช้ส่งคำขอไปยังพร็อกซีเซิร์ฟเวอร์และพร็อกซีเซิร์ฟเวอร์ได้รับไฟล์จากเซิร์ฟเวอร์แบ็กเอนด์และส่งคืนไปยังผู้ใช้
web.xml:
<servlet> <servlet-name> bigfile </servlet-name> <servlet-lass> cn.ac.dsp.servlet.bigfile </servlet-class> </servlet> <servlet-mapping> <servlet-name> bigfile </servlet-name>
servlet:
แพ็คเกจ 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.htttentity; นำเข้า 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 {ส่วนตัวคงที่สุดท้าย Long SerialVersionUID = 1L; logger สุดท้ายคงที่ logger log = logger.getLogger (bigfile.class); / ** * @See httpservlet#httpservlet () */ สาธารณะ bigfile () {super (); // toDo toDo ที่สร้างขึ้นอัตโนมัติ stub}/ ** * @see httpservlet#doget (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) */ void doget ที่ได้รับการป้องกัน Long StartTime = System.nanotime (); string requestUrl = request.getRequesturi (); // ที่ร้องขอชื่อไฟล์สตริงชื่อ filename = requestUrl.substring (requestUrl.lastIndexof ("/")); httpClient httpClient = ใหม่ 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"); // IP String Serverip = "192.168.101.190"; // ที่อยู่ไฟล์ของ Backend Server StringBuilder BackURL = ใหม่ StringBuilder (); backurl.append ("http: //"); Backurl.Append (ServerIP); backurl.Append ("/lba/bigfile/"); backurl.append (ชื่อไฟล์); httpget httpget = ใหม่ httpget (backurl.toString ()); httpget.getParams (). setParameter (coreProtocolpNames.http_content_charset, "UTF-8"); log.info ("แจกจ่าย bigfile ไปที่" + 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 ใหม่ (ใหม่ inputStreamReader (httpentity.getContent (), "UTF-8")); ไบต์ [] buf = ไบต์ใหม่ [4096]; int readLength; Response.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 (PrintWriter ใหม่ (SW)); log.error ("clientprotocolexception เมื่อเปลี่ยนเส้นทาง bigfile" + sw.toString ()); } catch (iOexception e) {StringWriter sw = new StringWriter (); E.PrintStackTrace (PrintWriter ใหม่ (SW)); log.error ("ioexception เมื่อเปลี่ยนเส้นทาง bigfile" + sw.toString ()); } endtime long = system.nanotime (); System.out.println ("เวลาตอบสนอง:" + (endtime-starttime) + "ns"); } / ** * @SEE httpservlet#dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) * / การป้องกันโมฆะ dopost (httpservletrequest คำขอ, httpservletresponse การตอบสนอง) โยน servletexception, ioexceptionการอ้างอิง: ไฟล์ดาวน์โหลด servlet
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น