隨筆-59  評(píng)論-31  文章-0  trackbacks-0

          1.java的System.getProperty()方法可以獲取的值

          java.version

          Java 運(yùn)行時(shí)環(huán)境版本

          java.vendor

          Java 運(yùn)行時(shí)環(huán)境供應(yīng)商

          java.vendor.url

          Java 供應(yīng)商的 URL

          java.home

          Java 安裝目錄

          java.vm.specification.version

          Java 虛擬機(jī)規(guī)范版本

          java.vm.specification.vendor

          Java 虛擬機(jī)規(guī)范供應(yīng)商

          java.vm.specification.name

          Java 虛擬機(jī)規(guī)范名稱

          java.vm.version

          Java 虛擬機(jī)實(shí)現(xiàn)版本

          java.vm.vendor

          Java 虛擬機(jī)實(shí)現(xiàn)供應(yīng)商

          java.vm.name

          Java 虛擬機(jī)實(shí)現(xiàn)名稱

          java.specification.version

          Java 運(yùn)行時(shí)環(huán)境規(guī)范版本

          java.specification.vendor

          Java 運(yùn)行時(shí)環(huán)境規(guī)范供應(yīng)商

          java.specification.name

          Java 運(yùn)行時(shí)環(huán)境規(guī)范名稱

          java.class.version

          Java 類格式版本號(hào)

          java.class.path

          Java 類路徑

          java.library.path

          加載庫時(shí)搜索的路徑列表

          java.io.tmpdir

          默認(rèn)的臨時(shí)文件路徑

          java.compiler

          要使用的 JIT 編譯器的名稱

          java.ext.dirs

          一個(gè)或多個(gè)擴(kuò)展目錄的路徑

          os.name

          操作系統(tǒng)的名稱

          os.arch

          操作系統(tǒng)的架構(gòu)

          os.version

          操作系統(tǒng)的版本

          file.separator

          文件分隔符(在 UNIX 系統(tǒng)中是“/”)

          path.separator

          路徑分隔符(在 UNIX 系統(tǒng)中是“:”)

          line.separator

          行分隔符(在 UNIX 系統(tǒng)中是“/n”)

          user.name

          用戶的賬戶名稱

          user.home

          用戶的主目錄

          user.dir

          用戶的當(dāng)前工作目錄

          2.java 通過System.getProperties()獲取系統(tǒng)參數(shù)

             Properties props=System.getProperties(); //系統(tǒng)屬性
             System.out.println("Java
          的運(yùn)行環(huán)境版本:"+props.getProperty("java.version"));
             System.out.println("Java
          的運(yùn)行環(huán)境供應(yīng)商:"+props.getProperty("java.vendor"));
             System.out.println("Java
          供應(yīng)商的URL"+props.getProperty("java.vendor.url"));
             System.out.println("Java
          的安裝路徑:"+props.getProperty("java.home"));
             System.out.println("Java
          的虛擬機(jī)規(guī)范版本:"+props.getProperty("java.vm.specification.version"));
             System.out.println("Java
          的虛擬機(jī)規(guī)范供應(yīng)商:"+props.getProperty("java.vm.specification.vendor"));
             System.out.println("Java
          的虛擬機(jī)規(guī)范名稱:"+props.getProperty("java.vm.specification.name"));
             System.out.println("Java
          的虛擬機(jī)實(shí)現(xiàn)版本:"+props.getProperty("java.vm.version"));
             System.out.println("Java
          的虛擬機(jī)實(shí)現(xiàn)供應(yīng)商:"+props.getProperty("java.vm.vendor"));
             System.out.println("Java
          的虛擬機(jī)實(shí)現(xiàn)名稱:"+props.getProperty("java.vm.name"));
             System.out.println("Java
          運(yùn)行時(shí)環(huán)境規(guī)范版本:"+props.getProperty("java.specification.version"));
             System.out.println("Java
          運(yùn)行時(shí)環(huán)境規(guī)范供應(yīng)商:"+props.getProperty("java.specification.vender"));
             System.out.println("Java
          運(yùn)行時(shí)環(huán)境規(guī)范名稱:"+props.getProperty("java.specification.name"));
             System.out.println("Java
          的類格式版本號(hào):"+props.getProperty("java.class.version"));
             System.out.println("Java
          的類路徑:"+props.getProperty("java.class.path"));
             System.out.println("
          加載庫時(shí)搜索的路徑列表:"+props.getProperty("java.library.path"));
             System.out.println("
          默認(rèn)的臨時(shí)文件路徑:"+props.getProperty("java.io.tmpdir"));
             System.out.println("
          一個(gè)或多個(gè)擴(kuò)展目錄的路徑:"+props.getProperty("java.ext.dirs"));
             System.out.println("
          操作系統(tǒng)的名稱:"+props.getProperty("os.name"));
             System.out.println("
          操作系統(tǒng)的構(gòu)架:"+props.getProperty("os.arch"));
             System.out.println("
          操作系統(tǒng)的版本:"+props.getProperty("os.version"));
             System.out.println("
          文件分隔符:"+props.getProperty("file.separator"));   // unix 系統(tǒng)中是"/"
             System.out.println("
          路徑分隔符:"+props.getProperty("path.separator"));   // unix 系統(tǒng)中是":
             System.out.println("
          行分隔符:"+props.getProperty("line.separator"));   // unix 系統(tǒng)中是"/n
             System.out.println("
          用戶的賬戶名稱:"+props.getProperty("user.name"));
             System.out.println("
          用戶的主目錄:"+props.getProperty("user.home"));
             System.out.println("
          用戶的當(dāng)前工作目錄:"+props.getProperty("user.dir"));

           

          3.

          Java編寫通過代理訪問的應(yīng)用程序

          本技巧將向您講述如何編寫可通過代理訪問因特網(wǎng)上的Web服務(wù)器的Java應(yīng)用程序。在Java應(yīng)用程序中加入代理支持只需額外編寫幾行代碼,且不依賴任何安全性漏洞

          Java和代理結(jié)合起來的秘訣即在Java運(yùn)行時(shí)激活特定的系統(tǒng)屬性。這些屬性未被寫入正式文件,只是作為Java傳說的一部分在Java編程人員中秘傳。為了支持代理,Java應(yīng)用程序不僅需要指定代理本身的信息,而且需要指定用于認(rèn)證的用戶信息。在開始使用網(wǎng)際協(xié)議之前,您需要在程序中添加以下幾行代碼:
          //通知Java您要通過代理進(jìn)行連接
          System.getProperties().put("proxySet","true");

          //指定代理所在的服務(wù)器
          System.getProperties().put("proxyHost","myProxyMachineName");

          //指定代理監(jiān)聽的端口
          System.getProperties().put("proxyPort","85"); 

           有些代理在授權(quán)用戶訪問因特網(wǎng)之前,要求用戶輸入用戶名和口令。如果您使用位于防火墻之內(nèi)的Web瀏覽器,您就可能碰到過這種情況。以下是執(zhí)行認(rèn)證的方法:

          URLConnection
           connection=url.openConnection();
          String
             password="username:password";
          String
             encodedPassword=base64Encode(password);
          connection.setRequestProperty("Proxy-Authorization",encodedPassword); 

            這段代碼的思想是,您必須調(diào)整HTTP標(biāo)頭以發(fā)出用戶信息。這是通過調(diào)用setRequestProperty()來實(shí)現(xiàn)的。這種方法允許您在發(fā)出請(qǐng)求之前處理HTTP標(biāo)頭。HTTP要求用base64對(duì)用戶名和口令進(jìn)行編碼。幸運(yùn)的是,有一組公用域API,它們將代您執(zhí)行編碼(請(qǐng)參閱參考資源部分)。

            如您所見,在Java應(yīng)用程序中加入代理支持并不需要做多少工作。有了現(xiàn)在的知識(shí),再做一點(diǎn)研究(您必須查明您的代理是如何處理您感興趣的協(xié)議以及如何進(jìn)行用戶認(rèn)證的),您就能用其他協(xié)議實(shí)現(xiàn)代理。
              HTTP代理:(例子)

          Properties props = System.getProperties();

                     props.put("http.proxyHost""192.168.0.150");

                     props.put("http.proxyPort""808");
            FTP代理

            ScottD.Taylor提出這個(gè)秘訣來處理FTP協(xié)議代理:

          defaultProperties.put("ftpProxySet","true");
          defaultProperties.put("ftpProxyHost","proxy-host-name");
          defaultProperties.put("ftpProxyPort","85"); 

            接下來您便可以通過以下代碼使用"ftp"協(xié)議訪問文件URL

          URL
           url=newURL("ftp://ftp.netscape.com/pub/navigator/3.04/windows/readme.txt"); 

            如果有人有使用其他網(wǎng)際協(xié)議代理的例子,我很想看看。

            注意:代碼示例(Example.java)僅在JDK1.1.4下測(cè)試過。

            后續(xù)技巧!

            對(duì)于仍在使用JDK1.1.7(配合WebSphere3.0)的開發(fā)人員而言,將proxyHostproxyPort設(shè)為系統(tǒng)屬性不起作用;conn.getInputStream()或者返回連接超時(shí),或者是找不到主機(jī)路徑。但是,我使用接受HostPort為參數(shù)的URL構(gòu)造函數(shù)解決了這一問題(使用我的代理主機(jī)和端口):

          public
           URL(String protocol,String host,int port,String file). 

            借助用戶名和口令進(jìn)行認(rèn)證的方法不起作用。應(yīng)將"Basic"置于認(rèn)證字符串的開頭;例如:

          String
           encodedPassword=base64Encode(password); 

            應(yīng)該是:

          String
           encodedPassword="Basic"+base64Encode(password); 

            您也不必用一個(gè)單獨(dú)的程序來進(jìn)行64位編碼。您可以使用sun.misc.BASE64Encoder()類。下面是完成這兩處改動(dòng)之后的代碼:

          System.getProperties().put("proxySet","true");
          System.getProperties().put("proxyHost",proxyHost);
          System.getProperties().put("proxyPort",proxyPort);
          String
           authString="userid:password";
          String
           auth="Basic"+newsun.misc.BASE64Encoder().encode(authString.getBytes());
          URL
           url=newURL("http://java.sun.com/");
          URLConnection
           conn=url.openConnection();
          conn.setRequestProperty("Proxy-Authorization",auth); 

            下面是使用socks4代理服務(wù)器的方法:

          System.getProperty("socksProxySet",true);
          System.getProperty("socksProxyHost",proxyHostName);
          System.getProperty("socksProxyPort",proxyPort);
          Usually
           the proxyPort for Socks 4 is port 1080

          posted on 2012-01-04 14:37 RoyPayne 閱讀(8348) 評(píng)論(0)  編輯  收藏 所屬分類: java高級(jí)

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 长岛县| 汝城县| 阿拉善盟| 邻水| 布尔津县| 阿鲁科尔沁旗| 汶上县| 馆陶县| 汕头市| 静乐县| 玉溪市| 深泽县| 台前县| 河源市| 宝兴县| 都江堰市| 汾西县| 石嘴山市| 佳木斯市| 清河县| 乌鲁木齐市| 静乐县| 华蓥市| 建水县| 南昌市| 滦平县| 佛教| 噶尔县| 沅江市| 石景山区| 甘泉县| 江陵县| 曲周县| 格尔木市| 阳春市| 岑溪市| 台安县| 高密市| 涡阳县| 漯河市| 邹平县|