java简单前端教程_Java后台及Jsp前端的简单分页_学习笔记

在你需要导出显示大量列表时,在一页中都显示出来,是不美观页不实用的。在这种时候,就需要设置一个分页来显示你的内容,如百度的分页:

f4c9cb764a7dddc9227cd8cd7b14b3fe.png

分页分为:前段分页和后端分页

后端分页:

首先我们应该确定,我们要分页,都需要从哪得到哪些数据:

Page类

在Servlet中得到:

int pageNumber   //当前页码 , 该数据在Servlet中获取

int pageSize      //每页显示的条数 , 在Servlet中指定

后期计算得到:

int index        // 分页开始的索引 , 通过计算获得

int totalPage     // 总页数 , 需要通过计算获得

从数据库中导出:

int totalRecord   // 总记录 , 通过查询数据库获得

List data;    // 分页的数据 , 通过数据库查询

分页查询时,DAO、Service的分工

Service:

pageNumber

pageSize

DAO:

int totalRecord

List data

下面是Page类,在这里声明了上面我们需要的6个数据中的4个,index、totalPage 2个需要计算得到的,我们就不在这里面声明了。这个page类可以拿过去直接使用的:

public class Page{private intpageNumber;private intpageSize;private inttotalRecord;private Listdata;privateString path;public Page(int pageNo, int pageSize, inttotalRecord) {super();this.pageNumber =pageNo;this.pageSize =pageSize;this.totalRecord =totalRecord;

}public intgetPageNumber() {if(pageNumber < 1){return 1;

}if(pageNumber >getTotalPage()){returngetTotalPage();

}returnpageNumber;

}public void setPageNumber(intpageNumber) {this.pageNumber =pageNumber;

}public intgetPageSize() {returnpageSize;

}public void setPageSize(intpageSize) {this.pageSize =pageSize;

}public intgetTotalPage() {if(getTotalRecord()%getPageSize()==0){return getTotalRecord()/getPageSize();

}else{return getTotalRecord()/getPageSize()+1;

}

}public intgetTotalRecord() {returntotalRecord;

}public void setTotalRecord(inttotalRecord) {this.totalRecord =totalRecord;

}public intgetIndex() {return (getPageNumber() - 1) *getPageSize();

}public ListgetData() {returndata;

}public void setData(Listdata) {this.data =data;

}publicString getPath() {returnpath;

}public voidsetPath(String path) {this.path =path;

}

}

Servlet关键代码

protected void getStuList(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {

String url=WebUtils.getPath(request);

Page page=stuService.findAll(pageNo, pageSize);

page.setPath(url);

request.setAttribute("page",page );

request.getRequestDispatcher("/studentList.jsp").forward(request, response);

}

Dao关键代码:从数据库中导出 totalRecord  、List data;

public static intgetTotalRecord() {

PreparedStatement ps=null;

ResultSet rs= null;

Connection conn=Utils.getConnection();

String sql= " SELECT COUNT(*) AS total FROM student";int total=0;try{

ps=conn.prepareStatement(sql);

rs=ps.executeQuery();if(rs.next()){

total= rs.getInt("total");

}

}catch(SQLException e) {//e.printStackTrace();

}finally{

Utils.close(conn, ps, rs);

}returntotal;

}public List getLimitStuList(int index, intpageSize) {

PreparedStatement ps=null;

ResultSet rs= null;

Connection conn=Utils.getConnection();

String sql= " SELECT * FROM student limit ? , ?";

List list= new ArrayList();try{

ps=conn.prepareStatement(sql);

ps.setInt(1, index);

ps.setInt(2, pageSize);

rs=ps.executeQuery();while(rs.next()){int id = rs.getInt("id");

String name= rs.getString("name");

String school= rs.getString("school");double score = rs.getDouble("score");

list.add(newStudent(id,name,school,score));

}

}catch(SQLException e) {//e.printStackTrace();

}finally{

Utils.close(conn, ps, rs);

}returnlist;

}

这就是后端的一些关键代码,下面我们看下前段分页。

前段分页:这是一个JSP代码

百度是页里最多只显示10个页码

咱们设计为页面中最多显示5页码

这个问题就转变成了需要动态的设置forEach中begin和end的值

根据不同的情况去设置begin和end的值

第一种情况,总页数小于等于5

begin=1  end=总页数

第二种情况,当前页 小于等于 3

begin=1  end=5

第三种情况,当前页 大于3

lbegin=当前页-2   end=当前页+2

首页

上一页

page.totalPage }">

【${num}】

${num }

下一页

末页共${page.totalPage }页,${page.totalRecord }条记录到,去第页

$("#btn_id").click(function(){varvalue=$("#pn_input").val();

window.location="${page.path}&pageNo="+value;

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值