java-SSH2实现数据库和界面的分页_java

分页应该是在我们开发web应用时经常要做的工作,能够比较简洁的实现数据库和视图层的分页十分重要。

在数据库层利用hibernate进行数据库的分页,将从数据库中查询出的数据封装为javabean;在视图层就可以方便的实现分页。

创建PageBean

package com.fishing.common.bean; 

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

  private List list; // 要返回的某一页的记录列表 

  private int allRow; // 总记录数
  private int totalPage; // 总页数
  private int currentPage; // 当前页
  private int pageSize; // 每页记录数 

  private boolean isFirstPage; // 是否为第一页
  private boolean isLastPage; // 是否为最后一页
  private boolean hasPreviousPage; // 是否有前一页
  private boolean hasNextPage; // 是否有下一页 

  public List getList() {
    return list;
  } 

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

  public int getAllRow() {
    return allRow;
  } 

  public void setAllRow(int allRow) {
    this.allRow = allRow;
  } 

  public int getTotalPage() {
    return totalPage;
  } 

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

  public int getCurrentPage() {
    return currentPage;
  } 

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

  public int getPageSize() {
    return pageSize;
  } 

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

  /** */
  /**
   * 初始化分页信息
   */
  public void init() {
    this.isFirstPage = isFirstPage();
    this.isLastPage = isLastPage();
    this.hasPreviousPage = isHasPreviousPage();
    this.hasNextPage = isHasNextPage();
  } 

  /** */
  /**
   * 以下判断页的信息,只需getter方法(is方法)即可
   *
   * @return
   */ 

  public boolean isFirstPage() {
    return (currentPage == 1);// 如是当前页是第1页
  }
  public boolean isLastPage() {
 return currentPage == totalPage; //如果当前页是最后一页
}
  public boolean isHasPreviousPage() {
 return currentPage != 1; //只要当前页不是第1页
}
  public boolean isHasNextPage() {
 return currentPage != totalPage; //只要当前页不是最后1页
}
  /** */
  /**
   * 计算总页数,静态方法,供外部直接通过类名调用
   *
   * @param pageSize
   *      每页记录数
   * @param allRow
   *      总记录数
   * @return 总页数
   */
  public static int countTotalPage(final int pageSize, final int allRow) {
    int totalPage = allRow % pageSize == 0 ? allRow / pageSize : allRow
        / pageSize + 1;
    return totalPage;
  } 

  /** */
  /**
   * 计算当前页开始记录
   *
   * @param pageSize
   *      每页记录数
   * @param currentPage
   *      当前第几页
   * @return 当前页开始记录号
   */
  public static int countOffset(final int pageSize, final int currentPage) {
    final int offset = pageSize * (currentPage - 1);
    return offset;
  } 

  /** */
  /**
   * 计算当前页,若为0或者请求的URL中没有"?page=",则用1代替
   *
   * @param page
   *      传入的参数(可能为空,即0,则返回1)
   * @return 当前页
   */
  public static int countCurrentPage(int page) {
    final int curPage = (page == 0 ? 1 : page);
    return curPage;
  }
}

在Dao的抽象接口BaseDao中添加方法:

public List queryForPage(final String hql, final int offset,
      final int length);
在Dao的实现类JianSheDWDaoImpl中实现方法
public List queryForPage(final String hql, final int offset,
      final int length) {
    List list = getHibernateTemplate().executeFind(new HibernateCallback() { 

      public Object doInHibernate(Session session)
          throws HibernateException, SQLException {
        Query query = session.createQuery(hql);
        query.setFirstResult(offset);
        query.setMaxResults(length);
        List list = query.list();
        return list; 

      }
    }); 

    return list;
  }

在service抽象层接口JianSheDWService中添加方法:

public PageBean queryForPage(int pageSize,int currentPage);

在service实现类中实现方法:

