广州大学学生实验报告
开课学院及实验室:电子楼418A 室2014年 11 月 27 日
学院计算机科学与
教育软件学院
年级、专
业、班
网络工程113
班
姓名小玉学号
实验课程名称网络编程成绩
实验项目名称HTTP协议编程指导
老师
樊志平
一、实验目的
WEB服务器也称为WWW服务器,主要功能是提供网上信息浏览服务,是目前使用最广泛的服务。HTTP协议是万维网中使用最广泛的协议,也是Web 服务消息传递的主要传输协议。本实验通过设计和实现简单的WEB服务器和浏览器,使学生熟练掌握HTTP协议的编程,并对WEB服务器的工作原理有比较深入的了解。此外,本实验需要学生能结合TCP套接字编程、多线程编程、输入输出流编程和面向对象分析与设计技术加以解决实际问题,因此实验能提高学生综合运用所学知识并解决实际问题的能力。
二、使用仪器、器材
微机一台
操作系统:WinXP
编程软件:eclipse
三、实验内容及原理
实现简单的Web浏览器和web服务器。四、实验过程原始数据记录
package experiment03;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.EditorKit;
import javax.swing.text.html.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import .*;
import java.util.*;
public class HttpClient extends JFrame {
private JPanel jpNorth = new JPanel();
private JLabel lblAddress = new JLabel("请输入网址:");
private JTextField jtfAddress = new JTextField("http://");
private JButton btnConnect = new JButton("连接"); private JButton btnPrior = new JButton("后退"); private JButton btnNext = new JButton("前进");
private JPanel jpCenter = new JPanel();
private JEditorPane jepContent = new JEditorPane(); private JScrollPane jsp = new JScrollPane(jepContent); //记录历史网址
ArrayList
public HttpClient()
{
this.setLayout(new BorderLayout());
this.add(jpNorth, BorderLayout.NORTH);
jpNorth.setLayout(new FlowLayout());
jpNorth.add(lblAddress);
jtfAddress.setPreferredSize(new Dimension(300,25));
jpNorth.add(jtfAddress);
jpNorth.add(btnConnect);
jpNorth.add(btnPrior);
jpNorth.add(btnNext);
//设置内容区域
this.add(jpCenter,BorderLayout.CENTER);
jpCenter.setLayout(new BorderLayout());
jpCenter.add(jsp,BorderLayout.CENTER);
EditorKit editKit =
jepContent.getEditorKitForContentType("text/html");
jepContent.setEditorKit(editKit);
jepContent.setEditable(false);
//设置事件处理程序
btnConnect.addActionListener(new ActionListener(){ @Override
public void actionPerformed(ActionEvent e) {
try {
if(jtfAddress.getText().trim().isEmpty()) return;
jepContent.setPage(jtfAddress.getText());
history.add(jtfAddress.getText());
currentIndex=history.size()-1;
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
//前进按钮事件
btnNext.addActionListener(new ActionListener(){ @Override
public void actionPerformed(ActionEvent e) {
if(currentIndex == -1 || currentIndex==history.size()-1) return;
currentIndex++;
try {
jepContent.setPage(history.get(currentIndex));
jtfAddress.setText(history.get(currentIndex));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
//后退按钮事件
btnPrior.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
if(currentIndex<=0) return;