精品欧美一区二区三区在线观看 _久久久久国色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福利| 亚洲少妇中文在线| 国产精品亚洲αv天堂无码| 日韩av高清在线| 精品日韩在线| 欧美高清dvd| 粉嫩av一区二区三区天美传媒 | 成人毛片在线播放| 同性恋视频一区| 香港成人在线视频| 麻豆亚洲一区| 中文字幕欧美色图| 欧美激情成人在线| 日韩的一区二区| 欧美丰满熟妇xxxxx| 黄色网在线免费看| 波多野结衣精品在线| 91sa在线看| 天堂av网手机版| 视频免费一区二区| 欧美日韩国产中文字幕| 欧美一区二区综合| 国产麻豆精品一区| 亚洲国产电影| 国产香蕉97碰碰久久人人| 国产av人人夜夜澡人人爽| 国产二区三区在线| 91香蕉视频mp4| 国产精品中文字幕在线观看| 国产一级免费av| 国产一区二区观看| 日韩欧美你懂的| www.亚洲天堂网| free性欧美| 亚洲日本在线看| 亚洲精品日韩在线观看| 飘雪影视在线观看免费观看| 懂色av一区二区夜夜嗨| 成人免费观看网址| 中文字幕人妻一区二区在线视频 | 久久成人精品电影| 欧美人与禽zoz0善交| 亚洲免费专区| 日韩成人在线视频网站| 亚洲av成人片无码| 亚洲一二三区视频| 欧美一区二区三区白人| 亚洲天堂2018av| 日本欧美韩国| 日本国产一区二区| 日本一极黄色片| 欧美成人黑人| 色哟哟精品一区| 成人免费观看视频在线观看| freexxx性亚洲精品| 亚洲福中文字幕伊人影院| 一二三四中文字幕| 国产乱码在线| 亚洲v中文字幕| 婷婷无套内射影院| 国产盗摄——sm在线视频| 亚洲成av人综合在线观看| 成人在线播放网址| 黄色aa久久| 色综合天天狠狠| 日本三区在线观看| 成人国产精品入口免费视频| 欧美日韩在线综合| 亚洲小视频网站| 久久综合给合| 亚洲精品一区二区三区蜜桃下载| 亚洲av永久无码精品| 婷婷国产精品| 这里只有精品丝袜| www青青草原| 国内精品久久久久久久影视麻豆| 97热精品视频官网| 潘金莲一级淫片aaaaaa播放| 免费成人性网站| 亚洲一区二区三区成人在线视频精品 | 婷婷av一区二区三区| 91社区在线播放| 手机在线观看国产精品| 黄色一级大片在线免费看产| 一区二区三区四区国产精品| 8x8x华人在线| 色网在线免费观看| 欧美日韩一区二区三区在线| 国产欧美精品一二三| 欧美三级电影在线| 一区二区三区国产视频| 欧美日韩综合一区二区| 亚洲综合欧美| 成人h片在线播放免费网站| 亚洲精品无码专区| 亚洲国产激情av| 国产一区二区三区播放| 黄在线观看免费网站ktv| 欧美日韩国产片| 午夜福利三级理论电影| 日韩av有码| 久久久久久久久久久久久久久久久久av | 久久97视频| 久久中文精品视频| 国产精品suv一区| 国产福利一区二区三区在线视频| 免费精品视频一区二区三区| 国产原厂视频在线观看| 丰满岳妇乱一区二区三区| 成人黄色一级大片| 天堂av一区二区三区在线播放 | 亚洲不卡的av| 亚洲欧洲视频| 91精品在线观看视频| 色资源在线观看| 国产精品的网站| 逼特逼视频在线| 青草伊人久久| 亚洲人成电影在线| 日本一区二区三区四区五区| 精品在线免费观看| 日本欧美精品久久久| 欧洲性视频在线播放| 欧美日韩在线免费视频| 成人精品在线观看视频| 欧美69视频| 国产欧美精品一区二区| 深夜福利视频一区| 亚洲高清免费视频| 日韩久久久久久久久久久| 日本女优一区| 国产精品爱啪在线线免费观看| 免费观看成年人视频| 亚洲男人的天堂在线观看| 日av中文字幕| 九九久久成人| 51午夜精品视频| 欧美少妇bbw| 亚洲综合自拍偷拍| 日本77777| 不卡视频在线| 国产精品日韩欧美综合| 精品999视频| 日韩欧美一区视频| 一区二区三区免费在线观看视频| 精品动漫一区| 国产精品免费一区二区三区| 日本色护士高潮视频在线观看| 欧美疯狂做受xxxx富婆| 日韩va亚洲va欧美va清高| 久草这里只有精品视频| av不卡在线免费观看| 欧美爱爱视频| 久久精品国产91精品亚洲| 一本色道久久综合精品婷婷| 亚洲国产精品ⅴa在线观看| 在线观看免费黄网站| 欧美肉体xxxx裸体137大胆| 国产脚交av在线一区二区| 成年人在线看| 欧美日本一道本| 国产av 一区二区三区| 国产成人亚洲综合色影视| 轻点好疼好大好爽视频| 加勒比色综合久久久久久久久| 久久久久这里只有精品| 亚洲人妻一区二区| 日本高清视频一区二区| 日韩毛片无码永久免费看| 久久精品国产亚洲a| 加勒比海盗1在线观看免费国语版| 精品国产亚洲一区二区三区| 欧美国产中文字幕| 午夜成人鲁丝片午夜精品| 色综合天天综合狠狠| xxxxx99| 国产乱人伦精品一区二区在线观看| 国产内射老熟女aaaa| 国产一区二区三区不卡av| 国产va免费精品高清在线观看| 成年人视频在线观看免费| 欧美一区二区福利在线| 日韩av片在线播放| 国产女人18水真多18精品一级做| 国产精品自在自线| 影音先锋亚洲电影| 神马欧美一区二区| 欧洲大片精品免费永久看nba| 欧美一级高清免费| 男人天堂手机在线| 亚洲国产欧美自拍| 亚洲最新av网站| 亚洲高清免费视频| 激情高潮到大叫狂喷水| 成人国产精品免费观看视频| 999精品网站| 黄色亚洲在线| 亚洲韩国在线| 久久亚州av| 91精品免费久久久久久久久| 黄频免费在线观看| 久久久精品电影| 青青草免费在线| 欧美videos中文字幕| 无码人妻精品一区二区三区蜜桃91| 亚洲男人的天堂在线aⅴ视频| 国产精品亚洲无码| 丁香啪啪综合成人亚洲小说| 亚洲欧洲日本精品| 亚洲美女少妇无套啪啪呻吟| 懂色av一区二区三区四区五区| 欧美调教网站| 99一区二区| 亚洲国产91视频| 日韩美女在线观看| 99riav视频在线观看| 久久伊人91精品综合网站| 免费在线黄色网址| 精品久久国产97色综合| 97超碰资源站| 在线观看国产一区二区| 日本中文字幕免费观看| 一级做a爱片久久| 精品一区二区在线观看视频| 久久众筹精品私拍模特| 国产真实乱人偷精品| 国产麻豆视频精品| 欧美成人乱码一二三四区免费| 日韩在线一二三区| 国产在线精品91| 亚洲大黄网站| www.国产在线播放| 欧美日本一区二区视频在线观看| 一本久久a久久精品vr综合| 国产成人精品999在线观看| 国产一区二区无遮挡| 国产精品久久久网站| 97免费资源站| 日韩精品一区二区三区中文在线 | 波多野结衣小视频| 欧美日韩免费在线观看| 日韩欧美a级片| 亚洲成人www| 日本熟妇成熟毛茸茸| 亚洲高清不卡在线观看| 日韩美女视频网站| 亚洲成av人片一区二区三区| 日韩精品久久久久久久| 午夜不卡av免费| 日韩无码精品一区二区三区| 午夜视频久久久久久| 日韩少妇裸体做爰视频| 欧美日韩一区二区三区 | 麻豆视频在线观看免费网站| 日韩在线欧美在线| 麻豆av在线导航| 美日韩精品免费视频| 在线āv视频| 久久99久久久久久久噜噜| 最新黄网在线观看| 久久免费视频观看| 久草在线资源站手机版| 欧美一级淫片播放口| 黄瓜视频成人app免费| 国产精品日韩电影| 亚洲狼人在线| 国产精品视频在线免费观看| 欧美wwwwww| 日韩一区二区三区高清| 婷婷久久一区| 久久99久久久久久| 久久精品人人做人人爽电影蜜月| 天天干在线影院| 国产一区二区免费视频| 欧亚乱熟女一区二区在线| 久久影院午夜片一区| 黑人と日本人の交わりビデオ| 亚洲欧美另类综合偷拍| 天天插天天操天天干| 91福利视频在线| 国产偷拍一区二区| 精品视频www| 日日夜夜精品一区| 国产综合在线看| 精品视频在线一区二区在线| 亚洲一区国产精品| 日韩一级电影| 中文视频一区视频二区视频三区| 亚洲性视频h| 蜜桃免费在线视频| 成人免费毛片app| 中字幕一区二区三区乱码 | 欧美黑人一区二区| 7777精品伊人久久久大香线蕉完整版| 亚洲国产精品久久久久久6q| 亚洲丝袜在线视频| 青草视频在线免费直播| 国产成人黄色av| 99a精品视频在线观看| 亚洲国产一区二区三区在线| 亚洲精选国产| 小早川怜子一区二区三区| 2024国产精品| 久草国产在线视频| 欧美挠脚心视频网站| 五月婷婷在线播放| 欧美日韩福利在线观看| 精品自拍视频| 麻豆91蜜桃| 欧美日本三区| 久热在线视频观看| 久久久亚洲综合| 精品少妇久久久| 911精品产国品一二三产区| 日本福利午夜视频在线| 久久免费国产视频| 91成人短视频在线观看| 欧美日韩精品免费观看| 亚洲欧洲视频| 国产艳妇疯狂做爰视频| 日韩美女视频19| 亚洲精品国产精品国自产网站按摩 | 亚洲天堂av线| 91蜜桃网址入口| 久草视频精品在线| 日韩免费看网站| 免费看一级一片| 91黄色免费观看| 天天综合网天天综合| 欧美国产在线视频| 精品视频一区二区三区| 亚洲图色在线| 日本不卡一区二区| 最近中文字幕在线mv视频在线| 午夜欧美视频在线观看| 懂色av蜜臀av粉嫩av分享吧| 久久综合国产精品台湾中文娱乐网| www.一区| 视频在线精品一区| 日本成人在线视频网站| 黄免费在线观看| 在线看日本不卡| 成人在线免费观看| 国产精品成人在线| 精品久久久久久久久久久aⅴ| 国产成人精品视频ⅴa片软件竹菊| 91老师片黄在线观看| 99热国产在线观看| 亚洲精品动漫100p| 超碰国产一区| 欧美最大成人综合网| 日韩制服丝袜先锋影音| 久操视频在线观看免费| 欧美三级在线播放| 日本a在线播放| 97人人模人人爽人人喊38tv| 天天做天天爱天天爽综合网| 成年人网站av| 亚洲国产成人91porn| 色偷偷在线观看| 啪一啪鲁一鲁2019在线视频| 国产一区二区电影在线观看| 三上悠亚在线一区二区| 亚洲精品国产精华液| 特级丰满少妇一级aaaa爱毛片| 欧美一级黄色网| 久久社区一区| 国产91在线免费观看| 亚洲第一综合色| 欧美精品少妇| 国产热re99久久6国产精品| 亚洲综合色站| 中文在线观看免费视频| 色婷婷精品大在线视频| 中文字幕在线播放| www.成人三级视频| 久久三级视频| 亚洲视频重口味| 亚洲第一色在线| 成人视屏在线观看| 欧美 亚洲 视频| 久久午夜色播影院免费高清| 在线视频1卡二卡三卡| 欧美激情国产精品| 杨幂一区二区三区免费看视频| 久热精品在线观看视频| 亚洲伊人伊色伊影伊综合网| 日本大臀精品| 91在线在线观看| 久久这里有精品15一区二区三区| 色偷偷男人天堂| 日韩av网站大全| va天堂va亚洲va影视| 一二三四视频社区在线| 中文一区一区三区高中清不卡| 欧美性受xxxx狂喷水| 91精品久久久久久久久久入口| 国产婷婷精品| 加勒比婷婷色综合久久|