JavaWeb(7)MVC,三层架构,分页,过滤器Filter

一、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

1.当控制器收到来自用户的请求

2.控制器调用业务层完成JavaBean数据封装

3.完成业务后通过控制器跳转JSP页面的方式给用户反馈信息

4.JSP个用户做出响应。

 

什么是JavaBean

JavaBean:一种规范,表达实体和信息的规范,便于封装重用

所有属性为private

提供默认无参构造方法

提供getter和setter

实现serializable接口 (用于标识类的对象可以被序列化和反序列化

二、三层架构

 

  • Controller:负责控制,拿到View传递过来的数据,封装之后交给Service处理,Service处理完了之后,Controller拿到结果之后,将结果交给界面。
  • Service:业务逻辑(分页,为了完成分页就要调用两次DAO层)
  • DAO:纯粹的JDBC的增删改查操作

上一层可以调用下一层所有代码,并不是StudentServlet只能调用IStudentService代码,也可以调用ITeacherService代码

三、分页

初始记录行的偏移量是 0(而不是 1)

limit offset,rowcount

limit 偏移到那个位置offset,往下数多少个rowcount

做分页首先要规定每页有多少条

每页有5条,取出第1页数据 limit 0,5

每页有5条,取出第2页数据 limit 5,5

每页有5条,取出第3页数据 limit 10,5

pageSize: 5 pageNo: 1 2 3

limit (pageNo-1)*pageSize,pageSize

分页常见的问题:

1.封装一个分页类需要哪些信息(也是面向对象封装体现的很好的例子)

totalPage pageNopageSizelist(存放信息)

2.分页需要发送哪两条sql语句

  • 查询当前页的数据 select id,name,age,gender from student limit 0,5;
  • 查询总的数量,目的是为了算总的页数 select count(*) from student;

分页类:

public class PageInfo<T>{

    private List<T> list;

    private Integer totalPage;

    private Integer pageNo;

    private Integer pageSize;

}

 

四、过滤器的使用

项目开发中,经常会用到重复代码的实现

1、请求每个servlet都要设置编码

2、判断用户是否登录,只有登录了才有操作权限

五、过滤器相关API

interface Filter 过滤器核心接口

1、init(FilterConfig filterConfig) 初始化方法,在服务器启动的时候就执行

2、doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 过滤器拦截的业务逻辑处理

3、destroy() 销毁过滤器实例的时候调用

interface FilterChain 过滤链

doFilter(ServletRequest request, ServletResponse response)

执行下一个过滤器或放行(访问servlet)

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值