Java基础-Java练习-自定义图形化界面模拟浏览器访问Tomcat服务器

自定义图形化界面模拟浏览器访问Tomcat服务器

前提是打开Tomcat服务,并且保证你的项目已经加载到Tomcat服务器上

 

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

/*
 练习:自定义图形化界面模拟浏览器访问Tomcat服务器
 客户端:图形化界面模拟浏览器访问Tomcat服务器
 文本框用于输入地址
 文本区域用于显示服务器返回的数据
 客户端:
 1、使用字符串切割方法从输入的地址中获取服务器端点、端口号和要访问的资源
 2、创建Socket端点,指定服务器地址和端口号
 3、创建打印流,向Socket输出流打印数据,
 4、将请求信息打印到Socket输出流,发送到服务器
 5、创建输入流,读取服务器返回的信息
 返回的数据:
 服务器响应信息和客户端请求的数据
 */
class MyIEByGUI {
	private Frame f;
	private Button but;
	private TextField tf;
	private TextArea ta;
	private Dialog d;
	private Button okBut;

	public MyIEByGUI() {
		init();
	}
	//初始化窗体
	public void init() {
		f = new Frame("MyFrame");
		but = new Button("转到");
		tf = new TextField(30);
		ta = new TextArea(20, 40);
		d = new Dialog(f, "提示信息", true);
		okBut = new Button("确定");
		f.setBounds(300, 150, 500, 400);
		f.setLayout(new FlowLayout());
		f.add(tf);
		f.add(but);
		f.add(ta);
		myEvent();
		f.setVisible(true);
	}
	//为窗体,按钮等添加事件监听
	public void myEvent() {
		okBut.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				if (e.getKeyCode() == e.VK_ENTER)
					;
				d.setVisible(false);
			}
		});
		tf.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				if (e.getKeyCode() == KeyEvent.VK_ENTER)
					show();
			}
		});
		d.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				d.setVisible(false);
			}
		});
		okBut.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				d.setVisible(false);
			}
		});
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		but.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				show();
			}
		});
	}
	//定义方法,显示获取到的数据
	private void show() {
		ta.setText("");
		// 获取文本框输入的地址
		String url = tf.getText();// http://192.168.1.105:8080/myweb/index.html
		// 获取IP地址的首位置索引
		int index1 = url.indexOf("//") + 2;
		// 从index1开始获取"/"的索引
		int index2 = url.indexOf("/", index1);
		// 截取含IP地址和端口号的字符串
		String str = url.substring(index1, index2);
		// 截取路径
		String path = url.substring(index2);
		// 分别获取IP地址和端口号
		String[] arr = str.split(":");
		String host = arr[0];
		int port = Integer.parseInt(arr[1]);
		Socket sock = null;
		try {
			// 创建客户端端点,并指定服务器地址和端口号
			sock = new Socket(host, port);
		} catch (Exception e) {
			throw new RuntimeException("连接服务器失败!");
		}
		try {
			// 创建打印流,将请求信息写入Socket输出流 ,发送给服务器
			PrintWriter out = new PrintWriter(sock.getOutputStream(), true);
			out.println("GET " + path + " HTTP/1.1");
			out.println("Accept: */*");
			out.println("Accept-Language:zh-cn");
			out.println("Host: 192.168.1.105:11000");
			out.println("Connetction: Closed");
			out.println();
			out.println();
			// 创建输入流,读取服务器返回的数据
			BufferedReader bufr = new BufferedReader(new InputStreamReader(sock
					.getInputStream()));
			String line = null;
			while ((line = bufr.readLine()) != null)
				ta.append(line + "\r\n");
		} catch (Exception e) {
			throw new RuntimeException("请求失败!");
		} finally {
			try {
				sock.close();
			} catch (IOException e) {
				System.out.println("客户端端点关闭失败!");
			}
		}
	}

	public static void main(String[] args) {
		new MyIEByGUI();
	}
}

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值