精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

重構Struts2 JSP分頁

開發 后端
本文介紹重構Struts2 JSP分頁,以及介紹MyDatabaseServices的具體實現,還有就是把USER替換成你需要顯示的數據。

前兩天的Struts2 JSP分頁由于過于關注框架實現,導致結構比較混亂。經過一些改動,再次發布。

環境是JDK1.6+mysql5.0+jboss4.0+struts 2.0.11

已經實現上一版沒實現的功能。

首先來看UML圖,為了簡潔性,其中的setter & getter并沒有標出。

class Test JSP

 

  1. public classShowActionextendsActionSupport{  
  2. privateintcurrentPage = 1;  
  3. privateinttotalPages;  
  4. privatebooleanhasNext =false;  
  5. privatebooleanhasPre = false;  
  6. private ArrayList pageContentList;  
  7. private ArrayList<PageIndex> indexList  
  8. private PageRetrieval pr;  
  9. public String execute(){  
  10. init();  
  11. returnSUCCESS;  
  12. }     
  13. privatevoid init(){  
  14. pr = new PageRetrieval(currentPage);  
  15. setPageContentList(pr.getPageContentList());  
  16. setndexList(pr.getIndexList());  
  17. setHasNext(pr.getHasNext());  
  18. setHasPre(pr.getHasPre());  
  19. setTotalPages(pr.getTotalPages());  
  20. }  
  21. //other getters and setters  
  22. }  
  23. publicclass PageRetrieval {  
  24. private PageInformation pi;  
  25. public PageRetrieval(int currentPage){  
  26. pi = new PageInformationFactory().create(currentPage);  
  27.  }  
  28. publicint getTotalPages(){  
  29. returnpi.getPti().getTotalPages();  
  30. //other getters and setters  
  31. }  
  32. publicclass PageInformationFactory {  
  33. private DatabaseServices dataServ;  
  34. public PageInformationFactory(){  
  35. dataServ = MyDatabaseServices.getInstance();  
  36. }  
  37. public PageInformation create(int currentPage){  
  38. PageInformation pi = new PageInformation();  
  39. PageTotalInfo pti = getNewPageTotalInfo();          
  40. pi.setPti(pti);  
  41. if(currentPage < pti.getTotalPages()){  
  42.    pi.setHasNext(true);  
  43. }  
  44.  if(currentPage !=1){  
  45.   pi.setHasPre(true);  
  46.    }   
  47. pi.setPageContentList(((MyDatabaseServices)dataServ).getPageContent(currentPage, pti.getPageSize()));  
  48. ArrayList<PageIndex> indexTemp = getIndexList(currentPage,pti.getTotalPages());  
  49. pi.setIndexList(indexTemp);  
  50.   return pi;  
  51.  }  
  52. private PageTotalInfo getNewPageTotalInfo(){  
  53. int pageSize = 20;  
  54. int totalRows = ((MyDatabaseServices)dataServ).getRowCount();  
  55. int totalPages = (totalRows + pageSize-1)/pageSize;  
  56.  returnnew PageTotalInfo(pageSize,totalPages,totalRows);  
  57.  }  
  58. private ArrayList<PageIndex> getIndexList(int currentPage,int totalPages){  
  59.    int up = 0;  
  60.    if((currentPage+20)<=totalPages){  
  61.    up = currentPage+20;  
  62.   }  
  63.    else {up = totalPages+1;}  
  64. ArayList<PageIndex> result = new ArrayList<PageIndex>();  
  65. for(int i=currentPage ;i<up; i++){  
  66. PageIndex temp = new PageIndex(i);  
  67.  result.add(temp);  
  68.    }  
  69.     return result;  
  70.        }  
  71. }  
  72. publicclass PageInformation {  
  73. privateintcurrentPage;  
  74. privatebooleanhasNext = false;  
  75. privatebooleanhasPre = false;  
  76. private ArrayList pageContentList;  
  77. private ArrayList<PageIndex> indexList;  
  78. private PageTotalInfo pti;  
  79. //other getters and setters  
  80. }  
  81. publicclass MyDatabaseServices implements DatabaseServices{  
  82. private DataSource ds;  
  83. private InitialContext ic;  
  84. private Connection conn;  
  85. private PreparedStatement ps;  
  86. private ResultSet rs;  
  87. privatestatic MyDatabaseServices dgs = new MyDatabaseServices();  
  88. private MyDatabaseServices(){//use singleton pattern, so the constructor is private  
  89. try{  
  90. ic = new InitialContext ();  
  91. ds = (DataSource)ic.lookup("java:jdbc/jsp");//get database source  
  92.   }catch(NamingException e){  
  93.    e.printStackTrace();  
  94.   }  
  95. }  
  96. public Connection getConnection(){  
  97.   try{  
  98.     returnds.getConnection();  
  99. }catch(SQLException e){  
  100. e.printStackTrace();  
  101. }  
  102. returnnull;  
  103. }  
  104. public void closeConnection(ResultSet rs,PreparedStatement ps,Connection conn){  
  105.    try{  
  106.    if(rs!=null){  
  107.         rs.close();  
  108.    }  
  109.  if(ps!=null){  
  110.      ps.close();  
  111.     }  
  112.       if(conn!=null){  
  113.     conn.close();  
  114.  }  
  115. }catch(SQLException e ){  
  116. e.printStackTrace();  
  117. }  
  118. }  
  119. public ArrayList<User> getPageContent(int currentPage,int pageSize){  
  120.  ArrayList<User> list=new ArrayList<User>();  
  121.  conn = getConnection();  
  122.  try{  
  123. ps = conn.prepareStatement("SELECT * FROM jsptest LIMIT ?,?");  
  124.  int temp = (currentPage-1)*20;  
  125.   ps.setInt(1, temp);  
  126.    ps.setInt(2, pageSize);  
  127.    rs = ps.executeQuery();  
  128.     while (rs.next()){  
  129.       User user = new User();  
  130.       user.setId(rs.getString(1));  
  131.       user.setName(rs.getString(2));  
  132.       list.add(user);  
  133.     }  
  134.    return list;  
  135. }catch(SQLException e){  
  136.    e.printStackTrace();  
  137. }finally{  
  138.   dgs.closeConnection(rs, ps, conn);  
  139. }  
  140. returnnull;  
  141. }  
  142. publicint getRowCount(){  
  143.   conn = getConnection();  
  144. try{  
  145. ps = conn.prepareStatement("SELECT * FROM jsptest");  
  146. rs = ps.executeQuery();  
  147. rs.last();  
  148. int result = rs.getRow();  
  149. rs.first();  
  150. return result;  
  151. }catch(SQLException e){  
  152.     e.printStackTrace();  
  153. }finally{  
  154.     dgs.closeConnection(rs, ps, conn);  
  155. }  
  156. return 0;  
  157. }  
  158. publicstaticsynchronized MyDatabaseServices getInstance()//get the sigleton instance  
  159. {  
  160.    if(null==dgs){  
  161.        dgsnew MyDatabaseServices();  
  162.        }   
  163.    returndgs;  
  164. }  

PageIndex 和PageTotalInfo 只要對照UML圖加上set和get方法就可以了。

代碼可能有點亂,對照UML圖看吧。

如果要重用,只要改變Struts2 JSP頁面,以及下面的MyDatabaseServices的具體實現,還有就是把USER替換成你需要顯示的數據。

最后以下是JSP頁面代碼。

  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
  2.     pageEncoding="ISO-8859-1"%> 
  3. <%@ taglib prefix="s" uri="/struts-tags" %> 
  4. <html> 
  5. <head> 
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
  7. <title>Insert title here</title> 
  8. </head> 
  9. <body> 
  10. <s:form action="ShowAction" method="GET"> 
  11.    <h1>Welcome</h1><BR> 
  12.    <h1>CurrentPage <s:property value="currentPage"/></h1>
  13.    <!--show items of this page--> 
  14.    <s:iterator value="pageContentList" status="status"> 
  15.         <s:property value="id"/> 
  16.         <s:property value="name"/> 
  17.         <BR> 
  18.    </s:iterator>              
  19.    <!--define the url of the previous page and next page--> 
  20.      <s:url id="url_pre" value="ShowAction.action"> 
  21.          <s:param name="currentPage" value="currentPage-1"></s:param> 
  22.      </s:url> 
  23.      <s:url id="url_next" value="ShowAction.action"> 
  24.          <s:param name="currentPage" value="currentPage+1"></s:param> 
  25.      </s:url> 
  26.      <s:url id="url_first" value="ShowAction.action"> 
  27.          <s:param name="currentPage" value="1"></s:param> 
  28.      </s:url>   
  29.      <s:url id="url_last" value="ShowAction.action"> 
  30.          <s:param name="currentPage" value="totalPages"></s:param> 
  31.      </s:url> 
  32.         <!-- use url defined above --> 
  33.    <s:a href ="%{url_first}">First Page</s:a> 
  34.    <s:if test="hasPre">      
  35.    <s:a href="%{url_pre}">Pre</s:a> 
  36.    </s:if> 
  37.    <s:iterator value="indexList" status="status"> 
  38.       <s:url id="url" value="ShowAction.action"> 
  39.       <!-- pass the currentPage parameter --> 
  40.          <s:param name="currentPage" value="indexNumber"></s:param> 
  41.       </s:url> 
  42.       <s:a href="%{url}"><s:property value="indexNumber"/>&nbsp</s:a> 
  43.    </s:iterator> 
  44.    <s:if test="hasNext"> 
  45.    <s:a href="%{url_next}">Next</s:a> 
  46.    </s:if> 
  47.       <s:a href ="%{url_last}">Last Page</s:a> 
  48. </s:form>    
  49. </body> 
  50. </html> 

以上是Struts2 JSP分頁可能還有不盡人意之處,大家多多指點,一起進步。

【編輯推薦】

  1. JSP XML XSLT將輸出轉換HTML
  2. 淺析JSP技術單處理和多任務處理
  3. JSP變量在規范中稱作范圍變量
  4. 詳解JSP技術的方法
  5. JSP變量在規范中稱作范圍變量
責任編輯:佚名 來源: IT168
相關推薦

2011-05-03 09:40:58

iBatis

2012-04-25 10:14:40

JavaStruts

2009-07-29 09:54:34

struts2和str

2009-06-25 15:11:28

Struts2教程Struts2程序

2009-02-04 10:51:07

2009-06-08 16:44:00

2009-06-04 08:34:24

Struts2配置struts.xml

2012-05-10 14:00:06

StrutsjsonJava

2013-07-19 09:36:04

struts2struts2漏洞

2011-08-19 13:13:14

struts2Java

2009-06-25 15:26:25

Struts2教程struts.xml常

2009-06-03 14:19:34

Struts2Guice

2009-06-25 16:04:30

2009-06-04 09:20:19

struts2 if標使用

2009-07-14 17:10:44

struts2webwork

2013-07-18 15:09:27

2009-06-05 10:05:50

struts menustruts2

2009-02-04 11:37:15

2009-06-04 11:08:32

struts2 val框架

2011-04-28 09:52:04

Struts2
點贊
收藏

51CTO技術棧公眾號

欧美日韩高清一区二区三区| 成人涩涩免费视频| 中文字幕亚洲一区在线观看| 久久艹这里只有精品| 免费不卡av| 久久久高清一区二区三区| 国产精品露脸av在线| 久热精品在线观看| 国产真实有声精品录音| 日韩一区二区三区观看| 黑鬼大战白妞高潮喷白浆| 久草免费在线| 91在线视频免费观看| 91精品国产综合久久久久久蜜臀 | 欧美日韩在线一| 国产精品久久网| 在线观看欧美一区二区| 东京热一区二区三区四区| 日韩在线观看电影完整版高清免费悬疑悬疑 | 国产黄色片在线免费观看| 偷拍自拍一区| 日韩欧美一区二区免费| 国产天堂在线播放| av免费不卡| 18涩涩午夜精品.www| 九九热久久66| 精品人妻少妇嫩草av无码专区| 久久人人超碰| 97精品国产97久久久久久免费| 免费在线观看a级片| 国产中文字幕一区二区三区| 精品国产污污免费网站入口 | 国产精品久久久久三级| 免费国产一区二区| 欧美 日韩 综合| 国产毛片精品一区| 国产九九精品视频| 波多野结衣视频网址| 一区二区三区成人精品| 欧美夫妻性生活视频| 999精品视频在线观看播放| 国际精品欧美精品| 亚洲开心激情网| 久久一区二区电影| 精品国内亚洲2022精品成人| 欧美大片在线观看一区| 99九九精品视频| 91精品一区| 欧美高清dvd| 色www免费视频| 日韩成人免费av| 欧美日韩电影在线| 国产91在线播放九色快色| 亚洲911精品成人18网站| 性欧美video另类hd尤物| 欧美色图第一页| 杨幂毛片午夜性生毛片| 97人人做人人爽香蕉精品| 色美美综合视频| 日本在线视频www| 美女写真久久影院| 在线观看精品一区| 亚洲色图 在线视频| 日韩经典一区| 欧美美女一区二区| 伊人五月天婷婷| 试看120秒一区二区三区| 日韩午夜av电影| 韩国一区二区三区四区| 国产福利资源一区| 日韩av在线电影网| 欧洲av一区二区三区| 日韩免费在线| 欧美日韩成人免费| 五月婷婷亚洲综合| 免费视频一区二区| 亚洲影院污污.| 亚洲国产精品久久久久爰性色| 成人午夜激情在线| 久久一区免费| 香蕉视频国产在线观看| 亚洲另类一区二区| 欧美乱大交xxxxx潮喷l头像| 国产精品13p| 色婷婷综合久久久久中文| 亚洲 激情 在线| 一区二区三区四区精品视频| 日韩av最新在线观看| 精品黑人一区二区三区观看时间| 教室别恋欧美无删减版| 精品国产区一区二区三区在线观看| 午夜精品福利在线视频| 国产日韩综合| 成人国产精品久久久| 国产综合视频在线| 91免费版在线看| 日韩视频在线免费播放| 中国av免费看| 欧美电影院免费观看| 日韩国产激情在线| 夫妻性生活毛片| 国产欧美大片| 91嫩草免费看| 国产在线一二| 亚洲一区二区精品视频| 国产视频一区二区三区在线播放| 国产日韩中文在线中文字幕| 国产视频综合在线| 九九精品在线观看视频| 久久综合网络一区二区| 成人91视频| av在线资源网| 岛国精品视频在线播放| 999在线精品视频| 深爱激情综合网| 久久青草精品视频免费观看| 91精品国产综合久| 26uuu国产在线精品一区二区| 欧美性受黑人性爽| 深夜视频一区二区| 亚洲精品成a人在线观看| 久久国产波多野结衣| 日韩福利视频网| 精品国产一区二区三区免费| 成人短视频在线观看| 欧美性色欧美a在线播放| 中文字幕一区三区久久女搜查官| 亚洲情侣在线| 国产裸体写真av一区二区 | 免费的一级黄色片| 国产精品美女午夜爽爽| 日韩av最新在线观看| 国产小视频在线看| 国产精品一区专区| 伊人久久大香线蕉av一区| 综合在线影院| 亚洲精品久久久久久下一站| 久久99久久98精品免观看软件| 精品一区二区三区欧美| 亚洲精品一区二区三| 日韩欧美看国产| 亚洲欧美日韩网| 人妻 日韩精品 中文字幕| 不卡区在线中文字幕| 成人小视频在线观看免费| 精品亚洲a∨一区二区三区18| 日韩有码在线电影| 亚洲a区在线视频| 丰满少妇在线观看bd| 亚洲色图一区二区三区| 欧美视频国产视频| 国产精品久久久久久麻豆一区软件| 国产精品久久久av| 国产裸舞福利在线视频合集| 色视频一区二区| 人人妻人人澡人人爽| 三级欧美韩日大片在线看| 国产在线精品一区二区三区| www555久久| 亚洲高清在线观看| 九一国产在线观看| 国产欧美一区二区精品忘忧草| 国产精品涩涩涩视频网站| 欧美男gay| 成人国产亚洲精品a区天堂华泰| 天天综合视频在线观看| 这里只有精品电影| 清纯粉嫩极品夜夜嗨av| 成人午夜电影小说| 欧美性久久久久| 成人影院在线| 亚洲在线一区二区| 青青青国内视频在线观看软件| 日韩欧美一二三| 国产午夜久久久| 久久免费的精品国产v∧| 国产3p在线播放| 在线精品国产| 久久99精品久久久水蜜桃| 国产综合色在线观看| 久久伊人精品天天| 老牛影视av牛牛影视av| 色综合天天性综合| 日韩激情小视频| 成人久久18免费网站麻豆| 日日橹狠狠爱欧美超碰| 日韩欧美视频在线播放| 99国产视频在线| 天堂中文在线播放| 日韩在线视频二区| 亚洲欧美高清视频| 狠狠躁夜夜躁久久躁别揉| 黄色片网站在线播放| 成人在线视频一区| www.涩涩涩| 亚洲手机视频| 午夜精品一区二区在线观看的| 中文久久电影小说| 国产精品一区二区三区久久久 | 不卡一区综合视频| 动漫一区二区在线| 国产69精品久久| 久久人人爽国产| 在线免费av电影| 日韩成人av在线播放| 一级特黄aa大片| 欧美性生交大片免费| 国产精品久久久精品四季影院| 91在线视频在线| 能看毛片的网站| 国产资源在线播放| 亚洲国产精华液网站w| jjzz黄色片| 美洲天堂一区二卡三卡四卡视频| 欧美精品自拍视频| 亚洲欧洲日韩| 亚洲欧洲一区二区在线观看| 日韩mv欧美mv国产网站| 亚洲精品日产aⅴ| 欧美精品高清| 97久久久免费福利网址| 黄色网址视频在线观看| 亚洲色在线视频| 色综合久久久久久| 日韩欧美一级在线播放| 一区二区不卡视频在线观看| 91成人在线精品| 日韩精品在线观看免费| 亚洲综合偷拍欧美一区色| 中文国语毛片高清视频| 国产偷国产偷精品高清尤物| 亚洲精品乱码久久久久久不卡| 国产大陆精品国产| 51自拍视频在线观看| 精品综合免费视频观看| 美女少妇一区二区| 日本欧美一区二区在线观看| 黄色片视频在线免费观看| 日韩亚洲国产精品| 97超碰在线人人| 亚洲国产专区| cao在线观看| 欧美久久99| 亚洲天堂第一区| 女生裸体视频一区二区三区| 国产麻豆电影在线观看| 911久久香蕉国产线看观看| 在线丝袜欧美日韩制服| 国产精品传媒精东影业在线| 亚洲日本无吗高清不卡| 日韩精品永久网址| 亚洲精品无人区| 日韩在线高清| 久久久久亚洲av无码专区喷水| 91久久夜色精品国产按摩| 亚洲一区二区在线免费观看| 欧美wwwww| 久久av喷吹av高潮av| 欧美在线日韩| 免费看欧美黑人毛片| 日韩一区二区久久| 久久久999精品免费| 中文人妻熟女乱又乱精品| 欧美亚洲一区二区在线观看| 亚洲 小说区 图片区| 欧美久久久久久蜜桃| a视频免费在线观看| 日韩精品资源二区在线| 手机av在线免费观看| 国产偷亚洲偷欧美偷精品| 免费黄网站在线观看| 国产亚洲一区二区精品| 秋霞a级毛片在线看| 美日韩在线视频| 牛牛在线精品视频| 欧美性视频在线| 精品自拍视频| 91偷拍精品一区二区三区| 精品国产一区二区三区不卡蜜臂| 免费一区二区三区| 日韩一区电影| 福利视频免费在线观看| 99国产精品视频免费观看一公开 | 在线观看欧美亚洲| 亚洲国产激情| 日韩欧美国产片| 成人黄色网址在线观看| 亚洲码无人客一区二区三区| 亚洲欧洲无码一区二区三区| 伊人365影院| 国产黄人亚洲片| 日韩精品最新在线观看| 日产精品一区二区| 成人一级生活片| 日本在线观看不卡视频| 亚洲av无码久久精品色欲| 91蜜桃网址入口| 精品国产视频一区二区三区| 欧美午夜性色大片在线观看| 一级黄在线观看| 亚洲精品成人网| 久久五月精品| 欧美亚洲一区在线| 国产视频一区二| 欧美日韩在线观看一区| 欧美精品日本| 亚洲娇小娇小娇小| av亚洲精华国产精华| 天天看天天摸天天操| 色婷婷亚洲婷婷| 成人h动漫精品一区二区无码 | 91久色国产| 精品高清在线| 日本福利视频一区| 国内一区二区在线| 国产又大又粗又爽的毛片| 亚洲成人一区在线| 国产精品日韩无码| 亚洲日本aⅴ片在线观看香蕉| 青草在线视频在线观看| 国产精品色午夜在线观看| 蜜桃a∨噜噜一区二区三区| 日本一区午夜艳熟免费| 激情图区综合网| 国产三级短视频| 色哦色哦哦色天天综合| 三级av在线播放| 97热精品视频官网| 玖玖玖视频精品| 99re99热| 久久精品国产精品青草| 中文人妻一区二区三区| 亚洲成a天堂v人片| 亚洲欧美另类一区| 欧美成人免费小视频| 久久久久久爱| 在线观看成人免费| 国产麻豆91精品| 2025国产精品自拍| 3d动漫精品啪啪1区2区免费| av在线电影院| 国产精品丝袜视频| 经典一区二区| 嫩草av久久伊人妇女超级a| 久久久久久久久久美女| 99精品人妻国产毛片| 亚洲老头同性xxxxx| 男人的午夜天堂| 亚洲一区二区欧美| 欧美亚洲精品在线观看| 久久久久久久国产精品| 一区二区三区在线免费看 | 欧美一区二区精品在线| 老司机在线看片网av| 91精品免费视频| 亚洲天天影视网| 日本精品一二三区| 亚洲v日本v欧美v久久精品| 天天操天天操天天干| 欧美一级淫片aaaaaaa视频| 天堂av一区二区三区在线播放| 成人综合视频在线| 国产午夜精品一区二区三区视频| 国产情侣呻吟对白高潮| 久久亚洲精品中文字幕冲田杏梨 | 欧美一区二区三区日韩视频| 91黄色在线| 国产日韩精品久久| 久久久999| 人人艹在线视频| 日韩欧美国产wwwww| 久久青草伊人| 日本在线观看一区二区| 美女在线视频一区| 久久久久无码国产精品| 日韩精品丝袜在线| 成人黄色免费网站| 一区二区三区欧美成人| 国产成人免费视| 国产精品久久久久久久久久久久久久久久久| 亚洲欧美精品一区二区| 成人午夜一级| 999一区二区三区| 国产亚洲1区2区3区| 国产美女精品视频国产| 97视频在线观看网址| 欧美久久综合网| 欧美一级片在线免费观看| 色综合视频在线观看| 国产成人午夜| 久久国产日韩欧美| 久久99精品久久久久久| 亚洲精品在线观看av| 亚洲色图50p| 涩涩屋成人免费视频软件| 欧美一级片中文字幕| 亚洲美女淫视频| 国产精品麻豆一区二区三区| 亚洲最大福利视频| 日本aⅴ免费视频一区二区三区|