⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webserverui.java

📁 一个简单的HTTP服务器和HTTP客户端程序 HTTP客户端(即浏览器)只支持显示标准HTML
💻 JAVA
字号:
package web.http.ui;

import java.awt.Color;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

import web.http.server.WebServer;

/**
 * 实现功能:
 * 1.管理web服务器:开启,关闭,重启
 * 2.显示web服务器的状态
 * 3.接受客户请求,并进行解析
 * 4.返回客户所请求的页面
 * 5.日志记录:客户请求信息记录和错误信息记录
 * 6.搜索功能
 *  
 * 搜索功能的实现:
 * 一般URL地址为:http://hostname:port/filename
 * 当URL请求地址为:http://hostname:port/?str时,表示需要提供搜索服务
 * 在本地磁盘上查找所有文件的内容,并返回查找到的地址
 * 
 * 比如:http://192.168.1.200/?witchingProtocols
 * 表示在本地磁盘的文件内容里面查找:witchingProtocols
 * 查找范围为:整个服务目录下所有文件的文件内容
 * 
 * 
 * 仅支持GET请求
 */
public class WebServerUI implements ActionListener
{
    JFrame WebServerUIFrame=new JFrame();
    
    JPanel contentPane;

    JButton bStart = new JButton();

    JButton bClose = new JButton();

    JTextArea taInfo = new JTextArea();
    
    JLabel labInfo = new JLabel();

    JButton bReStart = new JButton();

    /**
     * 实现WEB服务器的核心
     */
    WebServer webServer = null;
    
    /**
     * 状态标志
     * 1:服务器未启动
     * 2:服务器正常运行
     * 3:服务器已关闭
     */
    int status=1;

    public WebServerUI()
    {
        try
        {
            initUI();
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 布局画面
     *
     */
    private void initUI()
    {
        WebServerUIFrame.setVisible(true);
        WebServerUIFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JFrame.setDefaultLookAndFeelDecorated(true);
        bStart.setBorder(BorderFactory.createLineBorder(Color.black));
        bStart.setText("开启服务器");
        bStart.setBounds(new Rectangle(8, 11, 111, 32));
        contentPane = (JPanel) WebServerUIFrame.getContentPane();
        contentPane.setLayout(null);
        contentPane.setBorder(BorderFactory.createLineBorder(Color.black));
        WebServerUIFrame.setTitle("毕业设计:web服务器");
        bClose.setBounds(new Rectangle(176, 11, 111, 32));
        bClose.setText("关闭服务器");
        bClose.setBorder(BorderFactory.createLineBorder(Color.black));
        taInfo.setBorder(BorderFactory.createLineBorder(Color.black));
        taInfo.setEditable(false);
        taInfo.setBounds(new Rectangle(4, 53, 472, 276));
        JScrollPane scroll=new JScrollPane(taInfo);
        scroll.setBounds(new Rectangle(4, 53, 472, 276));
        labInfo.setBounds(new Rectangle(7, 335, 467, 30));
        labInfo.setText("服务器未启动");
        bReStart.setBorder(BorderFactory.createLineBorder(Color.black));
        bReStart.setText("重启服务器");
        bReStart.setBounds(new Rectangle(354, 9, 111, 32));
        contentPane.add(bClose, null);
        contentPane.add(scroll, null);
        contentPane.add(labInfo, null);
        contentPane.add(bReStart, null);
        contentPane.add(bStart, null);

        this.bStart.addActionListener(this);
        this.bClose.addActionListener(this);
        this.bReStart.addActionListener(this);

        
        WebServerUIFrame.setSize(490, 400);
        WebServerUIFrame.setLocation(100, 100);
        WebServerUIFrame.setVisible(true);
    }

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

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource().equals(this.bStart))
        {//启动服务器
            if(status==2)
            {
                JOptionPane.showMessageDialog(this.contentPane, "服务器已启动");
                return;
            }
            webServer = new WebServer();
            webServer.setParentComponent(contentPane);
            webServer.setTaInfo(taInfo);
            this.webServer.startServer();
            this.status=2;
            this.labInfo.setText("服务器已启动");
        } else if (e.getSource().equals(bClose))
        {//关闭服务器
            if(status!=2)
            {
                JOptionPane.showMessageDialog(this.contentPane, "服务器未启动,无法关闭");
                return;
            }
            this.webServer.stopServer();
            this.webServer = null;
            this.status=3;
            this.labInfo.setText("服务器已关闭");
        } else if (e.getSource().equals(bReStart))
        {//重新启动服务器,先关闭服务器,再启动服务器
            if (webServer != null)
                webServer.stopServer();
            webServer = null;
            webServer = new WebServer();
            webServer.setParentComponent(contentPane);
            webServer.setTaInfo(taInfo);
            this.webServer.startServer();
            this.status=2;
            this.labInfo.setText("服务器已启动");
        }
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -