赞
踩
为了实现代码的层次清晰,分工明确,通常会将一个应用划分成三层架构:表示层、业务逻辑层、数据访问层。
* 表示层(web):主要接收前端发送的请求,并响应数据
* 业务逻辑层(service): 负责处理具体的业务逻辑
* 数据访问层(dao): 负责对数据库进行增删改查操作
分层时候,可以实现代码的复用性
创建maven模块,转为web 项目,添加依赖
<dependencies> <!--数据库驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency> <!--mybatis框架--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.9</version> </dependency> <!--实体封装--> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.8.3</version> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.26</version> </dependency> <!--json转换工具--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.9</version> </dependency> <!--单元测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <!--hutool--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.4.3</version> </dependency> <!--servlet--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> </plugin> </plugins> </build>
- domain: 实体类包
- util: 工具类包
- mapper: 持久层(数据访问层)
- service: 业务层
- servlet: 表示层
- filter:过滤器(后面讲)
需求:进入主页面后,发送请求到后端,查询学生列表
接口地址: get /studentServlet?action=findAll 返回数据: [ {id: "hm001",name: "张三",birthday: "1995-05-05",address: "顺义"}, {id: "hm002",name: "李四",birthday: "1996-06-06",address: "昌平"} ]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
写代码前,先创建
- StudentServlet
- StudentService(接口)
- StudentServiceImpl(实现类)
- StudentMapper
需求:点击添加学生按钮,弹出添加学生页面,填写完毕后,将请求发送到后台
接口地址: post /studentServlet?action=save 参数(使用请求体传递): {id: "hm001",name: "张三",birthday: "1995-05-05",address: "顺义"} 返回结果: "OK"
- 1
- 2
- 3
- 4
- 5
- 6
需求:点击列表中得删除按钮,将学生的id发送到后台进行删除
接口地址: get /studentServlet?action=deleteById&id=学生id 返回结果: "OK"
- 1
- 2
- 3
- 4
需求:点击修改按钮,打开修改框,并将点击行的id发送到后台查询当前学生信息
接口地址: get /studentServlet?action=findById&id=学生id 返回数据: {id: "hm001",name: "张三",birthday: "1995-05-05",address: "顺义"}
- 1
- 2
- 3
- 4
需求:在修改框输入学生信息,点击修改按钮,将修改后的数据发到后端,后端根据id将数据更新到库中
接口地址: post /studentServlet?action=update 参数(使用请求体传递): {id: "hm001",name: "张三",birthday: "1995-05-05",address: "顺义"} 返回结果: "OK"
- 1
- 2
- 3
- 4
- 5
- 6
面向接口编程就是在开发程序之前先定义接口(接口中定义方法),然后开发人员再按照接口定义好的方法去写实现类
这样做的好处在于使用接口层进行解耦合,使得servlet和service层之间不再相互影响
学生管理系统的设计和开发,旨在提高教育管理效率,为学校和教育机构带来便捷和高效的管理体验。通过充分利用计算机技术,实现学生信息的集中管理和自动化处理,学校和教育机构能够更好地适应现代教育的发展需求,提升学生服务质量,为教育事业的发展做出贡献。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。