三层架构的基本框架

本文详细描述了Java中三层架构(Controller-Service-DAO)的应用,涉及XML文件的解析、数据转换(如性别和职位的处理),以及SpringMVC框架下的组件职责划分。通过接口编程实现复用性和维护性,强调了架构的优点如复用性、维护性和扩展性。
摘要由CSDN通过智能技术生成

三层架构

  • Controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据

  • service:业务逻辑层,处理具体的业务逻辑

  • dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增删查改。

public Result list() {
        //1.加载并解析emp.xml
        //classloder:类加载器是一个负责加载类的对象,类加载器还负责定位资源
        //利用classloder动态获取emp.xml文件路径
        String files = this.getClass().getClassLoader().getResource("emp.xml").getFile();
        String file = files.replaceAll("%20", " ");//获取文件路径中有空格应当把空格除去
        System.out.println(file);
        //                 调用xml中的parse方法解析emp.xml文件
        List<Emp> empList = XmlParserUtils.parse(file, Emp.class);
        //2.对数据进行转换处理
        empList.stream().forEach(emp -> {//遍历emp.xml文件
            //处理gender 1:男,2:女
            String gender = emp.getGender();
            if ("1".equals(gender)) {
                emp.setGender("男");
            } else if ("2".equals(gender)) {
                emp.setGender("女");
            }
            //处理job 1: 讲师, 2: 班主任 , 3: 就业指导
            String job = emp.getJob();
            if ("1".equals(job)) {
                emp.setJob("讲师");
            } else if ("2".equals(job)) {
                emp.setJob("班主任");
            } else if ("3".equals(job)) {
                emp.setJob("就业指导");
            }
        });
        //3.响应数据
        return Result.success(empList);
    }

在上述代码中,通过:

  1. 加载并解析emp.xml文件

  2. 对数据进行转换处理

  3. 响应数据

对一份数据进行输出展示

通过三层架构,我们可以将上述的三个部分分别写在三个层级中,通过层层调用做到数据的传递

  1. Dao层:数据访问操作

    package com.it.dao.impl;
    
    import com.it.dao.EmpDao;
    import com.it.pojo.Emp;
    import com.it.utils.XmlParserUtils;
    
    import java.util.List;
    
    public class EmpDaoA implements EmpDao {//使用快捷键Alt+Enter实现接口方法
    
        @Override
        public List<Emp> listEmp() {
            //1.加载并解析emp.xml
            //classloder:类加载器是一个负责加载类的对象,类加载器还负责定位资源
            //利用classloder动态获取emp.xml文件路径
            String files = this.getClass().getClassLoader().getResource("emp.xml").getFile();
            String file = files.replaceAll("%20", " ");//获取文件路径中有空格应当把空格除去
            System.out.println(file);
            //                 调用xml中的parse方法解析emp.xml文件
            List<Emp> empList = XmlParserUtils.parse(file, Emp.class);
            return empList;
        }
    }
    

    为了增加复用性,应对不同类型的数据(如:xml,mysql等),利用面向接口编程方法的思想,实现一个接口调用

  2. Service层:业务逻辑处理

    package com.it.service.impl;
    
    import com.it.dao.EmpDao;
    import com.it.dao.impl.EmpDaoA;
    import com.it.pojo.Emp;
    import com.it.service.EmpService;
    
    import java.util.List;
    
    public class EmpServiceA implements EmpService {
        private EmpDao empDao = new EmpDaoA();//面向接口编程
    
        @Override
        public List<Emp> listEmp() {
            //1.调用Dao,获取数据
            List<Emp> empList = empDao.listEmp();//快捷键Alt+Enter
    
            //2.对数据进行转换处理
            empList.stream().forEach(emp -> {//遍历emp.xml文件
                //处理gender 1:男,2:女
                String gender = emp.getGender();
                if ("1".equals(gender)) {
                    emp.setGender("男");
                } else if ("2".equals(gender)) {
                    emp.setGender("女");
                }
                //处理job 1: 讲师, 2: 班主任 , 3: 就业指导
                String job = emp.getJob();
                if ("1".equals(job)) {
                    emp.setJob("讲师");
                } else if ("2".equals(job)) {
                    emp.setJob("班主任");
                } else if ("3".equals(job)) {
                    emp.setJob("就业指导");
                }
            });
            return empList;
        }
    }
    

    在这里首先通过创建私有对象empDao引入Dao中的对象,通过创建列表对象接收数据并对其进行处理。

  3. Controller层:接收请求,响应数据

    package com.it.controller;
    
    import com.it.pojo.Emp;
    import com.it.pojo.Result;
    import com.it.service.EmpService;
    import com.it.service.impl.EmpServiceA;
    import com.it.utils.XmlParserUtils;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RestController
    public class EmpController {
        private EmpService empService = new EmpServiceA();//先创建EmpService对象,再对其进行调用
    
        @RequestMapping("/listEmp")
        public Result list() {
            //调用service层对象获取数据
            List<Emp> empList = empService.listEmp();
            //3.响应数据
            return Result.success(empList);
        }
    }
    

    与Service层相似的方法,先创建私有对象empService,然后获取数据放在列表中

    三层架构的优点

    • 复用性好

    • 便于维护

    • 利于拓展

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值