`

java仿谷歌分页

阅读更多
    昨天写了几个分页后,今天仿写谷歌的分页!其中遇到了算法和对象封装的问题,其中重要的是算法的选择。

下面分享一下我的主要代码:

javaBean中的Student和Pagelei。

student类:

Code:
import java.io.Serializable;   
  
public class Student implements Serializable {   
  
    /**  
     *   
     */  
    private static final long serialVersionUID = 1L;   
       
    //成员属性   
    private int id;  //递增的id序列   
    private String name;//名称   
    private int age;//年龄   
    private String email;//邮箱   
       
       
    public Student(){   
           
    }   
       
    public Student(String name,int age,String email){   
        this.name=name;   
        this.age=age;   
        this.email=email;   
    }   
  
    public int getId() {   
        return id;   
    }   
  
    public void setId(int id) {   
        this.id = id;   
    }   
  
    public String getName() {   
        return name;   
    }   
  
    public void setName(String name) {   
        this.name = name;   
    }   
  
    public int getAge() {   
        return age;   
    }   
  
    public void setAge(int age) {   
        this.age = age;   
    }   
  
    public String getEmail() {   
        return email;   
    }   
  
    public void setEmail(String email) {   
        this.email = email;   
    }   
  
       
       
}  

Page类:

Code:
import java.util.List;   
  
public class Page {   
       
    private int nowpage;//当前页   
    private int countrecord;//总记录数   
    private int countpage;//总页数   
       
       
    public static final int PAGESIZE=5;//每页显示的记录数   
       
       
    private int sumindex =6;//索引的sum值   
    private int startindex = 1;//开始的索引值   
    private int endindex = 3;//结束的索引值   
       
       
    private List allentities;   
       
    public Page(){   
           
    }   
       
    public void index(int nowpage){ //可变   
        /*计算出索引的位置  
         *   
         * */  
        this.endindex = nowpage+2;   
        if(this.endindex-5>0){   
            if(this.endindex <= this.countpage){   
                this.startindex = this.endindex-5;   
            }else{   
                this.endindex = this.countpage;   
                this.startindex = this.endindex-5;   
            }   
        }else{   
            this.startindex = 1;   
        }   
    }   
       
    public int getNowpage() {   
        return nowpage;   
    }   
    public void setNowpage(int nowpage) {   
        this.nowpage = nowpage;   
    }   
    public int getCountrecord() {   
        return countrecord;   
    }   
    public void setCountrecord(int countrecord) {   
        this.countrecord = countrecord;   
    }   
    public int getCountpage() {   
        return countpage;   
    }   
    public void setCountpage(int countpage) {   
        this.countpage = countpage;   
    }   
    public int getStartindex() {   
        return startindex;   
    }   
    public void setStartindex(int startindex) {   
        this.startindex = startindex;   
    }   
    public int getEndindex() {   
        return endindex;   
    }   
    public void setEndindex(int endindex) {   
        this.endindex = endindex;   
    }   
    public List getAllentities() {   
        return allentities;   
    }   
    public void setAllentities(List allentities) {   
        this.allentities = allentities;   
    }   
  
    public int getSumindex() {   
        return sumindex;   
    }   
  
    public void setSumindex(int sumindex) {   
        this.sumindex = sumindex;   
    }   
  
}  

逻辑处理类:

Code:
public class ListStusServlet extends HttpServlet {   
  
    @Override  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)   
            throws ServletException, IOException {   
        this.doPost(req, resp);   
    }   
  
    @Override  
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)   
            throws ServletException, IOException {   
       //1.设置编码   
        req.setCharacterEncoding("utf8");   
           
  
           
       //2.获取当前页   
        Page stupage = new Page();   
        int nowpage=1;   
        String npage = req.getParameter("nowpage");   
           
        if(npage!=null){   
            nowpage = Integer.valueOf(npage);   
        }   
           
           
           
        //3、创建sevice服务操作对象   
        StudentServiceImpl ssi = new StudentServiceImpl();   
           
        int lastpage = ssi.getCountPage();   
           
           
       
        List<Student> allentities = ssi.getNowPageInfo(nowpage);   
           
        stupage.setCountpage(lastpage);   
        stupage.setNowpage(nowpage); //存入到page中   
        stupage.setAllentities(allentities);//将结果集放进page中   
        stupage.index(nowpage);   
        System.out.println("页码是:"+nowpage+"-start:"+stupage.getStartindex()+" / end:"+stupage.getEndindex());   
        req.setAttribute("stupage", stupage);   
           
           
        req.getRequestDispatcher("liststs.jsp").forward(req, resp);   
    }   
  
}  

操作类:

Code:
public class StudentDaoImpl implements StudentDao {   
  
    // 数据库操作的对象   
    private Connection conn;   
    private PreparedStatement pstmt;   
    private ResultSet rs;   
    // 每页显示的记录数   
    private static final int PAGESIZE = 5;   
  
    // 获取总页数   
    public int getCountPage() {   
        return getCountRecord() % PAGESIZE == 0 ? getCountRecord() / PAGESIZE   
                : getCountRecord() / PAGESIZE + 1;   
    }   
  
    // 获取总记录   
    public int getCountRecord() {   
        // 1、定义返回结果   
        int countrecord = 0;   
        // 2、获取数据库连接对象   
        conn = DBConn.getConn();   
        // 3、创建预处理的sql语句   
        String sql = "select count(*) from student";   
  
        try {   
            // 4、根据预处理的sql语句创建预处理的操作对象   
            pstmt = conn.prepareStatement(sql);   
            // 5、查询的时候 直接执行   
            rs = pstmt.executeQuery();   
            // 6、判断   
            if (rs.next()) {   
                countrecord = rs.getInt(1);   
            }   
        } catch (SQLException e) {   
            e.printStackTrace();   
        } finally {   
            DBConn.close(rs, pstmt);   
        }   
        return countrecord;   
    }   
  
    // 获取当前页信息   
    public List<Student> getNowPageInfo(int nowpage) {   
        //1、定义返回结果变量   
        List<Student> allentities = new ArrayList<Student>();   
        //2、获取连接对象   
        conn = DBConn.getConn();   
         try {   
             //3、根据预处理的sql语句创建预处理的操作对象   
            pstmt = conn.prepareStatement("select id,name,age,email from student limit ?,?");   
             //4、定义下标变量 并赋值   
            int index = 1;   
            pstmt.setInt(index++, (nowpage-1)*PAGESIZE);   
            pstmt.setInt(index++, PAGESIZE);   
            //5、查询的时候 直接执行   
            rs = pstmt.executeQuery();   
            //判断   
            while(rs.next()){   
                //创建实体bean对象   
                Student entity = new Student();   
                entity.setId(rs.getInt("id"));   
                entity.setName(rs.getString("name"));   
                entity.setAge(rs.getInt("age"));   
                entity.setEmail(rs.getString("email"));   
                //添加到集合中   
                allentities.add(entity);   
            }   
         } catch (SQLException e) {   
            e.printStackTrace();   
        }finally{   
            DBConn.close(rs, pstmt);   
        }   
        return allentities;   
    }   
  
    public static void main(String[] args) {   
        StudentDaoImpl sdi = new StudentDaoImpl();   
  
/*      int countrecord = sdi.getCountRecord();  
 
        System.out.println(countrecord);  
          
        System.out.println(sdi.getCountPage());*/  
           
        List<Student> allentities = sdi.getNowPageInfo(7);   
           
        for(Student entity : allentities){   
            System.out.println(entity.getName());   
        }   
           
           
    }   
  
}  

总结:今天的感觉是:学习很重要,要多动脑,多练习!
分享到:
评论

相关推荐

    仿谷歌分页,仿谷歌分页,分页,最简单的分页

    仿谷歌分页,分页,最简单的分页。其中包括对象的封装。

    仿google分页完整代码

    仿google分页实例代码,很好的PHP分页代码。

    jsp仿百度、谷歌分页解决分页太多,始终显示一部分的页码

    仿百度分页,谷歌分页页码处理 解决分页太多,智能始终显示一部分的效果 可以依照这个思路自己改,很好上手,分页思想 都有注释

    java仿GOOGLE数字分页

    java仿GOOGLE数字分页,内含20来种分页样式。 jquery分页。

    java 模仿google的分页代码

    java,jsp 模仿google的分页代码 代码很简单,就是把分页做成一个标签在jsp页面中直接调用就可以了

    java数字分页

    java仿GOOGLE数字分页,内含20来种分页样式。 jquery分页。

    java仿百度假分页代码实现的详解

    主要介绍了java仿百度假分页代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    JAVA分页完美解决方案

    JAVA分页是个经典问题,本人从网上搜集资料,并通过编程,较为完美地决地了这个问题,源码已经上传CSDN,值得下载! 我的方案是用两个TAG完成分页显示数据和页码,一个TAG(displaytag)专门显示数据,一个TAG...

    JAVA分页完美解决方案修订版

    JAVA分页是个经典问题,本人从网上搜集资料,并通过编程,较为完美地决地了这个问题,浏览、增加、删除、修改、查看、搜索都可以回到原来的页码,源码已经上传CSDN,值得下载! 我的方案是用两个TAG完成分页显示数据...

    Java分页处理(使用pager-taglib详细讲解两种分页的实现)

    会形成多种不一样的分页页面,风格各异,她自带的DEMO就有七种左右的分页风格,包括Google的分页风格。而需要订制自已的风格的分页页 面也非常简单。 分页方式有两种: 第一种是页面分页,适合查询结果不大情况 ...

    不错的Java经典分页

    样式修饰,经典分页,通俗易懂,初学者更适合。

    JSP实现类似百度,google的分页

    JSP实现类似百度,google的分页.JSP,仿,google,分页,servlet分页

    查询条件保存及google分页

    采用和google分页类似的形式,只是长得丑点

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    news例子该例子用反射分页实现

    该例子用反射分页实现,很不错的一段代码,仅供参考

    JAVA上百实例源码以及开源项目源代码

    Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...

    新版java整合influxdb所需包

    使用influxdb依赖的相关库jar包集合 包括converter-moshi-2.3.0.jar google-collections-1.0-rc1.jar gson-2.8.5.jar guava-27.0-jre.jar influxdb-java-2.4.jar logging-interceptor-3.11.0.jar moshi-1.5.0.jar ...

    JSTL JSP 自定义标签 分页

    jh-plugins特点:高效、轻巧、简单、适用(可融合与任何B/S架构的java项目) jh-plugins使用详解: 导入jh-plugins.jar,引入标签库; 1.分页标签库 PageModel pagem = new PageModel(); pagem.setDtotal(168); pagem....

    java开源包4

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包101

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

Global site tag (gtag.js) - Google Analytics