返回

初学者探索 B/S 架构:代码示例助你轻松入门

闲谈

B/S 架构:初学者指南

在计算机科学领域,B/S 架构是一种分布式应用系统,其中客户端(浏览器)和服务器端(服务器)通过网络连接。它广泛应用于 Web 应用程序,例如在线购物和社交媒体平台。

初学者入门代码示例

静态 Web 服务器:

//服务器端代码
import java.net.*;
import java.io.*;

public class StaticWebServer {

    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(80);
        while (true) {
            Socket clientSocket = serverSocket.accept();
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            OutputStream out = clientSocket.getOutputStream();

            //解析HTTP请求
            String request = in.readLine();
            String[] requestParts = request.split(" ");
            String filename = requestParts[1].substring(1);

            //读取文件并发送给客户端
            File file = new File(filename);
            if (file.exists()) {
                byte[] fileData = Files.readAllBytes(file.toPath());
                out.write(("HTTP/1.1 200 OK\r\nContent-Length: " + fileData.length + "\r\n\r\n").getBytes());
                out.write(fileData);
            } else {
                out.write(("HTTP/1.1 404 Not Found\r\nContent-Length: 0\r\n\r\n").getBytes());
            }

            clientSocket.close();
        }
    }
}

//浏览器端代码(HTML)
<html>
<head>
    
</head>
<body>
    <h1>欢迎来到 B/S 架构世界!</h1>
</body>
</html>

多任务版本:

//服务器端代码(Java)
import java.net.*;
import java.io.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MultiThreadedWebServer {

    public static void main(String[] args) throws IOException {
        ExecutorService executorService = Executors.newFixedThreadPool(10);
        ServerSocket serverSocket = new ServerSocket(80);
        while (true) {
            Socket clientSocket = serverSocket.accept();
            executorService.submit(() -> {
                try {
                    //解析HTTP请求和发送响应,与静态Web服务器相同
                } catch (IOException e) {
                    //处理异常
                } finally {
                    clientSocket.close();
                }
            });
        }
    }
}

面向对象版本:

//服务器端代码(Java)
import java.net.*;
import java.io.*;

public class ObjectOrientedWebServer {

    public static void main(String[] args) throws IOException {
        //创建Web服务器对象
        WebServer webServer = new WebServer(80);

        //启动服务器
        webServer.start();
    }

    public static class WebServer {

        private int port;
        private ServerSocket serverSocket;
        private boolean running;

        public WebServer(int port) {
            this.port = port;
        }

        public void start() throws IOException {
            serverSocket = new ServerSocket(port);
            running = true;

            while (running) {
                Socket clientSocket = serverSocket.accept();
                //处理客户端请求和发送响应
            }
        }

        public void stop() {
            running = false;
            try {
                serverSocket.close();
            } catch (IOException e) {
                //处理异常
            }
        }
    }
}

代码示例说明:

  • 静态 Web 服务器:它提供一个基本服务器,可以响应简单的 HTTP 请求并提供静态文件。
  • 多任务版本:它演示了如何使用多线程处理多个客户端请求,从而提高并发性。
  • 面向对象版本:它采用面向对象的设计原则,实现了更模块化和可扩展的服务器。

这些代码示例旨在帮助初学者逐步了解 B/S 架构的工作原理。通过动手实践,你可以更深入地理解客户端和服务器端之间的交互,以及如何构建自己的 B/S 架构应用程序。