一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - java-SSH2實(shí)現(xiàn)數(shù)據(jù)庫(kù)和界面的分頁(yè)

java-SSH2實(shí)現(xiàn)數(shù)據(jù)庫(kù)和界面的分頁(yè)

2020-06-24 12:09liuchangqing123 JAVA教程

本文主要是介紹SSH2實(shí)現(xiàn)數(shù)據(jù)庫(kù)和界面的分頁(yè)的代碼,分頁(yè)在web應(yīng)用中是經(jīng)常要做的事情,實(shí)用性比較大,有需要的朋友可以來(lái)了解一下。

分頁(yè)應(yīng)該是在我們開(kāi)發(fā)web應(yīng)用時(shí)經(jīng)常要做的工作,能夠比較簡(jiǎn)潔的實(shí)現(xiàn)數(shù)據(jù)庫(kù)和視圖層的分頁(yè)十分重要。

在數(shù)據(jù)庫(kù)層利用hibernate進(jìn)行數(shù)據(jù)庫(kù)的分頁(yè),將從數(shù)據(jù)庫(kù)中查詢出的數(shù)據(jù)封裝為javabean;在視圖層就可以方便的實(shí)現(xiàn)分頁(yè)。

創(chuàng)建PageBean

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package com.fishing.common.bean;
 
import java.util.List;
@SuppressWarnings("unchecked")
public class PageBean {
   
  private List list; // 要返回的某一頁(yè)的記錄列表
 
  private int allRow; // 總記錄數(shù)
  private int totalPage; // 總頁(yè)數(shù)
  private int currentPage; // 當(dāng)前頁(yè)
  private int pageSize; // 每頁(yè)記錄數(shù)
 
   
  private boolean isFirstPage; // 是否為第一頁(yè)
  private boolean isLastPage; // 是否為最后一頁(yè)
  private boolean hasPreviousPage; // 是否有前一頁(yè)
  private boolean hasNextPage; // 是否有下一頁(yè)
 
  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;
  }
 
  /** */
  /**
   * 初始化分頁(yè)信息
   */
  public void init() {
    this.isFirstPage = isFirstPage();
    this.isLastPage = isLastPage();
    this.hasPreviousPage = isHasPreviousPage();
    this.hasNextPage = isHasNextPage();
  }
 
  /** */
  /**
   * 以下判斷頁(yè)的信息,只需getter方法(is方法)即可
   *
   * @return
   */
 
  public boolean isFirstPage() {  
    return (currentPage == 1);// 如是當(dāng)前頁(yè)是第1頁(yè)  
  }  
  public boolean isLastPage() {  
 return currentPage == totalPage; //如果當(dāng)前頁(yè)是最后一頁(yè)  
}  
  public boolean isHasPreviousPage() {  
 return currentPage != 1; //只要當(dāng)前頁(yè)不是第1頁(yè)  
}  
  public boolean isHasNextPage() {  
 return currentPage != totalPage; //只要當(dāng)前頁(yè)不是最后1頁(yè)  
}  
  /** */
  /**
   * 計(jì)算總頁(yè)數(shù),靜態(tài)方法,供外部直接通過(guò)類名調(diào)用
   *
   * @param pageSize
   *      每頁(yè)記錄數(shù)
   * @param allRow
   *      總記錄數(shù)
   * @return 總頁(yè)數(shù)
   */
  public static int countTotalPage(final int pageSize, final int allRow) {
    int totalPage = allRow % pageSize == 0 ? allRow / pageSize : allRow
        / pageSize + 1;
    return totalPage;
  }
 
  /** */
  /**
   * 計(jì)算當(dāng)前頁(yè)開(kāi)始記錄
   *
   * @param pageSize
   *      每頁(yè)記錄數(shù)
   * @param currentPage
   *      當(dāng)前第幾頁(yè)
   * @return 當(dāng)前頁(yè)開(kāi)始記錄號(hào)
   */
  public static int countOffset(final int pageSize, final int currentPage) {
    final int offset = pageSize * (currentPage - 1);
    return offset;
  }
 
  /** */
  /**
   * 計(jì)算當(dāng)前頁(yè),若為0或者請(qǐng)求的URL中沒(méi)有"?page=",則用1代替
   *
   * @param page
   *      傳入的參數(shù)(可能為空,即0,則返回1)
   * @return 當(dāng)前頁(yè)
   */
  public static int countCurrentPage(int page) {
    final int curPage = (page == 0 ? 1 : page);
    return curPage;
  }
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public List queryForPage(final String hql, final int offset,
      final int length);
在Dao的實(shí)現(xiàn)類JianSheDWDaoImpl中實(shí)現(xiàn)方法
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中添加方法:

?
1
public PageBean queryForPage(int pageSize,int currentPage); 

在service實(shí)現(xiàn)類中實(shí)現(xiàn)方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public PageBean queryForPage(int pageSize, int page) {
    final String hql = "from JianSheDWBean"; // 查詢語(yǔ)句
    int allRow = this.baseDao.getAllRowCount(hql); // 總記錄數(shù)
    int totalPage = PageBean.countTotalPage(pageSize, allRow); // 總頁(yè)數(shù)
    final int offset = PageBean.countOffset(pageSize, page); // 當(dāng)前頁(yè)開(kāi)始記錄
    final int length = pageSize; // 每頁(yè)記錄數(shù)
    final int currentPage = PageBean.countCurrentPage(page);
    List<JianSheDWBean> list = this.baseDao.queryForPage(hql, offset, length); // "一頁(yè)"的記錄
 
    // 把分頁(yè)信息保存到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中建立分頁(yè)模型

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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; // 第幾頁(yè)
 
  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 {  
     
   //分頁(yè)的pageBean,參數(shù)pageSize表示每頁(yè)顯示記錄數(shù),page為當(dāng)前頁(yè)  
   this.pageBean = jianSheDWService.queryForPage(10, page);  
   return SUCCESS;
  }
}

在jsp中編寫分頁(yè)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<tr class="odd">
                          <td>
                              
                          </td>
                          <td>
                            <s:if test="%{pageBean.currentPage == 1}">  
                           首頁(yè)   上一頁(yè)
                          </s:if>
                            <s:else>
                              <a href="jianguan/getJSDWInfos.action?page=1">首頁(yè)</a>
                              <a
                                href="jianguan/getJSDWInfos.action?page=<s:property value="%{pageBean.currentPage-1}"/>" />上一頁(yè)</a>
 
                            </s:else>
                          </td>
                          <td>
                            <s:if test="%{pageBean.currentPage != pageBean.totalPage}">
 
                              <a
                                href="jianguan/getJSDWInfos.action?page=<s:property value="%{pageBean.currentPage+1}"/>">下一頁(yè)</a>
                              <a
                                href="jianguan/getJSDWInfos.action?page=<s:property value="pageBean.totalPage"/>">尾頁(yè)
                              </a>
                            </s:if>
                            <s:else
                           下一頁(yè) 尾頁(yè) 
                          </s:else>
                          </td>
 
                          <td>
                            <div align="center">
                              頁(yè)次
                              <s:property value="pageBean.currentPage" />
                              /
                              <s:property value="pageBean.totalPage" />
                                
                              <s:property value="pageBean.allRow" />
                              記錄
                            </div>
                            <div align="center"></div>
                          </td>
                        </tr>

 上面只是代碼的實(shí)現(xiàn),沒(méi)有說(shuō)明配置文件的配置,讀者根據(jù)情況配置。

希望本文所述對(duì)你有所幫助,SSH2實(shí)現(xiàn)數(shù)據(jù)庫(kù)和界面的分頁(yè)內(nèi)容就給大家介紹到這里了。希望大家繼續(xù)關(guān)注我們的網(wǎng)站!想要學(xué)習(xí)java可以繼續(xù)關(guān)注本站。

延伸 · 閱讀

