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

服務(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
主站蜘蛛池模板: 91国内精品久久久久影院优播 | 午夜福利视频极品国产83 | 99久热只有精品视频免费观看17 | 99久久精品免费看国产一区二区 | 青春草视频在线免费观看 | 青草青青在线视频 | 禁止的爱善良的未删减版hd | 日本不卡1卡2卡三卡网站二百 | 99re7在线精品免费视频 | 久热这里在线精品 | 国产一区二区三区四区波多野结衣 | 国产综合社区 | 女人与zzzooooxxx | 四虎影视色费永久在线观看 | 四虎免费影院4hu永久免费 | chinesespanking调教 | 午夜国产精品影院在线观看 | 国产草草视频 | 欧美综合色网 | 天天操天天干天天 | caoporn人人| 日本www午夜色在线视频 | 日本大片免aaa费观看视频 | 好舒服好爽再快点视频 | 99re这里只有精品视频 | 亚洲 欧美 国产 视频二区 | 啊哈~嗯哼~用力cao我小说 | 国产成人高清精品免费观看 | 32d乳白色的奶罩未删除 | 国产极品麻豆91在线 | 精品国产91久久久久久久a | 青青操在线 | 亚洲天堂中文 | 美女用手扒自己下部 | 精品久久久麻豆国产精品 | 国产精品免费看香蕉 | 成年人免费在线视频 | 精品无人区乱码1区2区3区免费 | heyzo1754北岛玲在线视频 | 12-14娇小videos| 青青视频国产依人在线 |