這段時間工作不太忙,所以抽時間學習了TOMCAT,
TOMCAT實際就是負責保持TCP連接傳遞到部署的項目中。瀏覽器實質就是TCP發送器。將用戶的請求封裝成TCP發送請求。當然格式是雙方協定的。使用的socket連接。請求內容為空格和換行符分割。看了下源碼解析請求頭,覺得寫得好精致啊。講請求轉換為byte數組。然后轉化為char值直接比較他們的值大小。如果和換行符或者空格char相同則提出。
int ix = 0 ; int ox = 0 ; String key = null ; String value = null ; while (ix < data.length) { byte c = data[ix++ ]; switch (( char ) c) { case '&' : value = new String(data, 0 , ox, encoding); if (key != null ) { key = null ; } ox = 0 ; break ; case '=' : key = new String(data, 0 , ox, encoding); ox = 0 ; break ; case '+' : data[ox ++] = ( byte )' ' ; break ; case '%' : data[ox ++] = ( byte )((convertHexDigit(data[ix++]) << 4 ) + convertHexDigit(data[ix++ ])); break ; default : data[ox ++] = c; } } // The last value does not end in '&'. So save it now. if (key != null ) { value = new String(data, 0, ox, encoding);
?
解析請求資源。根據資源名獲取類名。然后導入class文件URLLoader。然后執行方法。提起要繼承HttpServlet 執行service()方法。
還有一個好東西就是它的一場信息管理ResourceBundle讀取一場信息配置文件根據每個包構成一個單例 放入一個靜態HashMap中使用的使用通過包名獲取。非常靈活。而ResourceBundle可以自動的獲取服務器運行環境獲取相應的配置文件。比如獲取LocalStrings文件,如果在中國地區,包下面還有一個LocalStrings_zh_CN的配置文件,將會優先讀取。
/** 異常信息如何使用 * The string manager for this package. */ private StringManager sm = StringManager.getManager(Constants.Package); /** * 用于加載 properties 文件 國際化文件 * 當在中文操作系統下,如果myres_zh_CN.properties、myres.properties兩個文件都存在 * ,則優先會使用myres_zh_CN * .properties,當myres_zh_CN.properties不存在時候,會使用默認的myres.properties。 * * 沒有提供語言和地區的資源文件是系統默認的資源文件。 * 資源文件都必須是ISO-8859-1編碼,因此,對于所有非西方語系的處理,都必須先將之轉換為Java Unicode * Escape格式。轉換方法是通過JDK自帶的工具native2ascii. */ private ResourceBundle bundle; private Demo1(String packageName) { String bundleName = packageName + ".LocalStrings" ; bundle = ResourceBundle.getBundle(bundleName); } public static void main(String[] args) { Demo1 c = new Demo1("com.util" ); System.out.println(c.bundle.getString( "Hello" )); }
看的比較馬虎。有新的在記錄吧。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
