返回
初学者探索 B/S 架构:代码示例助你轻松入门
闲谈
2023-12-27 08:34:05
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 架构应用程序。