如何简单实现分页跳转功能

如何简单实现分页跳转功能

一.基本页面搭建准备

1.要实现分页跳转功能,推荐使用pageHelper,是开源的使用也方便,把jar包导入Web项目即可

2.首先写个超链接,跳转到查看功能,我这里新建了一个如:Product.html文件,跳转到QueryServlet页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>产品查看</title>
</head>
<body>
<a href="/queryServlet" >点击查看所有产品</a>
</body>
</html>

3.在QueryServlet中实现基本信息查询,并将信息共享到Sessio域中

@WebServlet("/queryServlet")
public class QueryServlet extends HttpServlet {
    //定义基本的SqlSessionFactory 和 SqlSession 对象
    private static  SqlSessionFactory sqlSessionFactory = null ;
    private static     SqlSession sqlSession   = null ;

    // 首先使用静态代码块来读取配置文件和数据库信息,同时创建一个 sqlSessionFactory 工厂对象
    // 之后要进行操作就从这个工厂中获取sqlSession,用完后close归还即可
    static {
            try {
                InputStream is = Resources.getResourceAsStream("MyBatisConfig.xml");
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
                is.close();


            } catch (IOException e) {
                e.printStackTrace();
            }
        }

4.我这里实现的ProductMapper实现的就是查询全部的方法 ,并且赋值首页page=1 ;

二.查看页面展示,因为要在页面获取数据,就用jsp文件展示

首先看下要实现的基本功能 ,资料是网上随便复制的,不要在意,每页展示10条

1.页面如下

<%--1.用表格展示数据--%>
  <table border="1px">
      <%--设置首行标题--%>
      <thead>
      <tr>
          <th>编号</th>
          <th>名称</th>
          <th>价格</th>
          <th>品牌</th>
          <th>操作</th>
      </tr>
      </thead>

          <%--用jstl语句循环获取共享域中的数据,展示在各个地方--%>
<c:forEach items="${list}" var="product">
    <tr>
        <td>${product.id}</td>
        <td>${product.name}</td>
        <td>${product.price}</td>
        <td>${product.brand}</td>
        <td>
            <a href="/xiugaiServlet?id=${product.id}">修改</a>
            <a href="/deleteServlet?id=${product.id}">删除</a>
        </td>
    </tr>
</c:forEach>
  </table><br/><br/>

<%--实现上一个下一页翻页功能,在跳转路径后拼接标识内容 ,如caozuo=less 或add 表明上下页功能--%>
  <c:if test="${page != 1}"><a href="/queryServlet?caozuo=less">上一页</a>&nbsp;&nbsp;</c:if>
  <c:if test="${page != pages}"><a href="/queryServlet?caozuo=add">下一页</a>&nbsp;&nbsp;</c:if>
<%--获取共享域中的如 总页数,总条数,当前页信息--%>
总共${total}条,&nbsp;&nbsp;
  ${pages}页&nbsp;&nbsp;
当前第${page}页&nbsp;&nbsp;

<%--实现数字页面跳转--%>
  <br/>
  <c:forEach  items="${counts}" var="count">
      <c:if test="${count == page}">${count}&nbsp;</c:if>
      <c:if test="${count != page}"><a href="/countServlet?cou=${count}">${count}</a> &nbsp;</c:if>
  </c:forEach>
<br/><br>

2.里面需要共享的数据有

 .product产品信息的list集合

当前页数page,总页数pages,信息总条数total,

数字跳转的集合counts,这些都需要在之前的QueryServlet里面去获取并共享

  // 获取从ProductQuery.jsp传过来的值,如果是less,就将页数减一;如果是add就将页数加一
        String result = req.getParameter("caozuo");
        if("less".equals(result)){
            page--;
        }
        if("add".equals(result)){
            page++;
        }
        //通过 PageHelper工具,来获取展示page页数所需要的 List<Product> 集合
        PageHelper.startPage(page,10);
        List<Product> list = mapper.findAll();
        //创建 PageInfo对象,传入list,获取如总页数,总资料数等信息
        PageInfo<Product> pageInfo = new PageInfo<>(list);
        long total = pageInfo.getTotal();
        int pages = pageInfo.getPages();
 //要实现比如1,2,3,4....10到最后一页的跳转信息,用pages.fori 循环获取页面集合
        List<Integer> counts =new ArrayList<>();
        for (int i = 1; i <=pages; i++) {
            counts.add(i);
        }
        //将之前的信息都存到session共享域中
        session.setAttribute("total",total);
        session.setAttribute("pages", pages );
        session.setAttribute("page",page);
        session.setAttribute("list",list);
        session.setAttribute("counts",counts);
        
        //最后关闭sqlssion,将其返回SqlSessionFactory工厂中,并重定向到ProductQuery.jsp页面
        sqlSession.close();
        resp.sendRedirect("/ProductQuery.jsp");

三.补充

基本的页面跳转已经完成,最后的1,2,3.....counts为避免页面获取冲突,我新建了一个CountServlet,单独处理跳转

在CountServlet里面处理也很简单,获取cou参数数值,然后跳转到该数字页数的页面就行了

      sqlSession = sqlSessionFactory.openSession(true);
        ProductMapper mapper = sqlSession.getMapper(ProductMapper.class);
        //获取传递过来的cou参数,转化为int数值
        int cou = Integer.parseInt(req.getParameter("cou"));
      
     //通过cou和  PageHelper工具来获取跳转页要展示的信息集合list
        PageHelper.startPage(cou,10);
        List<Product> list = mapper.findAll();
        HttpSession session = req.getSession();
        //把list集合以及跳转页面cou,list更新到session域中
        session.setAttribute("list",list);
        session.setAttribute("page",cou);
        //最后归还sqlssion,并跳转展示页面
        sqlSession.close();
        resp.sendRedirect("/ProductQuery.jsp");

四,结语

当然最后CountServlet也可以整合到QueryServlet,多一个条件判断即可,希望我的思路对小伙伴们有所帮助!!!

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值