(*承接上一篇:JSP分页技术)
重要的查询页面显示内容的SQL语句:
select top 每页显示的记录数 * from 表名 where id not in
(select top(当前的页数-1)×每页显示的记录数 id from 表名 order by id desc)
order by id desc
本分页程序共四个文件:
·DBU.java 数据库连接类,包含数据库的连接以及相应的数据库查询操作
·PageBean.java 分页类,封装每页显示记录数,当前页数,总页数以及数据总记录数
·PageServlet.java 表单提交到的servlet,获取从表单提交上来的页数里的数据再转发回测试页
·view.jsp 测试页,用于分页查看数据,并提供一个表单来选择需要查看第几页的数据
前两个文件已在上一篇讲了,
第三个文件PageServlet.java,创建一个Servlet在Servlet的doPost方法中获取要显示的页号,查询出表中的总记录数,以及最最重要的是获取页面要显示的内容,其中的那条SQL语句已在上面写了。
public void doPost(HttpServletRequest request HttpServletResponse response)
throws ServletException IOException {
// 1 接收显示的页号
String pageNow=request.getParameter("pageNow");
PageBO pb=new PageBO();
if(pageNow!=null)
pb.setPageNow(Integer.parseInt(pageNow));
// 2 获取总记录数
pb.setRowCount(DBU.countid("select count(*) from jobs"));
// 3 获取页面显示的内容
String sql = "select top "+pb.getPageSize()+" * from jobs where job_id not in(select top "+pb.getPageSize()*(pb.getPageNow()-1)+" job_id from jobs)";
//List rs=DBU.query1(sql);
List rs = DBUBLL.query2(sql);
try{
if(rs!=null){
request.getSession().setAttribute("jblist" rs); //把查出的数据放在session中
request.getSession().setAttribute("pbo" pb);
}
}catch(Exception ex){
ex.printStackTrace();
}
request.getRequestDispatcher("show.jsp").forward(requestresponse);
}
第四个文件是测试页view.jsp,思路还是蛮好理解的,通过for循环循环输出事先查询出的数据:
job_id
job_desc
min_lvl
max_lvl