Truy cập vào các trang web

1. Xem nội dung của trang Web

Biết trước một địa chỉ URL, ví dụ http://www.sun.com. Web Browser có thể mở đề xem các thông tin ờ trang HTML đó. Tuông tự, ta cũng có thể lập một applet trong Java đế đọc tin từ một trang Web cho trước. Java cung cấp lớp j a va. net. URL để xù lý URL. Ví dụ,

try {

URL url = new URL(http://www.sun.com);

}catch(MalforemedURLException ex){}

Để xem nội dung của một trang HTML, ta có thể viết nhu sau:

AppletContext context = getAppletContext(); context. showDocument (ur ‘.) ;

Ví dụ 3.7. Xây dựng một chương trình Viev WebPage đơn giản để đọc tin trong một trang Web: Nhập vào địa chỉ URL, nhấn nút “Go” tại trang Web đó sẽ được hiển thị lên màn hình.

// ViewWebPage.java: Truy cập vào trang HTML thông qua applet

import java.net.*;

import j ava.awt.*;

import java.awt.event.*;

import j avax.swing.*;

import j ava.applet.*;

public class ViewWebPage extends JApplet implements ActionListener{ // Lập nút “Go” để bắt đầu truy cập theo địa chỉ đã khai báo

private JButton button = new JButton(“Go”); private JTextField textURL = new JTextField(20); public void init(){

getContentPane().setLayout(new FlowLayout()); getContentPane().add(new JLabel(“URL”)); getContentPane().add(textURL); getContentPane().add(button); button.addActionListener(this);

>

// Xử lý các sự kiện

public void actionPerformed(ActionEvent evt){ if(evt.getSource() == button) try {

AppletContext context = getAppletContext();

// Nhận địa chì đã khai báo

URL url = new URL (textURL . getText ()’) ; context.showDocument(url);

}catch(Exception e){

showStatus(“Error: ” + e);

}

}

}

2. Tìm các tập tin ở Web Server

Nhiều khi ta muốn truy cập vào nội dung của các tệp tin ở Web Serve r. Ta có thể sử dụng chương trình độc lập hoặc applet (qua Web Browser) để đọc tin trong các tệp đó như hình sau.

Để truy cập vào một tệp, ta phải sử dụng openst ream () được định nghĩa trong lớp URL để mở một tệp từ xa url.

Inputstream is = url.openStream ();

Ví dụ 3.8. Hiển thị nội dung của một tệp từ Web Server. Chương ưình gồm một giao diện là trường vãn bản để nhập tên tệp từ URL và một vùng văn bản để hiển thị nội dung cùa tệp đó.

// ViewRemoteFile.java. đọc và hiển thị nội dung của một tệp tin từ xa.

import java.net.v; import java.awt.*; import java.io.*; import java.awt.event.*; import j avax.swing.*;

public class ViewRemoteFlle extends JApplet implements

ActionListener{

// Tạo lập một nút “View” để nhấn khi cần xem một tệp từ xa.

private JButton view = new JButton(“View”); private JTextField jbfURL = new JTextField(lO); private JTextArea jtaFile = new JTextAreaO; private JLabel status = new JLabel();

public void init {

Panel pi = new Panel();

pi.setLayout(new BorderLayout());

pi.add(new jLabel(“Filename “), BorderLayout.WEST); pi.add(jbfURL, BorderLayout.CENTER); pi.add(view, BorderLayout.EAST);

getContentPane().setLayout(new FlowLayout()); getContentPane().add(new JScrollPane(jtaFile),

BorderLayout.CENTER);

getContent Pane().add(pi, BorderLayout.NORTH); getContentPane().add(status, BorderLayout.SOUTH); view.addActionListener(this);

}

// Xừ lý sự kiện khi nhấn “View”

public void actionPerformed(ActionEvent evt){ if(evt.getSource() = view) showFile();

}

private void showFile(){

BufferedReader infile = null;

String inLine;

URL url = null; try{

String urlstr;

uristr = jbfURL.getText0.trim(); url = new URL(urlStr);

Inputstream is = url. openStream () ;

// Tạo lập vùng đệm để đọc tin

infile = new BufferedReader(new InputStreamReader(is)); // Đọc từng dòng và ghép vào vùng văn bản được hiển thị

while ((inLine = infile. readLineO ) != null) { jtaFile.append(ìnLine + “\n”);

status.setText(“File loaded successfully”);

}catch(FileNotFoundException e){

status.setText(“URL not found: ” + url); }catch(IOException e){

status.setText(e.getMessage0);

}finally{ try{

if(infile != null) infile.close();

}catch(IOException e)u

}

}

public static void main(String arg[]){

JFrame fr = new JFrame (“Read File from Web Server”);

ViewRemoteFile applet = new ViewRemoteFile();

fr.getContentPane().add(applet, BorderLayout.CENTER) ;

applet.init();

applet.start();

fr.setsize(400, 300);

fr.setvisible(true);

}

}