亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Servlet 容器的工作原理 ( 二 )

2019-11-18 12:32:25
字體:
來源:轉載
供稿:網友

  HttpServer1 類
  此應用程序內的 HttpServer1類 與前文簡單的 WEB 服務器應用程序中的HttpServer 十分相似。但是,此應用程序內的 HttpServer1 能服務靜態資源和 servlet。假如要請求一個靜態資源,請輸入以下 URL:http://machineName:port/staticResource
  它就是前文中提到的怎樣在 WEB 服務器應用程序里請求靜態資源。假如要請求一個 servlet,請輸入以下 URL:http://machineName:port/servlet/servletClass
  假如您想在本地瀏覽器請求一個 PRimitiveServle servlet ,請輸入以下 URL:http://localhost:8080/servlet/PrimitiveServlet
  下面 Listing 2.2 類的 await 方法,是等待一個 HTTP 請求,直到一個發布 shutdown 命令。與前文的 await 方法相似。
  
  Listing 2.2. HttpServer1 類的 await 方法
  public void await() {
  ServerSocket serverSocket = null;
  int    port = 8080;
  
  try {
  serverSocket = new ServerSocket(port, 1,
  InetAddress.getByName("127.0.0.1"));
    }
  catch (IOException e) {
  e.printStackTrace();
  System.exit(1);
    }
  
  // 循環,等待一個請求
  while (!shutdown) {
  Socket socket    = null;
  InputStream input  = null;
  OutputStream output = null;
  
  try {
  socket = serverSocket.accept();
  input = socket.getInputStream();
  output = socket.getOutputStream();
  
  // 創建請求對象并解析
  Request request = new Request(input);
  request.parse();
  
  // 創建回應對象
  Response response = new Response(output);
  response.setRequest(request);
  
  //檢測是否是 servlet 或靜態資源的請求
  //servlet 請求以 "/servlet/" 開始
  if (request.getUri().startsWith("/servlet/")) {
  ServletProcessor1 processor = new ServletProcessor1();
  processor.process(request, response);
        }
  else {
  StaticResourceProcessor processor =
  new StaticResourceProcessor();
  processor.process(request, response);
        }
  // 關閉socket
  socket.close();
  
  //檢測是否前面的 URI 是一個 shutdown 命令
  shutdown = request.getUri().equals(SHUTDOWN_COMMAND);
      }
  catch (Exception e) {
  e.printStackTrace();
  System.exit(1);
      }
    }
  }
  
  此文 await 方法和前文的不同點就是,此文的 await 方法中的請求調度到StaticResourceProcessor 或 ervletProcessor 。
  假如 URI中包含 "/servlet/.",請求推進到后面,否則,請求傳遞到 StaticResourceProcessor 實例。
  
  Request 類
  Servlet service 方法接受 servlet 容器的 javax.servlet.ServletRequest 和javax.servlet.ServletResponse 實例。因此,容器必須構建 ServletRequest和ServletResponse對象,然后將其傳遞到正在被服務的service 方法。
  ex02.pyrmont.Request 類代表一個請求對象傳遞到 service 方法。同樣地,它必須實現 javax.servlet.ServletRequest 接口。這個類必須提供接口內所有方法的實現。這里盡量簡化它并只實現幾個方法。要編譯 Request 類的話,必須提供這些方法的空實現。再來看看 request 類,內部所有需要返回一個對象實例都返回null,如下:
  
  public Object getAttribute(String attribute) {
  return null;
   }
  
  public Enumeration getAttributeNames() {
  return null;
   }
  
  public String getRealPath(String path) {
  return null;
   }
  
  另外,request 類仍需有前文有介紹的 parse 和getUri 方法。
  
  Response 類
  response 類實現 javax.servlet.ServletResponse,同樣,該類也必須提供接口內所有方法的實現。類似于 Request 類,除 getWriter 方法外,其他方法的實現都為空。
  
  public PrintWriter getWriter() {
  // autoflush is true, println() will flush,
  // but print() will not.
  writer = new PrintWriter(output, true);
  return writer;
  
  }
  
  PrintWriter 類構建器的第二個參數是一個代表是否啟用 autoflush 布爾值 ,假如為真,所有調用println 方法都 flush 輸出。而 print 調用則不 flush 輸出。因此,假如在servelt 的service 方法的最后一行調用 print方法,則從瀏覽器上看不到此輸出 。這個不完整性在后面的應用程序內會有調整。
  response 類也包含有前文中介紹的 sendStaticResource方法。
  
  StaticResourceProcessor 類
  StaticResourceProcessor 類用于服務靜態資源的請求。它唯一的方法是 process。
  
  Listing 2.3.StaticResourceProcessor 類的 process方法。
  public void process(Request request, Response response) {
  try {
  response.sendStaticResource();
    }
  catch (IOException e) {
  e.printStackTrace();
    }
  }
  
  process 方法接受兩個參數:Request 和 Response 實例。它僅僅是調用 response 類的 sendStaticResource 方法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美www在线| 美女福利精品视频| 孩xxxx性bbbb欧美| 日韩精品免费综合视频在线播放| 久久成人精品一区二区三区| 性日韩欧美在线视频| 国产91ⅴ在线精品免费观看| 欧美另类xxx| 精品五月天久久| 欧美性高跟鞋xxxxhd| 亚洲国产欧美精品| 日韩一区二区欧美| 亚洲香蕉伊综合在人在线视看| 日本中文字幕久久看| 亚洲欧美日韩精品| 成人欧美一区二区三区黑人孕妇| 欧美激情亚洲激情| 欧美在线观看网址综合| www.xxxx精品| 久久99亚洲精品| 91福利视频网| 庆余年2免费日韩剧观看大牛| 亚洲精品久久久一区二区三区| 夜夜嗨av色综合久久久综合网| 国产精品久久久久久中文字| 欧美美女操人视频| 91tv亚洲精品香蕉国产一区7ujn| 午夜精品一区二区三区在线视频| 国产精品video| 国产美女直播视频一区| 伊人久久男人天堂| 国产精品色视频| 久久久久久久久久久久av| 亚洲精品97久久| 秋霞av国产精品一区| 久久综合亚洲社区| 亚洲变态欧美另类捆绑| 成人国产在线激情| 久久精品免费电影| 97人人模人人爽人人喊中文字| 亚洲一区二区福利| 中文字幕日韩欧美在线| 中文字幕在线观看亚洲| 精品偷拍各种wc美女嘘嘘| 91久久国产精品| 久久中文字幕在线| 日韩美女av在线免费观看| 亚洲三级 欧美三级| 国产精品一久久香蕉国产线看观看| 成人性生交大片免费看小说| 国产精品91免费在线| 亚洲精品国产精品自产a区红杏吧| 欧美精品videosex性欧美| 一本色道久久综合狠狠躁篇的优点| 中日韩美女免费视频网站在线观看| 国产一区二区欧美日韩| 欧美怡红院视频一区二区三区| 久久精品99无色码中文字幕| 国产美女高潮久久白浆| 欧美富婆性猛交| 欧美激情一区二区三区久久久| 国产剧情久久久久久| 6080yy精品一区二区三区| 91精品免费视频| 欧美华人在线视频| 欧美精品亚州精品| 日韩在线观看网站| 欧美福利视频网站| 日韩电影网在线| 久久久国产精彩视频美女艺术照福利| 色妞色视频一区二区三区四区| 久久精品国产2020观看福利| 91在线色戒在线| 亚洲无线码在线一区观看| 国产精品aaaa| 欧美肥婆姓交大片| 国产区精品视频| 日韩精品视频免费在线观看| 久久久噜噜噜久噜久久| 久久精品成人欧美大片| 亚洲a成v人在线观看| 欧美日韩中文字幕在线视频| 欧美裸体xxxxx| 美女啪啪无遮挡免费久久网站| 久久国产精品免费视频| 日韩免费电影在线观看| 亚洲一区二区在线| 亚洲风情亚aⅴ在线发布| 亚洲日韩第一页| 久久久久久久久久亚洲| 亚洲色图15p| 欧美高清视频在线播放| 欧美精品制服第一页| 神马久久久久久| 亚洲男人天堂手机在线| 国产精品网站大全| 在线日韩精品视频| 亚洲精品乱码久久久久久按摩观| 美女国内精品自产拍在线播放| 亚洲欧美在线一区二区| 日韩视频在线一区| 亚洲欧美在线磁力| 欧美成人国产va精品日本一级| 日韩精品www| 国产亚洲美女精品久久久| 国产99久久久欧美黑人| 久久精品国产精品亚洲| 日韩一区二区福利| 亚洲女人被黑人巨大进入al| 欧美激情乱人伦一区| 国产精品偷伦视频免费观看国产| 91av在线国产| 久久久视频在线| 久久国产视频网站| 2019中文在线观看| 日韩欧美国产视频| 欧美大片第1页| 亚洲黄色在线看| 欧美成人全部免费| 亲爱的老师9免费观看全集电视剧| 日韩激情视频在线| 91精品国产自产91精品| 国产精品三级美女白浆呻吟| 亚洲欧美日韩久久久久久| 欧洲精品久久久| 久久久www成人免费精品张筱雨| 91在线精品播放| 日本三级韩国三级久久| 日韩欧美精品在线观看| 精品无人区太爽高潮在线播放| 欧美亚洲另类视频| 欧美在线观看网址综合| 国产亚洲综合久久| 亚洲石原莉奈一区二区在线观看| 国产精品久久久91| 日韩欧美精品在线观看| 成人免费网站在线| 日韩大片免费观看视频播放| 精品久久久久久亚洲精品| 91系列在线观看| 亚洲第一视频网| 久久久久久免费精品| 91久久国产精品91久久性色| 国产精品高清免费在线观看| 亚洲a级在线播放观看| 国产精品一区二区久久久久| 欧美激情手机在线视频| 国内精品400部情侣激情| 日韩av影视在线| 精品视频在线播放| 精品国模在线视频| 亚洲电影免费观看| 国产精品主播视频| 亚洲电影免费观看高清完整版在线观看| 国产精品欧美风情| 日韩免费视频在线观看| 久久成人国产精品| 欧美成人久久久| 欧美人与性动交| 国产精品丝袜一区二区三区| 国产精品久久久久久久久| 国产成人精品视频| 亚洲精品国产精品国自产在线| 国产一区二区欧美日韩|