📄 webserverui.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 + -