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 findAll();
}

Service 层接口与实现

UserService.java
路径service/UserService.java

package service;

import pojo.User;
import java.util.List;

public interface UserService {
    List 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();

    @Override
    public List 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 {

    @Override
    public List findAll() {
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("user.txt");
        List lines = IoUtil.readLines(in, StandardCharsets.UTF_8, new ArrayList<>());

        List 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 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)


    cn.hutool
    hutool-all
    5.8.25


程序运行效果

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

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

总结

这个案例完整演示了:

  • 三层架构结构

  • Dao → Service → Controller 的调用关系

  • Hutool 工具类简化 IO 读取

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

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


你可能感兴趣的:(JavaWeb 三层架构简单介绍与案例实现)