JavaWeb 简单分页实现代码

 更新时间:2016年11月01日 17:24:35   投稿:lqh  
这篇文章主要介绍了JavaWeb 简单分页实现代码的相关资料,需要的朋友可以参考下

JavaWeb 简单分页的实现:

这次主要是讲解一下通过登录后对得到的数据进行分页,首先我们新建一个登录页面login.jsp,因为我们主要学习一下分页,所以登录验证的部分不再阐述,主要代码如下:

<form action="pageServlet">
     用户名:<input type="text" name="username"><br>
    密&nbsp;码:<input type="text" name="password"><br>
    <input type="submit" value="提交">
   </form>

首先建立实体类User.java并添加get和set方法:

public class User {
  private String username;
  private String password;
  public String getUsername() {
    return username;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public String getPassword() {
    return password;
  }
  public void setPassword(String password) {
    this.password = password;
  }
  
}

我们可以看到form表单是提交到pageServlet中,所以我们新建一个PageServlet,并在Servlet中获取到数据,同时做一些分页的准备,具体含义可以参照注释理解,PageServlet代码:

public class PageServlet extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    List<User> list = new ArrayList<User>();
    // 在这里我不再连接数据库而是用虚拟的数据进行测试效果,小伙伴可以连接数据库查询到之后返回一个list
    for (int i = 1; i < 7; i++) {
      User user1 = new User();
      user1.setUsername("第" + i + "个用户名");
      user1.setPassword("第" + i + "密码");
      list.add(user1);
    }
    HttpSession session = request.getSession();
    // 将数据存到session中以便于在前台获取
    session.setAttribute("userList", list);
    //获取当前页的页数并转为int类型,最终将数据存到session中
    int pageNos;
    if (request.getParameter("pageNos") == null
        || Integer.parseInt(request.getParameter("pageNos")) < 1) {
      pageNos = 1;
    } else {
      pageNos = Integer.parseInt(request.getParameter("pageNos"));
    }
    session.setAttribute("pageNos", pageNos);
    // 定义总页数并存到session中
    int countPage = 3;
    // 在实际开发中我们的总页数可以根据sql语句得到查询到的总条数,然后用总条数除每页的条数得到总页数
    session.setAttribute("countPage", countPage);
    request.getRequestDispatcher("index.jsp").forward(request, response);
  }

  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

  }

}

在上述代码中我们最终将转发到index.jsp页面,此时我们所有的数据都将显示在index.jsp中,用JSTL和EL表达式获取得到,index.jsp主要代码如下:

<body>
  <c:forEach items="${userList}" var="user" begin="${(pageNos-1)*2 }"
    end="${pageNos*2-1}">
    <center>
      <div>${user.username}</div>
    </center>
    <center>
      <div>${user.password}</div>
    </center>
  </c:forEach>
  <center>
  <c:if test="${pageNos>1 }">
<a href="pageServlet?pageNos=1" >首页</a>
<a href="pageServlet?pageNos=${pageNos-1 }">上一页</a>
</c:if>
<c:if test="${pageNos <countPage }">
<a href="pageServlet?pageNos=${pageNos+1 }">下一页</a>
<a href="pageServlet?pageNos=${countPage }">末页</a>
</c:if>
</center>
<form action="pageServlet">
<h4 align="center">共${countPage}页 
<input type="text" value="${pageNos}" name="pageNos" size="1">页
<input type="submit" value="go">
</h4>
</form>
 </body>

第二行中我们用<c:forEach >对session.setAttribute();中的内容进行获取。注意,这里我默认是每页两条数据,所以是(pageNos-1)*2,如果每页N条数据则需将2改为N,当然N也可以从后台Servlet中获取得到。

同时,因为我们在index.jsp中用了JSTL表达式,所以记得要导入引用:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

到这里我们就完成了一个简单的分页,快去试试吧。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • springboot如何开启一个监听线程执行任务

    springboot如何开启一个监听线程执行任务

    这篇文章主要介绍了springboot如何开启一个监听线程执行任务问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Java 超详细讲解异常的处理

    Java 超详细讲解异常的处理

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等
    2022-04-04
  • java设计模式之桥接模式(Bridge)

    java设计模式之桥接模式(Bridge)

    这篇文章主要为大家详细介绍了java设计模式之桥接模式Bridge,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Java使用递归复制文件夹及文件夹

    Java使用递归复制文件夹及文件夹

    这篇文章主要介绍了Java使用递归复制文件夹及文件夹,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • java程序运行时内存分配详解

    java程序运行时内存分配详解

    这篇文章主要介绍了java程序运行时内存分配详解 ,需要的朋友可以参考下
    2016-07-07
  • spring中bean的生命周期详解

    spring中bean的生命周期详解

    今天小编就为大家分享一篇关于spring中bean的生命周期详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • spring Bean的初始化过程解析

    spring Bean的初始化过程解析

    这篇文章主要介绍了spring Bean的初始化过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • SpringCloud+nacos部署在多ip环境下统一nacos服务注册ip(亲测有效)

    SpringCloud+nacos部署在多ip环境下统一nacos服务注册ip(亲测有效)

    在部署SpringCoud项目的时候分服务器部署注册同一个nacos服务,但是在服务器有多个ip存在的同时(内外网),就会出现注册服务ip不同的问题,导致一些接口无法连接访问,经过多次排查终于找到问题并找到解决方法,需要的朋友可以参考下
    2023-04-04
  • Spring @Transactional工作原理详解

    Spring @Transactional工作原理详解

    这篇文章主要介绍了Spring @Transactional工作原理详解,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 深入了解SparkSQL的运用及方法

    深入了解SparkSQL的运用及方法

    SparkSQL就是将SQL转换成一个任务,提交到集群上运行,类似于Hive的执行方式。本文给大家分享了SparkSQl的运用及方法,感兴趣的朋友跟随小编一起看看吧
    2022-03-03

最新评论