一、分页所需要的sql语句准备
select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
例如:
select * from tablename limit 2,4
即取出第3条至第6条,4条记录
第n页 每页x条 则用语句 limit (n-1)* x ,x
计算总共需要多少页: t表示总条 x表示每页显示多少条 总页数为:(t+x-1)/x
二、具体实现
1、dao层,接口实现
1 packagecom.aaa.dao;2
3 importjava.util.List;4 importjava.util.Map;5
6
7
8 importjava.util.List;9 importjava.util.Map;10
11 /**
12 * 分页查询13 */
14
15 public interfaceIPageDAO {16
17 /**
18 *19 * 第n页 每页x条 limit (n-1)* x ,x20 * t总共的条数 x一页显示多少count 总:(t+x-1)/x21 *22 */
23
24 /**
25 * 参数:页码,一页显示的条数26 * 返回值:List27 */
28
29 List> getPage(int page, intcount);30 }
2、dao接口的实现类
1 packagecom.aaa.dao.impl;2
3 importcom.aaa.dao.IPageDAO;4 importcom.aaa.util.DBUtil;5
6 importjava.util.List;7 importjava.util.Map;8
9 public class PageDAOImpl implementsIPageDAO {10 @Override11 public List> getPage(int page, intcount) {12
13 //使用了拼接,将传过来的页码与每页显示的条数拼接在sql语句中
14 String sql="select * from product LIMIT "+page+","+count;15 System.out.println(sql);16 returnDBUtil.executeQuery(sql);17 }18 }
3、servlet业务处理
1 packagecom.aaa.servlet;2
3 importcom.aaa.dao.IPageDAO;4 importcom.aaa.dao.impl.PageDAOImpl;5
6 importjavax.servlet.ServletException;7 importjavax.servlet.annotation.WebServlet;8 importjavax.servlet.http.HttpServlet;9 importjavax.servlet.http.HttpServletRequest;10 importjavax.servlet.http.HttpServletResponse;11 importjava.io.IOException;12 importjava.util.List;13 importjava.util.Map;14
15 @WebServlet("/page")16 public class PageServlet extendsHttpServlet {17
18 @Override19 protected void service(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {20
21 //获取从前台页面穿过来 的页码数,如果需要传每个页面显示的条数,也可以参数接收
22 String a = req.getParameter("a");23
24 //调用dao,查询数据
25 IPageDAO dao=newPageDAOImpl();26 List> page = dao.getPage(Integer.parseInt(a), 10);27
28 //共享参数,将所有的商品信息共享
29 req.setAttribute("allProduct",page);30
31 //请求转发到 index.jsp 页面
32 req.getRequestDispatcher("/views/index.jsp").forward(req,resp);33 }34 }
4、jsp页面的分页设计
String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"+"views/";%>
text-align: center;
margin-top: 50px;
}
.page a{
text-decoration: none;
border:1px solid #f9d52b;
padding: 5px 7px;
color: #767675;
cursor: pointer;
}