zoukankan      html  css  js  c++  java
  • javaweb基础——简单的分页逻辑

    前言:分页有两种,真分页和假分页,两者区别点击这里,我也有好多代码都是看他的。话不多说,直接上代码。

    一.首先创建一个页面信息实体类。

    package com;
    
    import java.util.List;
    
    public class PageBean {
    
    
            private int page;//当前页
            
            private int pagesize;//页面数据条数
            
            private int indexpage=1;//首页
            
            private int endpage;//尾页
            
            private int count;//总数据条数
            
            private int pagenumber;//总页面数
            
            private List<Object> list;//得到的数据放入list集合中
            
            public int getPage() {
                return page;
            }
            public void setPage(int page) {
                this.page = page;
            }
            public int getPagesize() {
                return pagesize;
            }
            public void setPagesize(int pagesize) {
                this.pagesize = pagesize;
            }
            public int getIndexpage() {
                return indexpage;
            }
            public void setIndexpage(int indexpage) {
                this.indexpage = indexpage;
            }
            public int getEndpage() {
                
                return endpage;
            }
            public void setEndpage() {
                this.endpage=pagenumber;
            }
            public int getCount() {
                this.count=list.size();
                return count;
            }
            public void setCount() {
                this.count=list.size();
            }
            
            public int getPagenumber() {
                return pagenumber;
            }
            public void setPagenumber() {
                this.pagenumber=(count%pagesize==0)?count/pagesize:count/pagesize+1;
            }
            public List<Object> getList() {
                return list;
            }
            public void setList(List<Object> list) {
                this.list = list;
            }
            @Override
            public String toString() {
                return "PageBean [page=" + page + ", pagesize=" + pagesize + ", indexpage=" + indexpage + ", endpage="
                        + endpage + ", count=" + count + ", pagenumber=" + pagenumber + ", list=" + list + "]";
            }
    
        }

    2.接着创建一个接收前端页面传过来的值和返回值给前端的servlet

    package com;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    @SuppressWarnings("serial")
    public class FirstServlet extends HttpServlet{
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            
            
            
            // TODO Auto-generated method stub
            System.out.println("-----------------------------进入-------------------------");
            
            
            //定义一个对象集合,存储数据,并且创建了53条数据
            List<Object> list1=new ArrayList<Object>();
            for(int i=0;i<53;i++){
                User user=new User();
                user.setAge(11);
                user.setName("bobo"+i);
                list1.add(user);
            }
    
            
            //1.接受前端的要跳转到的目标页的页面值
            String str_page=    req.getParameter("page");
            
            
            
            
            //2.创建pageBean实例
            PageBean pagebean=new PageBean();
            pagebean.setList(list1);    //将53条数据的集合放到页面中
            pagebean.setCount();        //数据条数
            pagebean.setPagesize(5);    //每页大小
            pagebean.setPagenumber();//总页面数
            pagebean.setEndpage();    //伟业
            pagebean.setIndexpage(1);    //首页
    
                
            //3.定义一个集合,该集合存放目标页要显示的5条数据,最后一页不一定是5条
            List<Object> currentData=new ArrayList<Object>();
            //4.1.判断前端要跳转到的目标页的页面值,我这里初始化页面是从servlet进入,所以首次是一个空值。2.如果已经是首页,但用户的错误操作点击上一页
            //那目标也应该还是首页,
            if(str_page==null||Integer.parseInt(str_page)<1)
            {
                pagebean.setPage(1);
            
            }
            //如果为尾页,还点击下一页,那目标也还是在尾页
            else if(Integer.parseInt(str_page)>pagebean.getPagenumber()){
                pagebean.setPage(pagebean.getPagenumber());
            }
            //其他正常情况
            else{
                pagebean.setPage(Integer.parseInt(str_page));
            }
            
            //确定目标页显示的数据列表
            for(int index=(pagebean.getPage()-1)*pagebean.getPagesize();index<pagebean.getPage()*pagebean.getPagesize()&&index<pagebean.getCount();index++){
                User user=new User();
                currentData.add(list1.get(index));
            }
            
    //        System.out.println(pagebean.toString());
            HttpSession session=req.getSession();
            //    session.setAttribute("data", data);
                
    //            System.out.println(currentData.toString());
                //session.setAttribute("currentPage", currentPage);
            //传递当前页应取得的数据,和页面信息
              session.setAttribute("pageInfo", pagebean);
             session.setAttribute("userList", currentData);
            req.getRequestDispatcher("first.jsp").forward(req, resp);
        }
        
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            // TODO Auto-generated method stub
        doGet(req,resp);
    
    }
        }

    3.最后,写jsp代码

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"
       import="java.util.*" 
       import="com.User"
       import="com.PageBean"%>
        
        <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     <%  List<User> userList=(List<User>)session.getAttribute("userList");
             request.setAttribute("userList",userList);
             PageBean pageBean=(PageBean)session.getAttribute("pageInfo");
              request.setAttribute("pageBean",pageBean);
         %>  
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    <script type=“text/javascript" src="jquery-1.4.3.min.js"></script>
    <script type="text/javascript" src="first.js"></script>
    </head>
    <body>
    <div id="content_right">
                            <br />
                            <br />
    
                            <div class="btwz">
                                人员列表
                            </div>
                            <br>
                            <form name="form1" action="Staff_InfoServlet" method="post">
                                <table cellspacing="1" class="table">
                                    <tr class="table_header">
                                        <td valign="middle" align="left">
                                            姓名
                                        </td>
                                        <td valign="middle" align="left">
                                            年龄
                                        </td>
                                     
                                    </tr>
                                    <c:forEach items="${userList}" var="list">
                                    <tr class="row2" onMouseOver="this.className='row1'"
                                        onMouseOut="this.className='row2'">
                                        <td valign="middle" align="left">
                                            ${list.name}
                                        </td>
                                        <td valign="middle" align="left">
                                            ${list.age}
                                        </td>
                                  </tr>
                                 </c:forEach>
                                 
                                </table>
                            </form>
                           
                       
    
                            <p class="paging">
                                <a href="/Test/First.action?page=${pageBean.indexpage}">首页</a>
                                <a href="/Test/First.action?page=${pageBean.page-1}">    &lt; 上一页 </a>
                                <strong>第${pageBean.page}页/共${pageBean.pagenumber}页</strong>
                                <a href="/Test/First.action?page=${pageBean.page+1}">下一页 &gt;</a>
                              
                            </p>
                            <br />
                            <br />
                        </div>
                    </div>
                </div>
    </body>
    </html>

      注释已经很详细了,基本上很明了。我也不做过多的赘述了。以后有发现再来。

  • 相关阅读:
    ElEmentUI选择器弹出框定位错乱问题解决(弹出框出现在左上角)
    Element中(Notification)通知组件字体修改(Vue项目中Element的Notification修改字体)
    解决谷歌浏览器设置font-family属性不起作用,(css中设置了font-family:没有用)css字体属性没用
    开发环境Vue访问后端接口教程(前后端分离开发,端口不同下跨域访问)
    nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.报错解决
    ssm项目中中文字符乱码
    idea使用PlantUML画类图教程
    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3报错解决
    安装anaconda python时只能安装到默认文件夹&& 安装提示文件夹以存在问题
    生产者消费者代码学习,Producer_Consuner
  • 原文地址:https://www.cnblogs.com/zuoluwo/p/11552904.html
Copyright © 2011-2022 走看看