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

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

Servlet 容器的工作原理 ( 四 )

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

  application 2
  第一個應用程序里存在一個值得注重的問題。 在ServletPRocessor1 類的 process 方法里,上溯 (upcast)ex02.pyrmont.Request 實例到 javax.servlet.ServletRequest,將其作為第一個參數傳遞給 servlet 的 service 方法。 另上溯(upcast) ex02.pyrmont.Response 實例到 javax.servlet.ServletResponse ,并將其作為第二個參數傳遞給 servlet 的 service 方法。
  
  try {
    servlet = (Servlet) myClass.newInstance();
    servlet.service((ServletRequest) request, (ServletResponse) response);
  }
  
  這樣會使安全性能大打折扣。 知道 servlet 容器工作原理的程序員可以將 ServletRequest 和 ServletResponse 實例向下轉型 (downcast) 到Request 和 Response ,并調用它們的 public 方法。 Request 實例能調用它的 parse 方法; Request 實例能調用它的 sendStaticResource 方法。
  
  可以將 parse 和 sendStaticResource 方法設為 private,因為在 ex02.pyrmont 里將會從其他類里調用它們。 然而,這兩個方法在 servlet 內應該是不可用的。 一個解決方法是:給 Request 和 Response 類一個默認的訪問修飾符,以致他們在 ex02.pyrmont 外不能被使用。 但還有一個更好的解決方法: 使用 facade 類。
  
  在第二個應用程序內,添加兩個 facade 類:RequestFacade 和 ResponseFacade。 RequestFacade 類實現 ServletRequest 接口,并通過傳遞 Request 實例來實例化, Request 實例將在 ServletRequest 對象的構建器里被引用 。 ServletRequest 對象本身是 private 類型的,不能在類之外訪問。 就構建 RequestFacade 對象,并將其傳遞給 service 方法,而不上溯 (upcast) Request 對象給 ServletRequest,并將其傳遞給 service 方法。 servlet 程序員仍然可以向下轉型 (downcast) ServletRequest 到 RequestFacade,但是,只要訪問 ServletRequest 接口的可用方法就可以了。 現在,parseUri 就安全了。
  Listing 2.5 顯示 RequestFacade 類部分代碼:
  Listing 2.5. RequestFacade 類
  package ex02.pyrmont;
  
  public class RequestFacade implements ServletRequest {
    private ServletRequest request = null;
  
    public RequestFacade(Request request) {
      this.request = request;
    }
  
    /* implementation of the ServletRequest*/
    public Object getAttribute(String attribute) {
      return request.getAttribute(attribute);
    }
  
    public Enumeration getAttributeNames() {
      return request.getAttributeNames();
    }
  
    ...
  }
  注重 RequestFacade 構造函數。 它會接受一個 Request 對象,即刻分配給私有的 servletRequest 對象引用。 還要注重,RequestFacade 內的每個方法調用 ServletRequest 對象內相應的方法。
  
  ResponseFacade 類也是如此。
  
  以下是 application 2 所包含的類 HttpServer2
  Request
  Response
  StaticResourceProcessor
  ServletProcessor2
  Constants
  HttpServer2 類類似于 HttpServer1,只是它在 await 方法內使用了 ServletProcessor2 而不是ServletProcessor1。
  
  if (request.getUri().startsWith("/servlet/")) {
    ServletProcessor2 processor = new ServletProcessor2();
    processor.process(request, response);
  }
  else {
    ...
  }
  ServletProcessor2 類也類似于 ServletProcessor1,只是在以下 process 方法的部分代碼有點不同:
  
  Servlet servlet = null;
  RequestFacade requestFacade  = new RequestFacade(request);
  ResponseFacade responseFacade = new ResponseFacade(response);
  
  try {
    servlet = (Servlet) myClass.newInstance();
    servlet.service((ServletRequest) requestFacade,
      (ServletResponse) responseFacade);
  }
  
  編譯并運行該應用程序 
  假如要編譯該應用程序,在工作目錄下鍵入以下命令:
  javac -d . -classpath ./lib/servlet.jar src/ex02/pyrmont/*.java
  假如要在 windows 下運行該應用程序,在工作目錄下鍵入以下命令:
  java -classpath ./lib/servlet.jar;./ ex02.pyrmont.HttpServer2
  在 linux 環境下,使用分號來隔開類庫:
  java -classpath ./lib/servlet.jar:./ ex02.pyrmont.HttpServer2
  您可以使用和 application 1 相同的 URL 以收到同樣的結果。
  
  總結
  本文討論了簡單的能夠用于服務靜態資源,以及處理如 PrimitiveServlet 一樣簡單的 servlet 的 servlet 容器。 同時也提供 javax.servlet.Servlet 的背景信息。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久亚洲影视| 久久久国产精品一区| 日韩精品中文字| 亚洲a一级视频| 国产成人精品在线播放| 国产91av在线| 亚洲一区二区少妇| 国产精品美女主播| 国产精品日韩电影| 日本中文字幕久久看| 亚洲激情中文字幕| 国产精品丝袜久久久久久高清| 九九九热精品免费视频观看网站| 欧美性xxxxx极品| 亚洲国产精品系列| 亚洲香蕉成人av网站在线观看| 日韩国产一区三区| 91久久在线播放| 欧美日韩激情网| 国产精品久久一区主播| 午夜剧场成人观在线视频免费观看| 高清视频欧美一级| 欧美激情中文网| 日韩欧美在线视频免费观看| 日韩国产精品亚洲а∨天堂免| 久久久久久国产精品美女| 欧美久久精品午夜青青大伊人| 欧美性做爰毛片| 国产精品啪视频| 日韩亚洲综合在线| 国产日韩欧美成人| 成人免费福利在线| 欧美疯狂xxxx大交乱88av| 正在播放欧美一区| 91精品国产91久久久久久最新| 在线观看免费高清视频97| 国产精品久久久久久网站| 69av视频在线播放| 日本久久中文字幕| 久久久免费高清电视剧观看| 中文字幕v亚洲ⅴv天堂| 一区二区福利视频| 国产ts一区二区| 国产精品一区久久久| 91香蕉电影院| 亚洲欧美在线看| 91麻豆国产语对白在线观看| 亚洲成成品网站| 国产视频精品自拍| 精品久久久999| 性日韩欧美在线视频| 揄拍成人国产精品视频| 成人黄色在线播放| 91日韩在线视频| 欧美日韩中文在线| 国产精品视频男人的天堂| 成人性教育视频在线观看| 日韩电影在线观看永久视频免费网站| 91色在线观看| 亚洲国产精品中文| 亚洲视屏在线播放| 国产性色av一区二区| 国产精品美女免费看| 亚洲视频电影图片偷拍一区| 精品国产一区二区三区四区在线观看| 亚洲欧美国产另类| 久久精品国产一区二区三区| 狠狠综合久久av一区二区小说| 91精品国产色综合久久不卡98口| 成人免费网站在线| 国产精品第一区| 亚洲欧洲美洲在线综合| 992tv在线成人免费观看| 欧洲成人午夜免费大片| 97精品久久久中文字幕免费| 91精品国产综合久久久久久蜜臀| 超碰精品一区二区三区乱码| 动漫精品一区二区| 国产自摸综合网| 日韩中文字幕网址| 日韩成人激情在线| 中文字幕亚洲国产| 国产精品福利在线观看网址| 97久久精品国产| 8090理伦午夜在线电影| 国产午夜精品视频免费不卡69堂| 欧美一区深夜视频| 国产精品看片资源| 欧美性xxxx在线播放| 青青草原一区二区| 中文字幕日韩欧美在线视频| 亚洲精品白浆高清久久久久久| 免费91麻豆精品国产自产在线观看| 丝袜一区二区三区| 欧美国产日韩二区| 在线免费观看羞羞视频一区二区| 亚洲欧洲日韩国产| 亚洲第一福利在线观看| 性欧美激情精品| 亚洲a级在线播放观看| 中文日韩在线观看| 51ⅴ精品国产91久久久久久| 91网站免费看| 国产高清在线不卡| 国内精品视频一区| 欧美韩国理论所午夜片917电影| 日韩av影视综合网| 国产精品嫩草影院久久久| 欧美国产精品日韩| 91久久久久久久久久| 国产精品美女午夜av| 97在线精品视频| 成人亚洲激情网| 欧美国产视频日韩| 亚洲一区二区三区视频播放| 色婷婷久久av| 国产精品一区二区三区久久| 欧美中文字幕在线观看| 国产一区在线播放| 亚洲欧美国产精品专区久久| 国产精品扒开腿做爽爽爽视频| 久久人人爽人人爽人人片亚洲| 国产精品久久久久久久久借妻| 在线播放精品一区二区三区| 国产日韩欧美夫妻视频在线观看| 精品国产区一区二区三区在线观看| 黄色成人在线播放| 欧美日韩国产中文精品字幕自在自线| 97超级碰在线看视频免费在线看| 日本高清+成人网在线观看| 热99精品里视频精品| 国产日韩精品在线观看| 韩国三级电影久久久久久| 久青草国产97香蕉在线视频| 日韩国产欧美精品一区二区三区| 九色精品免费永久在线| 久久久视频在线| 亚洲欧美精品suv| 国产精品第100页| 一区二区三区视频在线| 亚洲激情小视频| 国内精品视频在线| 日本欧美国产在线| 欧美精品video| 在线播放日韩欧美| 91久久久久久久久久久久久| 成人激情电影一区二区| 国产欧美日韩中文| 中文字幕日韩av电影| 亚洲欧美激情视频| 日韩中文字幕在线免费观看| 欧美精品久久久久久久久| 日本久久91av| 中文字幕不卡av| 午夜精品一区二区三区在线视| 91久久精品在线| 久久久国产精彩视频美女艺术照福利| 国产精品高潮在线| 午夜精品久久久久久久99热浪潮| 国产精品爱久久久久久久| 夜夜躁日日躁狠狠久久88av| 91免费在线视频网站| 欧美激情一级欧美精品| 欧美激情免费视频|