html5中文学习网

您的位置: 首页 > 网络编程 > java教程 » 正文

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

[ ] 已经帮助:人解决问题

分页应该是在我们开发web应用时经常要做的工作,能够比较简洁的实现数据库和视图层的分页十分重要。DxAHTML5中文学习网 - HTML5先行者学习网
DxAHTML5中文学习网 - HTML5先行者学习网

在数据库层利用hibernate进行数据库的分页,将从数据库中查询出的数据封装为javabean;在视图层就可以方便的实现分页。DxAHTML5中文学习网 - HTML5先行者学习网

创建PageBeanDxAHTML5中文学习网 - HTML5先行者学习网
DxAHTML5中文学习网 - HTML5先行者学习网

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中添加方法:DxAHTML5中文学习网 - HTML5先行者学习网
DxAHTML5中文学习网 - HTML5先行者学习网

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中添加方法:DxAHTML5中文学习网 - HTML5先行者学习网
DxAHTML5中文学习网 - HTML5先行者学习网

public PageBean queryForPage(int pageSize,int currentPage);  

在service实现类中实现方法:DxAHTML5中文学习网 - HTML5先行者学习网
DxAHTML5中文学习网 - HTML5先行者学习网

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中建立分页模型DxAHTML5中文学习网 - HTML5先行者学习网
DxAHTML5中文学习网 - HTML5先行者学习网

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中编写分页DxAHTML5中文学习网 - HTML5先行者学习网
DxAHTML5中文学习网 - HTML5先行者学习网

<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> 

 上面只是代码的实现,没有说明配置文件的配置,读者根据情况配置。DxAHTML5中文学习网 - HTML5先行者学习网
DxAHTML5中文学习网 - HTML5先行者学习网

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

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助