精彩推薦
  • JAVA教程java中使用DES加密解密實(shí)例

    java中使用DES加密解密實(shí)例

    這篇文章主要介紹了java中使用DES加密解密實(shí)例,需要的朋友可以參考一下 ...

    java技術(shù)網(wǎng)1472019-10-27
  • JAVA教程實(shí)時(shí)計(jì)算知多少?

    實(shí)時(shí)計(jì)算知多少?

    這篇文章對(duì)滑動(dòng)窗口計(jì)數(shù)的概念和關(guān)鍵代碼做了較為詳細(xì)解釋,讓我們對(duì)實(shí)時(shí)計(jì)算這一概念有了更深的了解,需要的朋友可以參考下 ...

    foreach_break2062019-12-29
  • JAVA教程Java設(shè)計(jì)模式之命令模式(Command模式)介紹

    Java設(shè)計(jì)模式之命令模式(Command模式)介紹

    這篇文章主要介紹了Java設(shè)計(jì)模式之命令模式(Command模式)介紹,本文講解了Command模式的定義、如何使用命令模式等內(nèi)容,需要的朋友可以參考下 ...

    Java教程網(wǎng)1372019-12-11
  • JAVA教程MyEclipse到期破解代碼分享

    MyEclipse到期破解代碼分享

    前幾天有個(gè)小伙伴咨詢,使用的時(shí)候一直說(shuō)myeclipse已過(guò)期,需要購(gòu)買,如何解決?可以去網(wǎng)上搜搜注冊(cè)碼,但作為程序猿這么做簡(jiǎn)直太無(wú)趣,看看我們自己來(lái)...

    hebedich2262019-12-04
  • JAVA教程Centos6.5下Jdk+Tomcat+Mysql環(huán)境安裝圖文教程

    Centos6.5下Jdk+Tomcat+Mysql環(huán)境安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了Centos6.5系統(tǒng)下Jdk+Tomcat+Mysql環(huán)境安裝過(guò)程,感興趣的小伙伴們可以參考一下 ...

    wlphyl4452020-05-07
  • JAVA教程Java并發(fā)程序入門介紹

    Java并發(fā)程序入門介紹

    這篇文章主要介紹了Java并發(fā)程序入門 ,需要的朋友可以參考下 ...

    Microgoogle4002019-12-14
  • JAVA教程Java Calendar類的時(shí)間操作

    Java Calendar類的時(shí)間操作

    這篇文章主要為大家詳細(xì)介紹了Java Calendar類的時(shí)間操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 ...

    zz_cl4362020-06-21
  • JAVA教程java發(fā)送郵件示例講解

    java發(fā)送郵件示例講解

    這篇文章主要為大家詳細(xì)介紹了java發(fā)送郵件示例的全過(guò)程,溫習(xí)郵件協(xié)議,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參...

    鄭宏鑫erke2442020-04-10
主站蜘蛛池模板: 深夜在线小视频 | 俄罗斯一级在线播放 | 毛片亚洲毛片亚洲毛片 | 亚洲天堂男人的天堂 | 4虎tv| 国产最新进精品视频 | 成人性色生活片免费网 | 喜马拉雅听书免费版 | 女海盗斯蒂内塔的复仇2免费观看 | 日本高清免费不卡在线播放 | 韩国成人毛片aaa黄 含羞草国产亚洲精品岁国产精品 | 女同性互吃奶乳免费视频 | 男人捅女人动漫 | 精品夜夜澡人妻无码AV蜜桃 | 粉嫩国产14xxxxx0000 | 色婷综合 | 国产自产一区c | yellow视频在线观看免费 | 日韩成人av在线 | 好男人资源免费观看 | 97网站| 国产第2页 | 色愉拍亚洲偷自拍 | 美艳教师刘艳第三部166 | 欧美巨吊 | 国产999在线观看 | 亚欧成人中文字幕一区 | 欧美日韩国产成人综合在线影院 | 四虎影视4hu最新地址在线884 | 成人免费在线视频 | 天天射天天舔 | 日本美女视频韩国视频网站免费 | 国产精品高清在线 | 欧美一级片免费 | 四虎麻豆国产精品 | 乌克兰肥熟 | 亚洲激情成人 | 四虎免费在线观看 | 国产一区二区视频免费 | 特级毛片全部免费播放器 | 国色天香社区在线视频免费观看 |