赞
踩
【有道云笔记】十八 4.4 MVC模式、三层架构、分页
https://note.youdao.com/s/PRQ62OUV
一、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
JavaBean:一种规范,表达实体和信息的规范,便于封装重用
二、三层架构
上一层可以调用下一层所有代码,并不是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 { }
三、分页
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
分页常见的问题:
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 }
UserServlet.selectByPage com.mysql.cj.jdbc.ClientPreparedStatement: select id,name,password from users limit 0,5 com.mysql.cj.jdbc.ClientPreparedStatement: select count(*) from users PageInfo{list=[User{id=1, name='lisi', password='123'}, User{id=2, name='wangwu', password='123'}, User{id=3, name='dshfi', password='123'}, User{id=4, name='hweiohwi', password='12'}, User{id=5, name='12ih', password='23'}], totalPage=3, pageNo=1, pageSize=5} UserServlet.selectByPage com.mysql.cj.jdbc.ClientPreparedStatement: select id,name,password from users limit 5,5 com.mysql.cj.jdbc.ClientPreparedStatement: select count(*) from users PageInfo{list=[User{id=6, name='23hih', password='hio'}, User{id=7, name='hidosfhi', password='23'}, User{id=8, name='dhfih', password='34'}, User{id=9, name='ihdsfoih', password='23423'}, User{id=10, name='hdifh', password='232'}], totalPage=3, pageNo=2, pageSize=5} UserServlet.selectByPage com.mysql.cj.jdbc.ClientPreparedStatement: select id,name,password from users limit 10,5 com.mysql.cj.jdbc.ClientPreparedStatement: select count(*) from users PageInfo{list=[User{id=11, name='12hihi', password='iff'}, User{id=12, name='dhsfii', password='1212'}], totalPage=3, pageNo=3, pageSize=5}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。