广州美容网站建设,敬请期待还是说尽情期待,企查查企业信息查询免费,深圳专业学校网站建设【有道云笔记】十八 4.4 MVC模式、三层架构、分页 https://note.youdao.com/s/PRQ62OUV
一、MVC
MVC全名是Model View Controller#xff0c;是模型(model)#xff0d;视图(view)#xff0d;控制器(controller)的缩写#xff0c;一种软件设计典范#xff0c;
用一种业务…【有道云笔记】十八 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数据封装完成业务后通过控制器跳转JSP页面的方式给用户反馈信息JSP个 用户做出响应。
什么是JavaBean
JavaBean一种规范表达实体和信息的规范便于封装重用
所有属性为private提供默认无参构造方法提供getter和setter实现serializable接口
二、三层架构 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 { }
三、分页 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语句
public class PageInfo{ //当前页数据 private ListStudent list; //总的页数 Math.ceil(总数量/pageSize) private Integer totalPage; private Integer pageNo; private Integer pageSize; } //缺点是这个PageInfo只能封装Student使用泛型就可以解决这个问题这个T代表可以传递任何对象 public class PageInfoT{ private ListT 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{id1, namelisi, password123}, User{id2, namewangwu, password123}, User{id3, namedshfi, password123}, User{id4, namehweiohwi, password12}, User{id5, name12ih, password23}], totalPage3, pageNo1, pageSize5} 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{id6, name23hih, passwordhio}, User{id7, namehidosfhi, password23}, User{id8, namedhfih, password34}, User{id9, nameihdsfoih, password23423}, User{id10, namehdifh, password232}], totalPage3, pageNo2, pageSize5} 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{id11, name12hihi, passwordiff}, User{id12, namedhsfii, password1212}], totalPage3, pageNo3, pageSize5}