改进前后端交互实例

news/2024/10/21 10:04:40/

前后端交互实例(javaweb05)-CSDN博客

在这之前我假设大家都已经学完了IOC和DI

不明白的这里我也解释一下,首先是两个概念

1.控制反转:对象的创建控制权由程序自身转到外部(容器)

2.依赖注入:容器为程序提供运行时所依赖的资源

Bean对象:IOC容器中创建,关联的对象,称之为bean
 

这是上一篇文章的前后端交互里面有一个EmpController代码,在新的一节内容中,我们知道可以将它分成更加结构分明的几部分.

1.Dao数据访问层

2.Service逻辑处理层

3.Controller进行前后端的数据交互

@RestController
public class EmpController {@RequestMapping("/listEmp")public Result list(){//数据访问层DaoString file=this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp>empList=com.yhw.utils.XmlParserUtils.parse(file, Emp.class);//数据处理层ServiceempList.stream().forEach(emp -> {//处理男和女String gender=emp.getGender();if("1".equals(gender)){emp.setGender("男");}else{emp.setGender("女");}String job=emp.getJob();if("1".equals(job)){emp.setJob("讲师");}else if("2".equals(job)){emp.setJob("班主任");}else{emp.setJob("就业指导");}});//下面这一层的是数据交互return Result.success(empList);}
}

这是上一小结的代码,我们要把它分成三个结构

那么我们现在可以先建两个包

一个dao包和service包,包括一个接口和impl包里的实现 

首先来实现EmpDao

1.EmpDao接口

public interface EmpDao {public List<Emp>listEmp();
}

2.EmpDao实现,这里我只写一个A实现,其它它可以有很多实现

@Component
public class EmpDaoA implements EmpDao {@Overridepublic List<Emp> listEmp(){String file=this.getClass().getClassLoader().getResource("emp.xml").getFile();System.out.println(file);List<Emp> empList=com.yhw.utils.XmlParserUtils.parse(file, Emp.class);return empList;}
}

@Component表示把他放入IOC容器中

接下来实现Servce

1.Service接口

public interface EmpService {public List<Emp> listEmp();
}

2.实现

import java.util.List;
@Component
public class EmpServiceA implements EmpService {@Autowiredprivate EmpDao empDao;@Overridepublic List<Emp>listEmp(){List<Emp>empList=empDao.listEmp();empList.stream().forEach(emp -> {//处理男和女String gender=emp.getGender();if("1".equals(gender)){emp.setGender("男");}else{emp.setGender("女");}String job=emp.getJob();if("1".equals(job)){emp.setJob("讲师");}else if("2".equals(job)){emp.setJob("班主任");}else{emp.setJob("就业指导");}});return empList;}
}

@Autowired表示将当前IOC容器中的EmpDao实现自动注入到其中

接下来完善Controller

@RestController
public class EmpController {@Autowiredprivate EmpService empService;@RequestMapping("/listEmp")public Result list(){//加载并解析XML文件//类->类加载器->找到类路径下的emp.xml->获取文件路径List<Emp> empList=empService.listEmp();//调用result方法return Result.success(empList);}
}

我们将原先的Dao层和Service层的对象删除,然后自行选择装配的Dao和Service组件,最后装配到Controller.


http://www.ppmy.cn/news/1426839.html

相关文章

生活中的洪特规则

不知道你还记不记得高中物理所学的一个奇特的物理规则&#xff1a;洪特规则。 洪特规则是德国人弗里德里希洪特&#xff08;F.Hund&#xff09;根据大量光谱实验数据总结出的一个规律&#xff0c;它指出电子分布到能量简并的原子轨道时&#xff0c;优先以自旋相同的方式分别占…

JavaWeb-登录校验

会话技术 浏览器使用的是http协议&#xff0c;多次请求间数据是不能共享的&#xff0c;例如我们要去访问用户数据的接口&#xff0c;但这时候用户是否已经登入了呢&#xff1f;是不知道的&#xff0c;为了解决这个问题&#xff0c;于是引入了会话跟踪技术。 会话&#xff1a;…

Windows如何安装JDK

JDK和JRE简介 JDK&#xff1a;Java Development ToolKit java开发工具包&#xff0c;包含JRE针对java程序开发者 JRE&#xff1a;Java Runtime Environment java程序的运行环境针对java使用者来说 下载JDK&#xff0c;进入官网下载 Oracle官网 双击下载好之后的exe文件&#…

论文笔记:Are Human-generated Demonstrations Necessary for In-context Learning?

iclr 2024 reviewer 评分 6668 1 intro 大型语言模型&#xff08;LLMs&#xff09;已显示出在上下文中学习的能力 给定几个带注释的示例作为演示&#xff0c;LLMs 能够为新的测试输入生成输出然而&#xff0c;现行的上下文学习&#xff08;ICL&#xff09;范式仍存在以下明显…

【算法刷题 | 回溯思想 06】4.17(子集、子集||)

文章目录 9.子集9.1题目9.2解法&#xff1a;回溯9.2.1回溯思路&#xff08;1&#xff09;函数返回值以及参数&#xff08;2&#xff09;终止条件&#xff08;3&#xff09;遍历过程 9.2.2代码实现 10.子集 ||10.1题目10.2解法&#xff1a;回溯10.2.1回溯思路10.2.2代码实现 9.子…

R:UpSet韦恩图制作

#安装UpSetR install.packages("UpSetR") library(UpSetR) #install.packages("UpSetR") library(UpSetR) library(Cairo) # 从CSV文件中读取数据 setwd("C:/Users/fordata/Desktop/研究生/第二个想法(16s肠型&#xff0b;宏基因组功能)/第二篇病毒组…

Jenkins 的构建时执行时间问题

我们希望我的项目能够在特定的时间自动执行&#xff0c;我们需要设定一个定时任务。 Jenkins 的定时任务是通过 Cron 任务来实现的&#xff0c;但是由有点不一样。 H/2 * * * * 比如说上面的设置就是每 2 分钟执行一次。 希望每分钟执行一次 Jenkins 的每分钟执行一次的设置…

算法训练营第43天|LeetCode 1049.最后一块石头的重量Ⅱ 494.目标和 474.一和零

LeetCode 1049.最后一块石头的重量Ⅱ 题目链接&#xff1a; LeetCode 1049.最后一块石头的重量Ⅱ 代码&#xff1a; class Solution { public:int lastStoneWeightII(vector<int>& stones) {int sum 0;int size stones.size();for(int i0;i<size;i){sum st…