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 初学者上手,理解业务逻辑分层思想。