国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用J2SE 1.4進行Internet安全編程(三)

2019-11-18 12:22:18
字體:
來源:轉載
供稿:網友

  開發一個支持 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();
  
   }
  
  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 资源县| 太白县| 黔江区| 黄龙县| 满城县| 广灵县| 彭水| 中卫市| 元谋县| 资源县| 饶平县| 兴化市| 临清市| 西乌珠穆沁旗| 潼南县| 金塔县| 龙井市| 安顺市| 克山县| 颍上县| 化州市| 西畴县| 资阳市| 蓬溪县| 工布江达县| 柳河县| 沈阳市| 湖南省| 田林县| 上高县| 西乌珠穆沁旗| 鄂伦春自治旗| 习水县| 宜兴市| 堆龙德庆县| 徐州市| 东乌珠穆沁旗| 宁都县| 泗水县| 水城县| 盘锦市|