网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.小议如何在Application中显示图象.
.CORBA与Java的结合使用.
.JBuilder2005 Servlet开发之监听.
.教你如何使用javax.sound.midi包.
.用javamail显示复合邮件的内容的.
.NaN 属性.
.Java也存在2000年问题.
.使用Decorator模式 翻译者:Disn.
.基础教程介绍——什么是SOA?.
.Weblet安全性教程.
.深入WebLogic Portal .
.在Java中定制自己的组件.
.java学习笔记.
.如何在 Java 应用程序中读取 8 位.
.事件监听器 将JavaBeans接通起来.
.简单的Java循环控制实现行列式算.
.异常的捕获和实现自己的异常类.
.Java 理论与实践: 用弱.
.一个简单的 CORBA/java 示例.
.Unicode编码解释UCS、UTF、BMP、.

使用 Java 1.2 的 Authenticator 类

发表日期:2008-1-5



  您用喜好的浏览器在网上冲浪时,您会碰到要求代理服务器认证或 HTTP 服务器认证的 URL,并会出现您再熟悉不过的窗口要求您输入用户名及口令:
  
  从浏览器访问一个诸如 http://www.lombard.com/cgi-bin/Quotes/quote 这样的 URL 不成问题,因为您自己可以提供用户名和口令。但是当您试图通过 Java 程序从与此 URL 相关的 InputStream 中读取数据时,该 Java 程序就会发出 FileNotFoundException 异常。
  
使用 Java 1.2 的 Authenticator 类

  在 Java 1.0 或 1.1 中,您可以通过在连接时记入 (post) 适当的认证字符串来避免这种情况,但这种方法仅在您事先知道该 URL 是受保护的时才奏效。(Authorization: Basic username:passWord,其中基本认证域是以 base 64 编码的。)假如您事先没有预见到文档是受保护的,则您甚至无法读取文件内容。(有关用 Java 1.1 applet 或应用程序访问口令保护的 URL 的解决方案,请参阅“Java 技巧 47:再谈 URL 认证”。值得庆幸的是,Java 1.2 在 java.net 包中添加了一个 Authenticator 类,这使得访问口令保护的 URL 变得极为轻易。
  
  现在,对于 Java 1.2,您只需用 Authenticator.setDefault() 安装一个 Authenticator。这样,当需要认证时,已安装的 Authenticator 的 getPasswordAuthentication() 方法就会被调用,然后您就可以用适当的用户名和口令来设置 PasswordAuthentication 实例。就这么简单。
  
  所需步骤如下所示。
  
  第一步:安装 Authenticator
  
  Authenticator.setDefault (new MyAuthenticator ());
  
  第二步:创建 Authenticator 的子类
  
  class MyAuthenticator extends Authenticator {
  protected PasswordAuthentication getPasswordAuthentication() {
  return new PasswordAuthentication ("username", "password");
  }
  }
  
  以下程序完整地显示了这种行为,它提供了自己的认证提示对话框。
  
  import java.io.*;
  import java.net.*;
  import java.awt.*;
  import java.awt.event.*;
  
  public class URLPassword extends Frame {
  
  private TextField tf = new TextField();
  private TextArea ta = new TextArea();
  
  public URLPassword() {
  
  super ("URL Password");
  
  // 安装 Authenticator
  Authenticator.setDefault (new MyAuthenticator ());
  
  // 设置屏幕
  add (tf, BorderLayout.NORTH);
  ta.setEditable(false);
  add (ta, BorderLayout.CENTER);
  tf.addActionListener (new ActionListener() {
  public void actionPerformed (ActionEvent e) {
  String s = tf.getText();
  if (s.length() != 0)
  ta.setText (fetchURL (s));
  }
  });
  addWindowListener (new WindowAdapter() {
  public void windowClosing (WindowEvent e) {
  dispose();
  System.exit(0);
  }
  });
  }
  
  private String fetchURL (String urlString) {
  StringWriter sw = new StringWriter();
  PrintWriter pw = new PrintWriter(sw);
  
  try {
  URL url = new URL (urlString);
  InputStream content = (InputStream)url.getContent();
  BufferedReader in =
  new BufferedReader (new InputStreamReader (content));
  String line;
  while ((line = in.readLine()) !
上一篇:关于java.util.regex 包中新增字符替换方法的比较 人气:964
下一篇:用JAVA得到硬盘空间的三种不同方法 人气:484
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