• JavaWeb中的简单分页


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

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

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

     1 public class User {
     2     private String username;
     3     private String password;
     4     public String getUsername() {
     5         return username;
     6     }
     7     public void setUsername(String username) {
     8         this.username = username;
     9     }
    10     public String getPassword() {
    11         return password;
    12     }
    13     public void setPassword(String password) {
    14         this.password = password;
    15     }
    16     
    17 }

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

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

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

     1   <body>
     2     <c:forEach items="${userList}" var="user" begin="${(pageNos-1)*2 }"
     3         end="${pageNos*2-1}">
     4         <center>
     5             <div>${user.username}</div>
     6         </center>
     7         <center>
     8             <div>${user.password}</div>
     9         </center>
    10     </c:forEach>
    11     <center>
    12     <c:if test="${pageNos>1 }">
    13 <a href="pageServlet?pageNos=1" >首页</a>
    14 <a href="pageServlet?pageNos=${pageNos-1 }">上一页</a>
    15 </c:if>
    16 <c:if test="${pageNos <countPage }">
    17 <a href="pageServlet?pageNos=${pageNos+1 }">下一页</a>
    18 <a href="pageServlet?pageNos=${countPage }">末页</a>
    19 </c:if>
    20 </center>
    21 <form action="pageServlet">
    22 <h4 align="center">共${countPage}页  
    23 <input type="text" value="${pageNos}" name="pageNos" size="1">24 <input type="submit" value="go">
    25 </h4>
    26 </form>
    27   </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"%>

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

  • 相关阅读:
    DDOS工具介绍转载 规格严格
    MSB和LSB 规格严格
    Java 脚本 规格严格
    Derby配置总结(原创) 规格严格
    new ImageIcon(String filename)的路径问题 规格严格
    转载JNI(Windows) 规格严格
    C++ 0x新特性:详细讲解lambda表达式
    Linux信号量线程控制
    虚拟机VMware中安装 RedHateEL4(图解)
    2011年7月编程语言排行榜:COBOL五角大楼出品
  • 原文地址:https://www.cnblogs.com/xwlych/p/6017833.html
Copyright © 2020-2023  润新知