public PageBean queryForPage(int pageSize, int page) {
    final String hql = "from JianSheDWBean"; // 查询语句
    int allRow = this.baseDao.getAllRowCount(hql); // 总记录数
    int totalPage = PageBean.countTotalPage(pageSize, allRow); // 总页数
    final int offset = PageBean.countOffset(pageSize, page); // 当前页开始记录
    final int length = pageSize; // 每页记录数
    final int currentPage = PageBean.countCurrentPage(page);
    List<JianSheDWBean> list = this.baseDao.queryForPage(hql, offset, length); // "一页"的记录 

    // 把分页信息保存到Bean中
    PageBean pageBean = new PageBean();
    pageBean.setPageSize(pageSize);
    pageBean.setCurrentPage(currentPage);
    pageBean.setAllRow(allRow);
    pageBean.setTotalPage(totalPage);
    pageBean.setList(list);
    pageBean.init();
    return pageBean; 

  }

在视图层action中建立分页模型

package com.fishing.action.lcq;
import com.fishing.common.bean.JianSheDWBean;
import com.fishing.common.bean.PageBean;
import com.fishing.service.lcq.JianSheDWService;
import com.opensymphony.xwork2.ActionSupport; 

@SuppressWarnings("serial")
public class GetInfoJSDWListAction extends ActionSupport { 

  private int page; // 第几页 

  private PageBean pageBean; // 包含分布信息的bean 

  private JianSheDWBean jianSheDWBean;
  // private PageBean page;
  private JianSheDWService jianSheDWService; 

  public int getPage() {
    return page;
  } 

  public void setPage(int page) {
    this.page = page;
  } 

  public PageBean getPageBean() {
    return pageBean;
  } 

  public void setPageBean(PageBean pageBean) {
    this.pageBean = pageBean;
  } 

  public JianSheDWBean getJianSheDWBean() {
    return jianSheDWBean;
  } 

  public void setJianSheDWBean(JianSheDWBean jianSheDWBean) {
    this.jianSheDWBean = jianSheDWBean;
  } 

  public JianSheDWService getJianSheDWService() {
    return jianSheDWService;
  } 

  public void setJianSheDWService(JianSheDWService jianSheDWService) {
    this.jianSheDWService = jianSheDWService;
  } 

  @Override
   public String execute() throws Exception {   

   //分页的pageBean,参数pageSize表示每页显示记录数,page为当前页
   this.pageBean = jianSheDWService.queryForPage(10, page);
   return SUCCESS;
  }
}

在jsp中编写分页

<tr class="odd">
                          <td> 

                          </td>
                          <td>
                            <s:if test="%{pageBean.currentPage == 1}">
                           首页   上一页
                          </s:if>
                            <s:else>
                              <a href="jianguan/getJSDWInfos.action?page=1">首页</a>
                              <a
                                href="jianguan/getJSDWInfos.action?page=<s:property value="%{pageBean.currentPage-1}"/>" />上一页</a> 

                            </s:else>
                          </td>
                          <td>
                            <s:if test="%{pageBean.currentPage != pageBean.totalPage}"> 

                              <a
                                href="jianguan/getJSDWInfos.action?page=<s:property value="%{pageBean.currentPage+1}"/>">下一页</a>
                              <a
                                href="jianguan/getJSDWInfos.action?page=<s:property value="pageBean.totalPage"/>">尾页
                              </a>
                            </s:if>
                            <s:else>
                           下一页 尾页
                          </s:else>
                          </td> 

                          <td>
                            <div align="center">
                              页次
                              <s:property value="pageBean.currentPage" />
                              /
                              <s:property value="pageBean.totalPage" />
                                共
                              <s:property value="pageBean.allRow" />
                              记录
                            </div>
                            <div align="center"></div>
                          </td>
                        </tr> 

 上面只是代码的实现,没有说明配置文件的配置,读者根据情况配置。

希望本文所述对你有所帮助,SSH2实现数据库和界面的分页内容就给大家介绍到这里了。希望大家继续关注我们的网站!想要学习java可以继续关注本站。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, ssh2分页
数据库分页
mysql数据库实现分页、oracle数据库实现分页、数据库怎么实现分页、数据库实现分页、ssh2上传图片到数据库,以便于您获取更多的相关知识。

