由于我无法直接生成图片,以下采用文本图表形式展示Java Web技术栈的分层架构关系:

                    +---------------------+
                    | [6] Spring Boot接口  |
                    |     (Controller)     |
                    +---------↑-----------+
                              |
                    +---------------------+
                    | [5] Spring MVC框架  |
                    |   (DispatcherServlet)|
                    +---------↑-----------+
                              |
                    +---------------------+
                    | [4] Tomcat容器       |
                    | (实现Servlet规范)    |
                    +---------↑-----------+
                              |
                    +---------------------+
                    | [3] Servlet规范      |
                    | (接口标准)           |
                    +---------↑-----------+
                              |
                    +---------------------+
                    | [2] JDK原生网络通信  |
                    | (ServerSocket/Socket)|
                    +---------↑-----------+
                              |
                    +---------------------+
                    | [1] 操作系统层       |
                    |     (TCP协议栈)      |
                    +---------------------+

层次说明:

  1. 操作系统层:提供TCP协议实现等基础网络功能
  2. JDK原生层:通过ServerSocket/Socket类提供基础网络通信能力
    代码如下:
    package com.itbear;
    
    import java.io.*;
    import java.net.*;
    
    public class SimpleServer {
        public static void main(String[] args) {
            int port = 8080;
            try (ServerSocket serverSocket = new ServerSocket(port)) {
                System.out.println("服务器启动,监听端口:" + port);
    
                while (true) {
                    Socket clientSocket = serverSocket.accept();
                    new Thread(() -> {
                        try (BufferedReader in = new BufferedReader(
                                new InputStreamReader(clientSocket.getInputStream()));
                             PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true)) {
    
                            // 读取浏览器发来的 HTTP 请求头(只读第一行)
                            String requestLine = in.readLine();
                            System.out.println("收到请求:" + requestLine);
    
                            // 构造一个简单的 HTTP 响应
                            String responseBody = "Hello, this is my simple server!";
                            out.println("HTTP/1.1 200 OK");
                            out.println("Content-Type: text/html; charset=utf-8");
                            out.println("Content-Length: " + responseBody.getBytes().length);
                            out.println("Connection: close");
                            out.println(); // 响应头和响应体之间必须有一个空行
                            out.print(responseBody);
    
                        } catch (IOException e) {
                            e.printStackTrace();
                        } finally {
                            try {
                                clientSocket.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }).start();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
  3. Servlet规范:定义HttpServlet等标准处理接口
  4. Tomcat:作为Servlet容器实现规范,内部封装ServerSocket
  5. SpringMVC:通过DispatcherServlet封装Servlet实现
  6. Spring Boot控制器:用户编写的业务处理层接口

以上图示展现了从底层网络通信到上层应用开发的垂直依赖关系,箭头方向表示下层为上层提供服务支持。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