`
Eaduns
  • 浏览: 64786 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JavaWeb分页

 
阅读更多

 


SSH的分页网上有不少的例子,有利用session的,有利用分页组件的。我几个师兄原来搞的SSH项目也有一个成熟的分页插件。

具体业务实现类中的分页方法:

public List get*****(int pageNO){
            DetachedCriteria dc = DetachedCriteria.forClass(****.class);            
            List list=*****Dao.getList(dc,pageNO,15);
            int a = 0;
            if (list.equals(null)){a=1;}
            return list;
        }

 

public PageBean getBean(int pageNO)
        {
            ***** jg;
             DetachedCriteria dc = DetachedCriteria.forClass(*****.class);
            PageBean pb=collegeDao.getPageBean(dc,pageNO,15);        
            return pb;
        }

 

然后是一个PageBean的工具类,负责创建分页属性和基本逻辑。然后是页面的bean获取输出信息及分页属性。

 

下面是分页思想,一个初始化方法和一个分页实现方法:

分页的util类:

 

package com.sy.util;

import java.util.List;
@SuppressWarnings("unchecked")
public class Page {

    private int pageSize;
    private int totalPage; 
    private int rowCount;
    private int currentPage;
    private int prePage; 
    private int nextPage;
    private boolean hasNextPage;
    private boolean hasPreviousPage;
    private List list;

    public Page() {
        this.pageSize=10;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }

    public int getRowCount() {
        return rowCount;
    }

    public void setRowCount(int rowCount) {
        this.rowCount = rowCount;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getPrePage() {
        return prePage;
    }

    public void setPrePage(int prePage) {
        this.prePage = prePage;
    }

    public int getNextPage() {
        return nextPage;
    }

    public void setNextPage(int nextPage) {
        this.nextPage = nextPage;
    }

    public boolean isHasNextPage() {
        return hasNextPage;
    }

    public void setHasNextPage(boolean hasNextPage) {
        this.hasNextPage = hasNextPage;
    }

    public boolean isHasPreviousPage() {
        return hasPreviousPage;
    }

    public void setHasPreviousPage(boolean hasPreviousPage) {
        this.hasPreviousPage = hasPreviousPage;
    }

    public List getList() {
        return list;
    }

    public void setList(List list) {
        this.list = list;
    }
    

}

 

 分页的数据库操作和逻辑判断我把他单独用一个PageDaoImpl来实现:

 

package com.sy.dao.impl;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.sy.dao.BaseDao;
import com.sy.util.Page;

@SuppressWarnings("unchecked")
public class PageDaoImpl extends HibernateDaoSupport {

    private String hql;
    public Page page;
    public int start;
    public BaseDao dao;
    public void setDao(BaseDao dao) {
        this.dao = dao;
    }

    public void init(int start,String tableName){    // ͨ��init����ʵ����ij�ʼ��
       page = new Page();
       this.hql = "from "+tableName;
       this.start = start;
       setRowCount();
       setTotalPage();
       setCurrentPage();
       setPrePage();
       setNextPage();
       setPreOrNextBoolean();
    }

    public int getRowCount(){
       List list = dao.find(hql);
       if(list.isEmpty()){
        return 0;
       }
       return list.size();
    }

    public Page getPage(){
       List list = (List)getHibernateTemplate().execute(new HibernateCallback(){
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
         Query query = session.createQuery(hql);
         query.setFirstResult(getStartIndex());
         query.setMaxResults(page.getPageSize());
         return query.list();
        }   
       });
       page.setList(list);
       return page;
    }
    
    public void setPreOrNextBoolean() {
        if (page.getCurrentPage() <= 1) {
            page.setHasPreviousPage(false);
        } else {
            page.setHasPreviousPage(true);
        }
        if (page.getCurrentPage() >= page.getTotalPage()) {
            page.setHasNextPage(false);
        } else {
            page.setHasNextPage(true);
        }
    }

    public void setCurrentPage() {
        if (start < 1) {
            page.setCurrentPage(1);
        }
        if (start > page.getTotalPage()) {
            page.setCurrentPage(page.getTotalPage());
        }
        page.setCurrentPage(start);
    }

    public void setPrePage() {
        page.setPrePage(page.getCurrentPage() - 1);
    }

    public void setNextPage() {
        page.setNextPage(page.getCurrentPage() + 1);
    }

    public void setTotalPage() {
        int rowCount = getRowCount();
        int pageSize = page.getPageSize();
        if (rowCount > pageSize) {
            if (rowCount % pageSize == 0) {
                page.setTotalPage(rowCount / pageSize);
            } else {
                page.setTotalPage(1 + (rowCount / pageSize));
            }
        } else {
            page.setTotalPage(1);
        }
    }

    public void setRowCount() {
        page.setRowCount(getRowCount());
    }

    public int getStartIndex() {
        int startIndex = 0;
        if (start < 0) {
            startIndex = 0;
        } else {
            if (start > page.getTotalPage()) {
                startIndex = page.getPageSize() * (page.getTotalPage() - 1);
            } else {
                startIndex = page.getPageSize() * (start - 1);
            }
        }
        return startIndex;
    }
}

 

 然后是业务层接口,举例AdminService.java

 

//管理员service层接口
package com.sy.service;

import java.util.List;

import com.sy.util.Page;
import com.sy.vo.Admin;

public interface AdminService extends BaseService{

    
    
//分页初始化
    public void init(int pno);
//分页实现
    public Page getPage();
    
}

 

 实现类AdminServiceImpl.java

 

//管理员service层实现类
package com.sy.service.impl;

import java.util.List;

import com.sy.dao.impl.AdminDaoImpl;
import com.sy.dao.impl.PageDaoImpl;
import com.sy.service.AdminService;
import com.sy.util.Page;
import com.sy.vo.Admin;

@SuppressWarnings("unchecked")
public class AdminServiceImpl extends BaseServiceImpl implements AdminService {

        .

    public Page getPage() {
        return Pdao.getPage();
    }
    public void init(int pno) {
        String tableName="Admin";
        Pdao.init(pno,tableName);
    }
}

 

  struts的action层AdminAction.java

 

//管理员action实现类
package com.sy.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import com.sy.form.AdminForm;
import com.sy.form.LoginForm;
import com.sy.service.AdminService;
import com.sy.util.MD5;
import com.sy.util.Page;
import com.sy.vo.Admin;
@SuppressWarnings("unchecked")
public class AdminAction extends BaseAction {

        .
//查看管理员
    public ActionForward listAdmins(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        AdminService as=(AdminService)super.getBean("AdminService");
           int pno = (new Integer(request.getParameter("pno"))).intValue();
           as.init(pno);
           Page myPage = as.getPage();
           List myList = as.getPage().getList(); 
           request.setAttribute("myPage", myPage);
           request.setAttribute("AdminList", myList);
           return mapping.findForward("show");
           
    }
}
 

 

页面lookAdmin.jsp

 

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<html>
    <head>
        <meta http-equiv="Content-Language" content="zh-cn">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>SSH新闻发布</title>
    </head>
    <body>
        <center>
            <h3>
                查看管理员
            </h3>
            <br>
            <a href="./admin/addAdmin.jsp">添加管理员</a>
            <br>
            <a href="./NewsPage2.do?pno=1">查看新闻</a>
            <br>
            <table border="2" width="600">
                <tr>
                    <td>
                        用户名
                    </td>
                    <td>
                        密码
                    </td>
                    <td>
                        操作
                    </td>
                </tr>
    <c:forEach items="${requestScope['AdminList']}" var="admin">
            <tr align="center">
              <td width="20%" height="10"><c:out value="${admin.aname}" /></td>
              <td width="20%" height="10"><c:out value="${admin.apassword}" /></td>
              <td>
                <a href="./editAdmin.do?aid=<c:out value="${admin.aid}"/>">修改</a>
                &nbsp;&nbsp;
                <a href="./deleteAdmin.do?aid=<c:out value="${admin.aid}"/>" onclick="javascript:return confirm('您确定删除吗?')">删除</a>
              </td>
            </tr>
    </c:forEach>
    </table>
    <table align="center" width="500">
    <tr>
       <td align="center" colspan="10">
          <logic:present name="myPage">
            <html:link page="/AdminPage.do?pno=1">首页</html:link>
          <logic:equal name="myPage" property="hasPreviousPage" value="false">上一页</logic:equal>
          <logic:equal name="myPage" property="hasPreviousPage" value="true">
           <a href="./AdminPage.do?pno=<bean:write name="myPage" property="prePage"/>">上一页</a>
      </logic:equal>
           
           每页<bean:write name="myPage" property="pageSize"/>条记录
           共<bean:write name="myPage" property="rowCount"/>条记录
                当前第(<bean:write name="myPage" property="currentPage"/>/<bean:write name="myPage" property="totalPage"/>)页
        <logic:equal name="myPage" property="hasNextPage" value="false">下一页</logic:equal>
        <logic:equal name="myPage" property="hasNextPage" value="true">
         <a href="./AdminPage.do?pno=<bean:write name="myPage" property="nextPage"/>">下一页</a>
        </logic:equal>
           <a href="./AdminPage.do?pno=<bean:write name='myPage' property='totalPage'/>">末页</a>
        </logic:present>
      </td>
      </tr>
    </table>
        </center>
    </body>
</html>
 

 

分享到:

相关推荐

    JavaWeb分页技术与实现(含代码)

    ### JavaWeb分页技术与实现 #### 一、引言 在JavaWeb应用程序开发中,分页技术是一项非常重要的功能,特别是在处理大量数据时。合理的分页不仅可以提高用户体验,还能有效减轻服务器负担,提高系统的响应速度。...

    javaweb分页简单分页

    总的来说,实现JavaWeb分页需要结合Servlet、数据库查询、JavaBean和JSP等多个环节。理解每个部分的角色和工作原理,以及如何协同工作,是成功构建分页功能的关键。在实际项目中,可以根据需求选择合适的分页库,如...

    javaweb分页

    在Java Web开发中,分页是一项非常常见的功能,它用于处理大数据量的查询结果,以提高用户体验并减轻服务器压力。本教程将详细讲解如何通过添加一个PageBean来实现简单的Java Web分页功能。 首先,我们需要理解分页...

    javaweb分页.zip

    本示例项目"javaweb分页.zip"展示了如何在MyEclipse环境下,采用MVC(Model-View-Controller)设计模式来实现这一功能。在这个过程中,Servlet作为控制器,JSP作为视图,DAO(Data Access Object)作为模型,MySQL...

    javaWeb分页和文件上传

    以上就是关于“javaWeb分页和文件上传”的核心内容。在实际开发中,还需要考虑性能优化、安全性以及用户体验等方面的问题。对于分页,可以采用缓存技术提高查询速度;对于文件上传,可以考虑使用云存储服务,如阿里...

    模拟pageHelper的JavaWeb分页源码与开发文档.rar

    本压缩包包含的"模拟pageHelper的JavaWeb分页源码与开发文档"提供了一个理解和学习PageHelper工作原理以及如何在实际项目中应用的实例。 PageHelper是MyBatis的一个增强工具,主要目的是为了解决MyBatis在做分页...

    javaweb两中分页方法

    本文将详细介绍两种常用的JavaWeb分页方法:基于数据库查询的分页和基于内存的分页。 一、基于数据库查询的分页 1. SQL查询分页: 这种方法直接在SQL查询语句中实现分页。大多数数据库系统如MySQL、Oracle、SQL ...

    JavaWeb分页展示数据(含AJAX/JSTL/EL表达式等知识点)

    JavaWeb分页展示数据是Web应用开发中的常见需求,它涉及到多个关键技术的综合运用,包括AJAX、JSTL、EL表达式以及JSP标准动作。在这个项目中,我们将深入探讨这些技术,以便理解如何有效地在网页上实现数据的动态...

    javaweb分页技术

    JavaWeb分页技术是Web应用开发中的一个重要环节,它能够有效地提高用户体验,尤其是在处理大量数据时。本资源通过一个名为`JavaPageDemo`的示例项目,帮助初学者理解并实践这一技术。在这个项目中,结合了JavaWeb、...

    javaWeb分页的实现

    在JavaWeb开发中,分页是常见的功能,用于展示大量数据时提高用户体验。它允许用户逐步浏览信息,而不是一次性加载所有内容。本示例将深入探讨如何使用MVC(Model-View-Controller)架构模式来实现JavaWeb应用程序中...

    前端Javaweb分页实现

    在前端JavaWeb开发中,分页是一个非常常见的需求,它能有效地管理大量数据,提高用户体验。本示例提供了一个可复用的分页代码,旨在帮助开发者快速集成到自己的项目中。下面将详细介绍如何实现前端JavaWeb的分页功能...

    javaWEB分页源码

    JavaWEB分页是Web开发中的一个关键环节,它在数据量较大时,能有效地提高用户体验,避免一次性加载大量数据导致页面响应慢或者浏览器崩溃。在本套源码中,我们将探讨如何实现JavaWEB的分页功能,以及相关的重要概念...

    JavaWeb实现分页查询案例

    在JavaWeb开发中,分页查询是一个非常常见的需求,它能有效地提高网页加载速度,提升用户体验。本案例通过原生的PageBean实现分页查询,采用JDBC(Java Database Connectivity)进行数据库操作,Servlet作为控制层...

    javaweb经典分页源码

    JavaWeb经典分页源码是Web开发中常见的一种技术实现,它主要用于处理大量数据的展示问题,提升用户体验。在Web应用程序中,如果一次性加载所有数据,不仅会消耗大量的服务器资源,还可能导致用户界面响应速度变慢。...

    JavaWeb分页的实现代码实例

    JavaWeb分页实现代码实例 JavaWeb分页实现代码实例是指在JavaWeb开发中实现分页功能的代码实例,通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。 JavaWeb分页实现代码实例可以分为两种...

    JavaWeb 数据库 分页 原理 解析 下载

    JavaWeb 数据库 分页 原理 解析 下载 简单易懂 将下载后的压缩文件解压后可以得到page_csdn文件夹,用eclipse导入即可,运行之前请运行page.sql数据库脚本,我使用的是MySQL数据库。 部署到Tomcat服务器后,在...

    javaweb分页原理详解

    在Java Web开发中,分页是一种常见的功能,用于处理大量数据时提高用户体验,避免一次性加载所有数据导致页面响应速度慢。本篇文章将深入讲解Java Web分页的原理,并通过实例代码展示如何实现。 分页的基本原理是将...

    javaweb分页技术详解及代码.pdf

    Java Web分页技术是开发Web应用时不可或缺的一部分,特别是在处理大量数据展示时,为了提高用户体验,通常需要将数据分页显示。本篇将详细介绍Java Web中的分页技术和代码实现。 一、分页技术概述 在Java Web开发...

    javaweb实现分页代码

    分页代码 action接受参数负责调用service,service调用dao查询具体的分页数据,同时将返回的数据封装到PageBean中,再返回action以PageBean。适合初学者参考。注:还包含类似动态显示条(sql数据加到十几页可以看到...

    javaweb实现分页以及数据库增删改查

    在Java Web开发中,分页查询是不可或缺的功能,它能够帮助用户有效地管理和浏览大量数据,减轻服务器负担,提高用户体验。本教程将详细讲解如何利用JDBC(Java Database Connectivity)实现数据库的分页查询以及基本...

Global site tag (gtag.js) - Google Analytics