`
daniel_tu
  • 浏览: 185335 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

System.getProperties()

    博客分类:
  • Java
阅读更多

1 java 通过 System.getProperties() 获取系统参数   

   Properties props=System.getProperties(); // 系统属性
   System.out.println("Java
的运行环境版本: "+props.getProperty("java.version"));
   System.out.println("Java
的运行环境供应商: "+props.getProperty("java.vendor"));
   System.out.println("Java
供应商的 URL "+props.getProperty("java.vendor.url"));
   System.out.println("Java
的安装路径: "+props.getProperty("java.home"));
   System.out.println("Java
的虚拟机规范版本: "+props.getProperty("java.vm.specification.version"));
   System.out.println("Java
的虚拟机规范供应商: "+props.getProperty("java.vm.specification.vendor"));
   System.out.println("Java
的虚拟机规范名称: "+props.getProperty("java.vm.specification.name"));
   System.out.println("Java
的虚拟机实现版本: "+props.getProperty("java.vm.version"));
   System.out.println("Java
的虚拟机实现供应商: "+props.getProperty("java.vm.vendor"));
   System.out.println("Java
的虚拟机实现名称: "+props.getProperty("java.vm.name"));
   System.out.println("Java
运行时环境规范版本: "+props.getProperty("java.specification.version"));
   System.out.println("Java
运行时环境规范供应商: "+props.getProperty("java.specification.vender"));
   System.out.println("Java
运行时环境规范名称: "+props.getProperty("java.specification.name"));
   System.out.println("Java
的类格式版本号: "+props.getProperty("java.class.version"));
   System.out.println("Java
的类路径: "+props.getProperty("java.class.path"));
   System.out.println("
加载库时搜索的路径列表: "+props.getProperty("java.library.path"));
   System.out.println("
默认的临时文件路径: "+props.getProperty("java.io.tmpdir"));
   System.out.println("
一个或多个扩展目录的路径: "+props.getProperty("java.ext.dirs"));
   System.out.println("
操作系统的名称: "+props.getProperty("os.name"));
   System.out.println("
操作系统的构架: "+props.getProperty("os.arch"));
   System.out.println("
操作系统的版本: "+props.getProperty("os.version"));
   System.out.println("
文件分隔符: "+props.getProperty("file.separator"));   // unix 系统中是"/"
   System.out.println("
路径分隔符: "+props.getProperty("path.separator"));   // unix 系统中是" :
   System.out.println("
行分隔符: "+props.getProperty("line.separator"));   // unix 系统中是" /n
   System.out.println("
用户的账户名称: "+props.getProperty("user.name"));
   System.out.println("
用户的主目录: "+props.getProperty("user.home"));
   System.out.println("
用户的当前工作目录: "+props.getProperty("user.dir"));

 

2 Java 编写通过代理访问的应用程序

本技巧将向您讲述如何编写可通过代理访问因特网上的 Web 服务器的 Java 应用程序。在 Java 应用程序中加入代理支持只需额外编写几行代码,且不依赖任何安全性 漏洞

Java 和代理结合起来的秘诀即在 Java 运行时激活特定的系统属性。这些属性未被写入正式文件,只是作为 Java 传说的一部分在 Java 编程人员中秘传。为了支持代理, Java 应用程序不仅需要指定代理本身的信息,而且需要指定用于认证的用户信息。在开始使用网际协议之前,您需要在程序中添加以下几行代码:
// 通知 Java 您要通过代理进行连接
System.getProperties().put("proxySet","true");

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

// 指定代理监听的端口
System.getProperties().put("proxyPort","85");

 有些代理在授权用户访问因特网之前,要求用户输入用户名和口令。如果您使用位于防火墙之内的 Web 浏览器,您就可能碰到过这种情况。以下是执行认证的方法:

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

  这段代码的思想是,您必须调整 HTTP 标头以发出用户信息。这是通过调用 setRequestProperty() 来实现的。这种方法允许您在发出请求之前处理 HTTP 标头。 HTTP 要求用 base64 对用户名和口令进行编码。幸运的是,有一组公用域 API ,它们将代您执行编码(请参阅参考资源部分)。

  如您所见,在 Java 应用程序中加入代理支持并不需要做多少工作。有了现在的知识,再做一点研究(您必须查明您的代理是如何处理您感兴趣的协议以及如何进行用户认证的),您就能用其他协议实现代理。
    HTTP 代理:(例子)

Properties props = System.getProperties ();

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

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

   ScottD.Taylor 提出这个秘诀来处理 FTP 协议代理:

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

  接下来您便可以通过以下代码使用 "ftp" 协议访问文件 URL

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

  如果有人有使用其他网际协议代理的例子,我很想看看。

  注意:代码示例 (Example.java) 仅在 JDK1.1.4 下测试过。

  后续技巧!

  对于仍在使用 JDK1.1.7 (配合 WebSphere3.0 )的开发人员而言,将 proxyHost proxyPort 设为系统属性不起作用; conn.getInputStream() 或者返回连接超时,或者是找不到主机路径。但是,我使用接受 Host Port 为参数的 URL 构造函数解决了这一问题(使用我的代理主机和端口):

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

  借助用户名和口令进行认证的方法不起作用。应将 "Basic" 置于认证字符串的开头;例如:

String
  encodedPassword=base64Encode(password);

  应该是:

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

  您也不必用一个单独的程序来进行 64 位编码。您可以使用 sun.misc.BASE64Encoder() 类。下面是完成这两处改动之后的代码:

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 代理服务器的方法:

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

分享到:
评论

相关推荐

    Java中通过System.getProperties()获取系统参数测试.docx

    ### Java中通过System.getProperties()获取系统参数 在Java编程中,`System.getProperties()`是一个非常实用的方法,它允许开发者访问和获取当前Java运行环境的各种系统属性。这些属性包含了关于Java运行时环境的...

    Java中System.getProperty的使用

    `System.getProperty`和`getProperties`方法是Java中获取系统信息的关键工具。了解并熟练掌握这些方法,对于开发人员来说是非常必要的,特别是在需要根据运行时环境调整程序行为或进行故障排查时。通过合理利用这些...

    在Java中获取系统属性

    Java系统属性主要存储在`System`类中的`Properties`对象里,通过调用`System.getProperties()`方法可以获得所有系统属性的集合。系统属性通常包含以下几类信息: - **操作系统信息**:如操作系统名称(`os.name`)、...

    获取系统中各变量

    在IT领域,尤其是在Java开发中,理解如何获取系统中的各个变量...通过熟练运用`System.getProperties()`和`System.getProperty(String key)`,我们能够更好地理解并利用Java环境,从而编写出更加高效、可靠的应用程序。

    java设置http代理

    这些信息可以通过 `System.getProperties()` 方法获取。下面是一段示例代码: ```java Properties props = System.getProperties(); System.out.println("Java 版本:" + props.getProperty("java.version")); ...

    System Lambda是一个函数集合,用于测试使用javalangSystem的代码.zip

    2. **系统属性(System.getProperties(), System.setProperty())**:测试时,可能需要确保特定的系统属性值在特定情况下保持不变,或者设置特定的属性值来测试不同场景。System Lambda 提供了方法来操作这些属性,...

    用Java实现HTTP文件队列下载.pdf

    System.getProperties().put("proxyHost", "10.154.134.110"); System.getProperties().put("proxyPort", "8080"); ``` 网络资源的保存 在上节中,我们已经获取了指定网络资源的输入流,接下来我们要完成的就是读取...

    Matlab 发送邮件代码

    利用matlab发送定制的信息邮件,以便在跑大量数据时,可以通过提醒! function Sendmail Answer = 1; %判断条件 if Answer>0.5 ... % ①邮箱地址 ... props = java.lang.System.getProperties; *****

    JAVAMAIL实例

    - **`setSmtpHost`** 方法用于设置SMTP服务器地址,通过`System.getProperties()`获取系统属性并设置SMTP主机。 - **`createMimeMessage`** 方法创建MIME邮件对象,初始化会话对象和MIME消息体。 ##### 4.2 SMTP...

    清华JAVA教程doc版

    - 获取系统属性:通过`System.getProperties()`获取`Properties`对象,然后使用`list`方法打印系统属性。 ```java Properties p = System.getProperties(); p.list(System.out); ``` - 打印内存信息:通过...

    JAVA程序设计:第9章 基于文本的Java应用程序.ppt

    `System.getProperties()`方法用于获取一个`Properties`对象,其中包含了所有可用的系统属性信息。而`System.getProperty(String name)`则用于获取指定名称的系统属性值。用户还可以在命令行启动Java程序时使用`-D`...

    java代理服务器设置方法[借鉴].pdf

    Properties systemProperties = System.getProperties(); systemProperties.setProperty("proxySet", "true"); systemProperties.setProperty("proxyHost", strProxy); systemProperties.setProperty("proxyPort", ...

    environmentANDarguments

    通过调用`System.getenv()`方法可以获取所有的环境变量,而如果要查看JVM参数,可以使用`System.getProperties().entrySet().iterator()`。这个迭代器会遍历所有的系统属性,其中包括了传递给JVM的参数。 以下代码...

    javamail邮件提醒

    Properties props = System.getProperties(); props.put("mail.smtp.host", "smtp.example.com"); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); Session session = Session....

    修改mail源码 支持socks代理

    修改mail源码 支持socks... System.getProperties().setProperty("netease.mail.socks.proxy.url", "代理服务器url"); System.getProperties().setProperty("netease.mail.socks.proxy.port", "代理服务器端口"); }

    2022年用Java实现HTTP文件队列下载Java教程.docx

    System.getProperties().put("proxyHost", "10.154.134.110"); System.getProperties().put("proxyPort", "8080"); ``` ### 4. 网络资源的保存 在获取到输入流后,可以使用`FileOutputStream`将内容保存到本地文件...

    java代码自动生成器(仅修改配置即ok)

    HI,all 现发布rapid-generator的...System.getProperties() : 直接引用,没有前缀 generator.properties 文件中的所有属性,直接引用,没有前缀 gg : 模板控制变量, cn.org.rapid_framework.generator.GeneratorControl

    JAVA程序员培训定制课程c09PPT教案学习.pptx

    我们可以使用`System.getProperties()`获取一个`Properties`对象,它包含了所有可用的系统属性信息。若需获取特定属性值,可以使用`System.getProperty(String name)`方法。此外,我们可以在运行Java程序时通过`-D`...

Global site tag (gtag.js) - Google Analytics