0 优质文章
MVC与三层架构
什么是MVC?什么是三层架构?
三层架构与MVC详细讲解
MVC三层架构(详解)
1 MVC
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,
用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
最简单的、最经典就是JSP(view) +Servlet(controller) + JavaBean(model)
视图和逻辑隔离开来

控制器是核心
M(Model) 模型 JavaBean
V(View) 视图 html jsp Thymeleaf volicity freemaker
C(Control) 控制器 Servlet,Controller,Action
工作流程:
- 当控制器收到来自用户的请求
- 控制器调用业务层完成JavaBean数据封装
- 完成业务后通过控制器跳转JSP页面的方式给用户反馈信息
- JSP个 用户做出响应。
什么是JavaBean?
JavaBean:一种规范,表达实体和信息的规范,便于封装重用
- 所有属性为private
- 提供默认无参构造方法
- 提供getter和setter
- 实现serializable接口
2 三层架构


Controller:负责控制,拿到View传递过来的数据,封装之后交给Service处理,Service处理完了之后,Controller拿到结果之后,将结果交给界面。Service:业务逻辑(比如分页,为了完成分页就要调用两次DAO层)DAO:纯粹的JDBC的增删改查操作
上一层可以调用下一层所有代码,并不是StudentServlet只能调用IStudentService代码,也可以调用ITeacherService代码
@WebServlet("/student")
public class StudentServlet extends HttpServlet {
private IStudentService studentService = new StudentServiceImpl();
private ITeacherService teacherService = new TeacherServiceImpl();
}
public class StudentServiceImpl implements IStudentService {
private IStudentDao studentDao = new StudentDaoImpl();
private ITeacherDao teacherDao = new TeacherDaoImpl();
}
public class StudentDaoImpl implements IStudentDao {
}

3 分页


limit 中offset代表偏移到哪个位置,rows代表往下数多少个
pageNo, pageSize -> 1,5 2,5 3,5
limit (pageNo-1)*pageSize ,pageSize
pageNo | limit |
|---|---|
| 1 | 0,5 |
| 2 | 5,5 |
| 3 | 10,5 |


分页常见的问题:
- 封装一个分页需要哪些信息
①当前页要展示的数据(可以用泛型)②总页数③当前页号④每页展示数据条数⑤ - 分页需要发送哪两条sql语句
SELECT id,name,age,gender FROM student LIMIT offset,pagesize
SELECT count(*) FROM student
Pageinfo类:
public class PageInfo{
//当前页数据
private List<Student> list;
//总的页数 Math.ceil(总数量/pageSize)
private Integer totalPage;
private Integer pageNo;
private Integer pageSize;
}
//缺点是这个PageInfo只能封装Student,使用泛型就可以解决这个问题,这个T代表可以传递任何对象
public class PageInfo<T>{
private List<T> list;
private Integer totalPage;
private Integer pageNo;
private Integer pageSize;
}
public static void main(String[] args) {
int totalCount = 12;
int pageSize = 5;
int totalPage = (int)Math.ceil((double)totalCount / pageSize);
System.out.println(totalPage);// 3
}


4 代码
Day18_三层架构、分页

















![【YOLOv8改进[损失函数]】使用结合InnerIoU和Focaler的各种损失函数助力YOLOv8更优秀](https://img-blog.csdnimg.cn/direct/d5a5a1ca387e4b18a78dcad4c57442d4.png)

