网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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,移动开发
本月文章推荐
.Java入门(2) 面向对象的程序设计.
.Java 的选择语句.
.如何将JAVA生成可执行文件.
.J2ME学习——RMS从入门到精通之二.
.基于Nokia S60的游戏开发.
.Java中static、this、super、fin.
.一个用JAVA写的测算服务器响应速.
.技术分享——开发Eclipse自定义控.
.“类”常数分组.
.用Apache Img Tag生成随即验证图.
.Motorola V180,V501,V600,C650等.
.用FileFilter搜索文件.
.用BSF如何在Java中嵌入Javascript.
.超级简单的sqlmap工具(ajf sql m.
.J2EE:美好的蓝图.
.(Java)利用反射动态调用类成员.
.Java和Flash通讯.
..Net-Java 争论的再次回顾.
.The Xlet Application Model.
.Eclipse3.0的swt编程.

用J2SE 1.4进行Internet安全编程(三)

发表日期:2008-1-5



  开发一个支持 SSL 的网页浏览器
  我们开发一个支持 SSL 的网页浏览器作为一个完整的例子。该浏览器要做下面的工作:
  
  1. 用户输入 URL,浏览器能接收它。
  
  2. 浏览器能打开到 URL 指定主机的连接。
  
  3. 浏览器能发送 HTTP 命令。
  
  4. 浏览器会等待 HTTP/HTTPS 服务器的回应。
  
  5. 浏览器能接收 Html 回应。
  
  6. 浏览器能解析 HTML 并显示出页面。
  
  我们创建的浏览器要能处理任何 URL 如 HTTP、HTTPS、FTP 等。注重我使用工具类 Javax.swing.text.html.HTMLEditorKit 来解析 HTML,它提供了对 HTML 3.2 的支持。
  
  示例代码 3 中展示了这个浏览器,QBrowser,的代码。注重 QBrowser 实现了 Runnable 接口。我这样做是因为这个浏览器没有提供“停止”按钮。
  
  示例代码 3:QBrowser.java
  
  import java.io.*;
  
  import java.net.*;
  
  import java.awt.*;
  
  import java.awt.event.*;
  
  import javax.swing.*;
  
  
  public class QBrowser implements ActionListener, Runnable {
  
   private JFrame frame;
  
   private JButton go;
  
   private JEditorPane content;
  
   private JTextField url;
  
   private JLabel statusLine;
  
  
   // default constrUCtor
  
   public QBrowser () {
  
   buildBrowserInterface();
  
   }
  
  
   private void buildBrowserInterface() {
  
   frame = new JFrame("Q's Browser");
  
   // on close, exit the application using System.exit(0);
  
   frame.setDefaultCloseOperation (3);
  
  
   url = new JTextField("", 25);
  
   go = new JButton("Go Get It");
  
   go.addActionListener(this);
  
  
   JPanel controls = new JPanel(new FlowLayout ());
  
   controls.add(new JLabel("URL:"));
  
   controls.add(url);
  
   controls.add(go);
  
   content = new JEditorPane();
  
   content.setEditable(false);
  
   // HTML text. Use the kit in the class javax.swing.text.html.HTMLEditorKit, which
  
   // provides support for HTML 3.2
  
   content.setContentType("text/html");
  
   content.setText("

Q's Browser

Copyright (c) 2002 Qusay H. Mahmoud

");
  
   statusLine = new JLabel("Initialization Complete");
  
  
   JPanel panel = new JPanel(new BorderLayout (0, 2));
  
   frame.setContentPane(panel);
  
  
   panel.add(controls, "North");
  
   panel.add(new JScrollPane (content), "Center");
  
   panel.add(statusLine, "South");
  
   frame.pack();
  
   frame.setVisible(true);
  
   }
  
  
   /**
  
   * You cannot stop a download with QBrowser
  
   * The thread allows multiple downloads to start
  
   * concurrently in case a download freezes
  
   */
  
   public void actionPerformed (ActionEvent event) {
  
   Thread thread = new Thread(this);
  
   thread.start();
  
   }
  
   // this is the Thread's run method
  
   public void run () {
  
   try {
  
   String str = url.getText();
  
   URL url = new URL(str);
  
   readURL(url);
  
   } catch (IOException ioe) {
  
   statusLine.setText("Error: "+ioe.getMessage());
  
   showException(ioe);
  
   }
  
   }
  
  
   private void showException(Exception ex) {
  
   StringWriter trace = new StringWriter ();
  
   ex.printStackTrace (new PrintWriter (trace));
  
   content.setContentType ("text/html");
  
   content.setText ("

" + ex + "

" + trace + "
");
  
   }
  
  
   /**
  
   * The URL class is capable of handling http:// and https:// URLs
  
   */
  
   private void readURL(URL url) throws IOException {
  
   statusLine.setText("Opening " + url.toExternalForm());
  
   URLConnection connection = url.openConnection();
  
   StringBuffer buffer = new StringBuffer();
  
   BufferedReader in=null;
  
   try {
  
   in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
  
   String line;
  
   while ((line = in.readLine()) != null) {
  
   buffer.append(line).append('\n');
  
   statusLine.setText("Read " + buffer.length () + " bytes...");
  
   }
  
   } finally {
  
   if(in != null) in.close();
  
   }
  
   String type = connection.getContentType();
  
   if(type == null) type = "text/plain";
  
   statusLine.setText("Content type " + type);
  
   content.setContentType(type);
  
   content.setText(buffer.toString());
  
   statusLine.setText("Done");
  
   }
  
  
   public static void main (String[] args) {
  
   QBrowser browser = new QBrowser();
  
   }
  
  }
上一篇:用J2SE 1.4 进行 Internet 安全编程(二) 人气:705
下一篇:企业内部网中使用Policy文件来设置Java的安全策略 人气:844
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