黑马程序员 Java练习-自定义图形化界面模拟浏览器访问Tomcat服务器

来源:互联网 发布:足不出户知天下 英文 编辑:程序博客网 时间:2024/05/22 14:15

----------------------Android培训、Java培训、期待与您交流! ----------------------

前提是打开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();}}

----------------------Android培训、Java培训、期待与您交流! ----------------------




0 0
原创粉丝点击