Java三层结构指的是将一个大型项目按照功能划分为三个独立的层:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。每一层都有不同的职责和功能,并通过接口进行交互。下面我将详细介绍实现Java三层结构的步骤和代码。

一、整体流程

实现Java三层结构的步骤如下:

步骤 功能
1 创建项目并导入所需的依赖
2 创建表示层(Presentation Layer)
3 创建业务逻辑层(Business Logic Layer)
4 创建数据访问层(Data Access Layer)
5 完成层间接口的定义和实现
6 运行项目并进行测试

二、代码实现

1. 创建项目并导入所需的依赖

首先,创建一个Java项目,并在项目的配置文件(如pom.xml)中导入所需的依赖。

<!-- 表示层依赖 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

<!-- 业务逻辑层和数据访问层依赖 -->
<!-- 可根据实际需要选择对应的框架,如Spring框架、MyBatis等 -->

2. 创建表示层(Presentation Layer)

在表示层中,主要负责与用户进行交互,接收用户的请求并展示响应结果。可以使用Java Web开发框架,如Spring MVC等。

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    
    @RequestMapping("/list")
    public String list(Model model) {
        List<User> userList = userService.getAllUsers();
        model.addAttribute("userList", userList);
        return "user/list";
    }
    
    // 其他表示层代码...
}

3. 创建业务逻辑层(Business Logic Layer)

在业务逻辑层中,主要处理业务逻辑和业务规则,对表示层的请求进行处理,并调用数据访问层进行数据操作。

@Service
public class UserService {
    @Autowired
    private UserDao userDao;
    
    public List<User> getAllUsers() {
        return userDao.getAllUsers();
    }
    
    // 其他业务逻辑层代码...
}

4. 创建数据访问层(Data Access Layer)

数据访问层负责与数据库进行交互,执行数据的增删改查操作。可以使用ORM框架,如MyBatis、Hibernate等。

@Repository
public class UserDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    
    public List<User> getAllUsers() {
        String sql = "SELECT * FROM user";
        return jdbcTemplate.query(sql, (resultSet, rowNum) -> {
            User user = new User();
            user.setId(resultSet.getLong("id"));
            user.setName(resultSet.getString("name"));
            // 其他字段赋值...
            return user;
        });
    }
    
    // 其他数据访问层代码...
}

5. 完成层间接口的定义和实现

在表示层、业务逻辑层和数据访问层之间,需要定义接口并实现接口的方法,以实现层间的解耦。

// 用户服务接口
public interface UserService {
    List<User> getAllUsers();
    
    // 其他方法...
}

// 用户服务实现
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    
    @Override
    public List<User> getAllUsers() {
        return userDao.getAllUsers();
    }
    
    // 其他方法的实现...
}

// 用户数据访问接口
public interface UserDao {
    List<User> getAllUsers();
    
    // 其他方法...
}

// 用户数据访问实现
@Repository
public class UserDaoImpl implements UserDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    
    @Override
    public List<User> getAllUsers() {
        String sql = "SELECT * FROM user";
        return jdbcTemplate.query(sql, (resultSet, rowNum) -> {
            User user =