带有模糊查询的分页方法
int pageSize = 5;
int start = (pageIndex-1)*pageSize+1;
int end = pageIndex * pageSize;
listNews = new ArrayList<>();
con = DBhelper.getCon();
sql = "select * from (select a.*,rownum myid from news a where a.sid like '%"+str+"%') b where myid between ? and ?";
ps = con.prepareStatement(sql);
ps.setInt(1, start);
ps.setInt(2, end);
rs = ps.executeQuery();
while(rs.next()) {
news = new News(rs.getInt("nid"), rs.getInt("sid"), rs.getString("title"), rs.getString("author"),
rs.getString("summary"), rs.getString("content"),null);
listNews.add(news);
}
DBhelper.classObj(con, ps, rs);
return listNews;
}
表里数据可展示的总页码
con = DBhelper.getCon();
sql = "select count(0) from news where sid like '%"+str+"%'";
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
if(rs.next()) {
maxPage = rs.getInt(1) / 5;
if(rs.getInt(1) % 5 != 0) {
maxPage ++;
}
}
DBhelper.classObj(con, ps, rs);
return maxPage;
}```
调用分页的方法
```<%
NewsDao nd = new NewsDao();
request.setCharacterEncoding("utf-8");
// 获取 request作用域里面的 模糊查询关键字
String str = request.getAttribute("str").toString();
// 获取 news表里面数据可以展示的总页码
int maxPage = nd.getMaxPage(str);
// 获取 request作用域里面的 listNews数据
List<News> listNews = (List)request.getAttribute("listNews");
// 获取request作用域里面保存的当前页码变量
int pageIndex = Integer.parseInt(request.getAttribute("pageIndex").toString());
%>
jsp页面代码
<a href="<%=request.getContextPath() %>/loadDataServlet.do?str=<%=str %>&pageIndex=1">首页</a>
<a href="<%=request.getContextPath() %>/loadDataServlet.do?str=<%=str %>&pageIndex=<%=pageIndex>1?pageIndex-1:1 %>">上一页</a>
当前页数:[<%=pageIndex %>/<%=maxPage %>]
<a href="<%=request.getContextPath() %>/loadDataServlet.do?str=<%=str %>&pageIndex=<%=pageIndex<maxPage?pageIndex+1:maxPage %>">下一页</a>
<a href="<%=request.getContextPath() %>/loadDataServlet.do?str=<%=str %>&pageIndex=<%=maxPage %>">末页</a>
</p>
```