当前位置: 首页 > web >正文

JavaWeb 三层架构简单介绍与案例实现

目录

📖

📌 什么是三层架构?

📦 本案例结构

📑 代码实现

📌 实体类 User(User.java)

📌 Dao 层接口(UserDao.java)

📌 Service 层接口与实现

📌 Dao 实现类(UserDaoImpl.java)

📌 Controller 层(UserController.java)

📌 启动类(ThreeTierDemoApplication.java)

📌 数据文件(user.txt)

📦 依赖(pom.xml 中加入 Hutool)

📊 程序运行效果

📌 总结


在企业级 JavaWeb 项目开发中,为了降低代码耦合、便于维护与扩展,通常采用 三层架构(Three-Tier Architecture)。本文通过一个简单案例,带你快速了解并实践三层架构。


📌 什么是三层架构?

三层架构一般分为:

  • 表现层(Controller / View):负责接收用户请求,返回响应。

  • 业务逻辑层(Service):负责处理具体业务逻辑。

  • 数据访问层(Dao / Repository):负责与数据库交互。

层与层之间各司其职,低耦合高内聚,结构清晰。


📦 本案例结构

📂 项目结构:

three-tier-demo/├── controller/│    └── UserController.java├── service/│    ├── UserService.java│    └── UserServiceImpl.java├── dao/│    └── UserDao.java├── pojo/│    └── User.java├── ThreeTierDemoApplication.java└── user.txt

📑 代码实现

语言:Java,框架:Spring Boot


📌 实体类 User(User.java

路径pojo/User.java

package pojo;public class User {private Integer id;private String name;public User(Integer id, String name) {this.id = id;this.name = name;}// getter 和 setter 省略,可用 Lombok
}

📌 Dao 层接口(UserDao.java

路径dao/UserDao.java

package dao;import pojo.User;
import java.util.List;public interface UserDao {List<User> findAll();
}

📌 Service 层接口与实现

UserService.java
路径service/UserService.java

package service;import pojo.User;
import java.util.List;public interface UserService {List<User> getAllUsers();
}

UserServiceImpl.java
路径service/UserServiceImpl.java

package service;import dao.UserDao;
import dao.UserDaoImpl;
import pojo.User;
import java.util.List;public class UserServiceImpl implements UserService {private UserDao userDao = new UserDaoImpl();@Overridepublic List<User> getAllUsers() {return userDao.findAll();}
}

📌 Dao 实现类(UserDaoImpl.java

路径dao/UserDaoImpl.java

package dao;import pojo.User;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import cn.hutool.core.io.IoUtil;public class UserDaoImpl implements UserDao {@Overridepublic List<User> findAll() {InputStream in = this.getClass().getClassLoader().getResourceAsStream("user.txt");List<String> lines = IoUtil.readLines(in, StandardCharsets.UTF_8, new ArrayList<>());List<User> list = new ArrayList<>();for (String line : lines) {String[] parts = line.split(",");list.add(new User(Integer.parseInt(parts[0]), parts[1]));}return list;}
}

📌 Controller 层(UserController.java

路径controller/UserController.java

package controller;import pojo.User;
import service.UserService;
import service.UserServiceImpl;
import java.util.List;public class UserController {private UserService userService = new UserServiceImpl();public void showUserList() {List<User> userList = userService.getAllUsers();for (User user : userList) {System.out.println(user.getId() + ":" + user.getName());}}
}

📌 启动类(ThreeTierDemoApplication.java

路径ThreeTierDemoApplication.java

import controller.UserController;public class ThreeTierDemoApplication {public static void main(String[] args) {new UserController().showUserList();}
}

📌 数据文件(user.txt

路径:项目根目录或 resources/

1,张三
2,李四
3,王五

📦 依赖(pom.xml 中加入 Hutool)

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.25</version>
</dependency>

📊 程序运行效果

运行 ThreeTierDemoApplication.java,控制台输出:

1:张三
2:李四
3:王五

📌 总结

这个案例完整演示了:

  • 三层架构结构

  • Dao → Service → Controller 的调用关系

  • Hutool 工具类简化 IO 读取

  • 项目代码解耦,清晰易维护

非常适合 JavaWeb 初学者上手,理解业务逻辑分层思想。


http://www.xdnf.cn/news/12917.html

相关文章:

  • QEMU源码全解析 —— 块设备虚拟化(24)
  • 【Linux应用】Linux系统日志上报服务,以及thttpd的配置、发送函数
  • Java八股文——并发编程「场景篇」
  • 湖北理元理律师事务所实务手记:个人债务管理的理性突围
  • 65、.NET 中DllImport的用途
  • 轻量级数学竖式训练方案解析
  • Go语言多线程问题
  • Java 中字节流的使用详解
  • 用 AI 开发 AI:原汤化原食的 MCP 桌面客户端
  • UDP连接套接字与异步Socket通道详解
  • Java核心技术-卷I-读书笔记(第十二版)
  • ESP12E/F 参数对比
  • 单线程模型中消息机制解析
  • Map 接口
  • 【学习笔记】0-RTT
  • 强化学习入门:交叉熵方法数学推导
  • 支付系统架构图
  • 算法-构造题
  • 嵌入式学习--江协stm32day4
  • 哈佛总线架构是什么?
  • 随机访问介质访问控制:网络中的“自由竞争”艺术
  • stm32_LAN8720驱动
  • atc abc409E
  • 【Vue3】(三)vue3中的pinia状态管理、组件通信
  • Linux--vsFTP配置篇
  • HNCTF 2025 Just Ping Write-up
  • 基于安卓的文件管理器程序开发研究源码数据库文档
  • 分类数据集 - 垃圾分类数据集下载
  • 19-Oracle 23 ai Database Sharding-知识准备
  • ffmpeg(四):滤镜命令