时间: 2024-09-26 15:00:00

java-SSH2实现数据库和界面的分页_java的相关文章

Java+MyEclipse+Tomcat (五)DAO和Java Bean实现数据库和界面分开操作

        正如前面一篇文章的介绍,当使用Servlet提交表单和JSP数据库查询时,总是相互交叉着的处理,要么在JSP中通过<%...%>内嵌Java代码操作数据库,要么JSP中通过Post方法提交表单Form,在Java中通过Servlet获取请求/响应,再通过Java中out.println("<HTML>...")输出数据库中值.         此篇文章主要讲述通过DAO和Java Bean操作数据库,把链接数据库.数据库操作.前端界面显示分模块化

将Java程序与数据库进行连接的操作方法_java

一个网络关系数据库应用系统是一个三层次结构.客户机与服务器采用网络连接,客户机端应用程序按通信协议与服务器端的数据库程序通信:数据库服务程序通过SQL命令与数据库管理系统通信. Java程序与数据库连接方法有两种.一种是使用JDBC-ODBC桥接器与数据库连接,一种是用纯Java的JDBC驱动程序实现与数据库连接.使用JDBC-ODBC 桥接器与数据库连接 Java程序使用JDBC-ODBC 桥接器与数据库连接,Java程序与数据库通信的过程是: 先由数据库应用程序向ODBC驱动管理器发出API

使用java swing实现qq登录界面示例分享_java

用Java Swing做的一个QQ登录界面 复制代码 代码如下: import java.awt.Container;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JCheckBox;import javax

Java 连接Access数据库的两种方式_java

java连接MS Access的两种方式: 1.JDBC-ODBC Java连接Access可以使用MS自带的管理工具-->数据源(ODBC)设置建立连接,这样就不需要导入jar.但是,如此一来程序部署的每个机器上都要进行设置不方面.所以现在不会使用啦. 2.JDBC java也可以和连接其他数据库一样连接MS Access,导入数据库相应的jar包,进行连接. 复制代码 代码如下: java Access JDBC jar包:Access_JDBC30.jar 具体连接,参考下面代码: 复制代

java连接mysql数据库乱码的解决方法_java

解决方法一: mysql安装时候的编码, 看下my.ini,有无 复制代码 代码如下: [mysql] default-character-set=utf8 [client] default-character-set=utf8 [mysqld] default-character-set=utf8创建表的时候设置: DROP TABLE IF EXISTS `Company`; CREATE TABLE IF NOT EXISTS `Company` ( `Cname` VARCHAR(10)

java数据库登陆界面,在最下面的ActionPerformed中,数据库的语句是不是有错?

问题描述 java数据库登陆界面,在最下面的ActionPerformed中,数据库的语句是不是有错? import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.util.*; import java.sql.*; public class Login extends Frame implements ActionListener { JLab

急!!大于30000 求java编写 人力资源管理系统框架界面及数据库 。

问题描述 大于30000求java编写人力资源管理系统框架界面及数据库.需求,交易方式请看这里:http://union.zhubajie.com/?u=5161194&l=http://task.zhubajie.com/877840/

JSP数据库操作例程 - 数据分页显示

js|分页|数据|数据库|显示 <%-- 作者:何志强[hhzqq@21cn.com] 日期:2000-08-03 版本:1.0 功能:JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle --%> <%@ page contentType="text/html;charset=8859_1" %> <% //变量声明 java.sql.Connection sqlCon; //数据库连接对象 java.sql.Statement

JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle

js|oracle|分页|数据|数据库|显示 <%@ page contentType="text/html;charset=8859_1" %> <% //变量声明 java.sql.Connection sqlCon; //数据库连接对象 java.sql.Statement sqlStmt; //SQL语句对象 java.sql.ResultSet sqlRst; //结果集对象 java.lang.String strCon; //数据库连接字符串 java.