版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、最近在學(xué)習(xí) Struts2,并使用 Struts2 開發(fā)系統(tǒng)。在網(wǎng)上看了好多的 struts2 的分頁(yè),雖然都實(shí)現(xiàn)了分頁(yè)的功能,但是感覺(jué)不是非常好,需要我們?cè)诿看螌懛猪?yè)的時(shí)候做很多的工作,而我認(rèn)為分頁(yè)應(yīng)該是一個(gè)通用的組件,開發(fā)人員在開發(fā)的過(guò)程中不應(yīng)該在分頁(yè)上花費(fèi)太多的精力。所以,一直想封裝一個(gè)比較通用的分頁(yè)組件,而設(shè)計(jì)分頁(yè)組件的時(shí)候,怎樣保證動(dòng)態(tài)查詢的參數(shù)不丟失,成為實(shí)現(xiàn)的一個(gè)難點(diǎn)。感謝 tangshuo 和 shim 的分享,讓我實(shí)現(xiàn)了這樣的一個(gè)分頁(yè)組件。該組件采用自定 struts2 標(biāo)簽的方式實(shí)現(xiàn)。首先建立一個(gè)構(gòu)建分頁(yè)標(biāo)簽信息的類:Pages.java/*構(gòu)建分頁(yè)標(biāo)簽體的類*author
2、Java 軟件工程師,專注于 java 領(lǐng)域新技術(shù)的研究和系統(tǒng)設(shè)計(jì)。*date2008-11-4 下午 02:52:19*version1.0*/publicclassPagesextendsComponentprivateHttpServletRequestrequest;privateStringpageNo;/當(dāng)前頁(yè)碼privateStringtotal;/總頁(yè)數(shù)privateStringstyleClass;/分頁(yè)的樣式privateStringtheme;/分頁(yè)的主題privateStringurl;/action 的路徑privateStringurlType;/路徑的類型,主要用
3、于 URL 重寫的擴(kuò)展/省略 get、set 方法publicPages(ValueStackarg0,HttpServletRequestrequest)super(arg0);this.request=request;Overridepublicbooleanend(Writerwriter,Stringbody)booleanresult=super.start(writer);try/從 ValueStack 中取出數(shù)值Objectobj=this.getStack().findValue(pageNo);pageNo=String.valueOf(Integer)obj);obj=t
4、his.getStack().findValue(total);total=String.valueOf(Integer)obj);StringBuilderstr=newStringBuilder();Mapcont=this.getStack().getContext();StrutsRequestWrapperreq=(StrutsRequestWrapper)cont.get(StrutsStatics.HTTP_REQUEST);if(url=null|.equals(url)url=(String)req.getAttribute(javax.servlet.forward.req
5、uest_uri);)StringpageNoStr=?pageNo=;if(dir.equals(urlType)/當(dāng) url 的類型為目錄類型時(shí),比如http:/localhost:8090/yongtree/page/1pageNoStr=;if(1.equals(pageNo)/第一頁(yè)時(shí)if(url.lastIndexOf(/)!=url.length()-1)if(url.lastIndexOf(1)=url.length()-1)如果有頁(yè)碼 1,則去掉 1url=url.substring(0,url.length()-1);elseif(url.lastIndexOf(/)!=u
6、rl.length()-1)如果沒(méi)有頁(yè)碼 1,并且最后不是/時(shí),加上/url=url+/;elseurl=url.substring(0,url.lastIndexOf(/)+1);/下面這段處理主要是用來(lái)處理動(dòng)態(tài)查詢的參數(shù),并拼接成 urlStringBufferperUrl=newStringBuffer();if(this.getParameters().size()!=0)Iteratoriter=this.getParameters().keySet().iterator();while(iter.hasNext()Stringkey=(String)iter.next();Obje
7、cto=this.getParameters().get(key);perUrl.append(&).append(key).append(=).append(o);IntegercpageInt=Integer.valueOf(pageNo);str.append();elsestr.append();/文本樣式 if(theme=null|text.equals(theme)/當(dāng)前頁(yè)與總頁(yè)數(shù)相等if(pageNo.equals(total)/如果 total=1,則無(wú)需分頁(yè),顯示“第 1 頁(yè)共 1 頁(yè)”if(1.equals(total)str.append(第+pageNo+頁(yè))
8、;str.append(共+total+頁(yè));else/到達(dá)最后一頁(yè),顯示首頁(yè)上一頁(yè)末頁(yè)str.append(首頁(yè));str.append(上頁(yè));str.append(末頁(yè));else/當(dāng)前頁(yè)與總頁(yè)數(shù)不相同if(1.equals(pageNo)/第一頁(yè),顯示首頁(yè)下一頁(yè)末頁(yè)”str.append(首頁(yè));str.append(下頁(yè));str.append(末頁(yè));else/不是第一頁(yè),顯示首頁(yè)上一頁(yè)下一頁(yè)末頁(yè)”str.append(首頁(yè));str.append(上頁(yè));str.append(下頁(yè));str.append(末頁(yè));elseif(number.equals(theme)/數(shù)字式12
9、345678910IntegertotalInt=Integer.valueOf(total);/如果只有一頁(yè),則無(wú)需分頁(yè)str.append();if(totalInt=1)str.append(1);elseif(cpageInt1)/當(dāng)前不是第一組,要顯示“/:返回前一組第一頁(yè)/:返回前一頁(yè)str.append(?);str.append(?);elsestr.append(?);intv=(cpageInt-4)0?(cpageInt-4):1;intv1=(cpageInt+4)totalInt?(cpageInt+4):totalInt;if(v1=totalInt)v=total
10、Int-10;v=(v=0?1:v);/如果為負(fù)數(shù),則修改為 1elseif(v=1&v110?10:totalInt;/10 個(gè)為一組顯示for(inti=v;i=v1;i+)if(cpageInt=i)/當(dāng)前頁(yè)要加粗顯示str.append(+i+);else/str.append(+i+);str.append(+i+);/如果多于 1 組并且不是最后一組,顯示“”if(cpageInt:返回下一組最后一頁(yè)/:返回下一頁(yè)str.append(?);str.append(?);elsestr.append(?);str.append();str.append();writer.wr
11、ite(str.toString();catch(IOExceptionex)ex.printStackTrace();returnresult;自定義分頁(yè)標(biāo)簽結(jié)構(gòu)的類:PageTag.java/*自定義分頁(yè)標(biāo)簽結(jié)構(gòu)或?qū)傩?authorJava 軟件工程師,專注于 java 領(lǐng)域新技術(shù)的研究和系統(tǒng)設(shè)計(jì)*date2008-11-4 下午 03:00:40*version1.0*/publicclassPageTagextendsComponentTagSupportprivateString pageNoprivateString total;privateString styleClasspr
12、ivateString theme;privateString url;privateString urlType;publicvoidsetUrlType(StringurlType)this.urlType=urlType;)publicvoidsetUrl(Stringurl)this.url=url;)publicvoidsetTheme(Stringtheme)this.theme=theme;)publicvoidsetStyleClass(StringstyleClass)this.styleClass=styleClass;)publicvoidsetPageNo(String
13、pageNo)this.pageNo=pageNo;)publicvoidsetTotal(Stringtotal)this.total=total;)OverridepublicComponentgetBean(ValueStackarg0,HttpServletRequestarg1,HttpServletResponsearg2)returnnewPages(arg0,arg1);)protectedvoidpopulateParams()super.populateParams();Pagespages=(Pages)component;pages.setPageNo(pageNo);
14、pages.setTotal(total);pages.setStyleClass(styleClass);pages.setTheme(theme);pages.setUrl(url);pages.setUrlType(urlType);)創(chuàng)建自定義標(biāo)簽的 tld 文件:1.01.2yt/yongtree-tagsJava 軟件工程師,專注于 java 領(lǐng)域新技術(shù)的研究和系統(tǒng)設(shè)計(jì)。的自定義標(biāo)簽pagescom.baiyyy.polabs.tag.PageTagjsp分頁(yè)標(biāo)簽pageNofalsetruetotalfalsetruestyleClassfalsetrue分頁(yè)標(biāo)簽的樣式,不配置此
15、項(xiàng)將采用默認(rèn)的樣式themefalsetrue分頁(yè)的主題,現(xiàn)支持 number|text 兩種主題urlfalsetrue分頁(yè)提交的路徑,默認(rèn)不用配置該項(xiàng),自動(dòng)獲取系統(tǒng)訪問(wèn)路徑。urlTypefalsetrueurl 的類型,現(xiàn)在支持兩種 url 類型,第一種默認(rèn)的 url,這種情況不需要設(shè)置;第二種情況是目錄型的 url,比如 http:/ dir。此種情況不支持動(dòng)態(tài)查詢,故標(biāo)簽體中不能加入?yún)?shù)這樣一個(gè)分頁(yè)標(biāo)簽就實(shí)現(xiàn)完了,下一步讓我們看看該怎樣使用吧。在頁(yè)面中引入自定義的標(biāo)簽庫(kù):開始配置分頁(yè)標(biāo)簽信息:共頁(yè)第頁(yè)!一分頁(yè)的動(dòng)態(tài)查詢參數(shù)需要全部注冊(cè)在這里 a這樣一個(gè)分頁(yè)組件就完成了,但是只是完成了
16、表現(xiàn)上的功能,我們還需要在后臺(tái)進(jìn)行封裝,我對(duì)它進(jìn)行了封裝,做了一個(gè) PageAction.javapublicclassPageActionextendsBaseActionprivateIntegerpageNo=1;privateIntegereveryPage=10;privateIntegertotal;Pagepage=newPage();publicIntegergetPageNo()returnpageNo;publicvoidsetPageNo(IntegerpageNo)this.page.setCurrentPage(pageNo);this.pageNo=pageNo;publicIntegergetEveryPage()returneveryPage;pub
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐廳建設(shè)土方施工承包合同
- 交通安全管理員聘用合同
- 環(huán)保工程驗(yàn)收審批告知承諾書
- 投資方入股協(xié)議書
- 2024年戶用光伏組件銷售安裝協(xié)議
- 文化傳播中心建設(shè)項(xiàng)目招標(biāo)
- 2024關(guān)于醫(yī)療設(shè)備采購(gòu)的買賣合同研究
- 房產(chǎn)測(cè)繪管理辦法:規(guī)范市場(chǎng)秩序
- 體育場(chǎng)館二手房買賣合同范本
- 清潔能源文件管理規(guī)定
- 第屆世界旅游小姐大賽中國(guó)云南總決賽招商贊助方案
- 愛(ài)立信網(wǎng)管BO操作流程
- 大學(xué)生計(jì)算與信息化素養(yǎng)-北京林業(yè)大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 第四代篦冷機(jī)液壓系統(tǒng)的故障與維護(hù)獲獎(jiǎng)科研報(bào)告
- 人大代表為人民
- 第五單元(知識(shí)清單)【 新教材精講精研精思 】 七年級(jí)語(yǔ)文上冊(cè) (部編版)
- 文明之痕:流行病與公共衛(wèi)生知到章節(jié)答案智慧樹2023年四川大學(xué)
- 鋼結(jié)構(gòu)設(shè)計(jì)原理全套PPT完整教學(xué)課件
- 《基于杜邦分析法周大福珠寶企業(yè)盈利能力分析報(bào)告(6400字)》
- 延安整風(fēng)與馬克思主義中國(guó)化
- 我國(guó)陸軍專業(yè)知識(shí)講座
評(píng)論
0/150
提交評(píng)論