要实现分页时 原理是怎么样的??
我的理解是..
直接取出全部 放到session里 只在jsp中来回控制呢??
还是 每次从数据库中取出全部记录后 提取要现实的部分放到session里 ???(等于点一下页面数 就访问一次数据库)各位发表一下意见吧 
我还是个初学者 或许我理解的压根就都不对(我用structs hibernate)   

解决方案 »

  1.   

    在没有用框架之前 
    我一直用一个 自定义pageModel  类  手动 分页xxxxxxxxx/**
     * 分页处理类
     * @author Administrator
     *
     */
    public class PageModel {

    //当前是第几页
    private int pageNo;

    //每页显示数量(大小)
    private int pageSize;

    //总记录数
    private int toTalRecords;

    //总页数
    private int toTalPageNos; //查询结果集list
    private List resultList;

    /**
     * 拿到当前是第几页
     * @return
     */
    public int getPageNo() {
    return pageNo;
    } /**
     * 设置当前是第几页
     * @param pageNo
     */
    public void setPageNo(int pageNo) {
    this.pageNo = pageNo;
    } /**
     * 拿到每页显示数量
     * @return
     */
    public int getPageSize() {
    return pageSize;
    } /**
     * 设置每页显示数量
     * @param pageSize
     */
    public void setPageSize(int pageSize) {
    this.pageSize = pageSize;
    } /**
     * 拿到总记录数
     * @return
     */
    public int getToTalRecords() {
    return toTalRecords;
    } /**
     * 设置总记录数
     * @param toTalRecords
     */
    public void setToTalRecords(int toTalRecords) {
    this.toTalRecords = toTalRecords;
    } /**
     * 拿到总页数
     * @return
     */
    public int getToTalPageNos() {
    return (this.toTalRecords+this.pageSize-1)/this.pageSize;
    } /**
     * 设置总页数
     * @param toTalPageNos
     */
    public void setToTalPageNos(int toTalPageNos) {
    this.toTalPageNos = toTalPageNos;
    } /**
     * 放回查询结果集
     * 分页查询
     * @return
     */
    public List getResultList() {
    return resultList;
    } /**
     * 设置查询结果集
     * @param resultList
     */
    public void setResultList(List resultList) {
    this.resultList = resultList;
    }}然后在  jsp 页面里 拿到 结果集实例pageModel 想怎么用就怎么用  
    还没用到 框架  知识有限 望高手补充。。其实 要查询多少 也怎么保存 也是有讲究的  
    “还是 每次从数据库中取出全部记录后 提取要现实的部分放到session里 ???(等于点一下页面数 就访问一次数据库) 
    ”分页查询 我认为就是 避免 全部查询结果出来 而使 用到哪里 就查哪里 
      

  2.   

    还有 要补充一点 就是 这个类里面 还少了   上一页  下一页  首页 尾页  等等 操作  其实也就是几个方法  补充进去就可以了  都封装到这个PageModel 里面  其实这种方法 是我这个初学这 所用的  没有涉及框架 部分  ,见谅。
      

  3.   

    分页一般分两种 一种是在查询的时候就进行分页 另一种是对LIST进行操作 一般情况下都是用前面那个 你说你用了HIBERNATE 你完全可以利用里面的Query的 setFirstResult();
    setMaxResults();进行分页
      

  4.   

    楼主不学数据库的吗?各种数据库产品基本都有自己的分页语句,查一下即可。用语句取出你要的记录,取到什么,jsp就展示什么。
      

  5.   

    看到大家的意见 我思路清晰了很多.. 你们都提到了比较关键的部分 谢了 呵呵..我用操纵 list方法 实现了一遍  缺点就页面的java代码增加了不少(我是尽量避免页面逻辑代码的)看来最好的是根据页数 在数据库中查询前设置开始和结尾
    (主要研究了java语言方面 对数据库了解不深 都是看到书中简单的查询语句用到的
     看来非得多研究数据库不可了)
    3楼的 那2方法不错~~ 
      

  6.   

    加我~~我给一个很好的分页代码你~~~而且处处都可以用··在页面只要这样一句
    <testPaging:paging pageSize="4" numberCount="5" virtualCount="111"/>
    就可以实现分页了~~~~~
      

  7.   

    加我~~我给一个很好的分页代码你~~~而且处处都可以用··在页面只要这样一句
    <testPaging:paging pageSize="4" numberCount="5" virtualCount="111"/>
    就可以实现分页了~~~~~
    JAVA支持自定义标签···