- 浏览: 26438 次
- 性别:
- 来自: 湖南
最新评论
-
gundumw100:
不值得推荐!!!
show下我的分页类 -
wh8766:
楼主整理幸苦了~
SSH整合思路 -
kaki:
感谢楼主和大家分享,我还不如你。
show下我的分页类 -
cissco:
现在都转行搞Linux下的C/C++开发了,呵~
show下我的分页类 -
our651:
我觉得分页也应该与MVC、分层的思想一致,同时做到好的封装
代 ...
show下我的分页类
package com.xm.utils; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.kangsheng.cus.common.dbconn.DaoFactory; // Referenced classes of package com.sihitech.tools: // DaoFactory public class PageRoll { private String currentUrl; // private PageContext page; private DaoFactory pv; private HttpServletRequest request; private HttpServletResponse response; private String strParams; private String strlink; public PageRoll(HttpServletRequest request, HttpServletResponse response, DaoFactory pv) { currentUrl = ""; strParams = ""; this.request = request; this.response = response; this.pv = pv; currentUrl = request.getRequestURL().toString(); strParams = GetParamsFromCurrentUrl(); } private String GetParamsFromCurrentUrl() { String str1 = ""; String paraValue = ""; for (Enumeration enu = request.getParameterNames(); enu .hasMoreElements();) { String paraName = (String) enu.nextElement(); paraValue = request.getParameter(paraName); if (!paraName.equals("page")) str1 = str1 + "&" + paraName + "=" + paraValue; } return str1; } public void Show(boolean allRecord, boolean pageInfo, boolean pageNav, boolean jumpPage) { // PrintWriter out = response.getWriter(); // out.print("<table border=0> <tr><td>"); String link = ""; if (allRecord) link = link + ShowTotalRecord(); if (pageInfo) link = link + ShowPageInfo(); if (pageNav) link = link + ShowPageNav(); if (jumpPage) link = link + ShowJumpPage(); this.strlink = link; // out.print("</td></tr></table>"); } private String ShowJumpPage() { // PrintWriter out = response.getWriter(); String link = ""; link = link + "转到第<input type='text' name='page' size='1'><span>页</span><input type=button value='GO' onclick='goToPage()'>"; link = link + "<script language='javascript'>"; link = link + "function goToPage(){"; link = link + "value=document.all.page.value;"; link = link + "if(value.indexOf(\".\")==-1 && value.indexOf(\"-\")==-1 && value!==\"\" && !isNaN(value) && value>0 && value<" + (pv.GetTotalPage() + 1) + "){"; link = link + "location.assign('" + currentUrl + "?page='+value+'" + strParams + "')"; link = link + "}"; link = link + "}"; link = link + "</script>"; return link; } private String ShowPageInfo() { // PrintWriter out = response.getWriter(); String link = "第" + pv.GetCurrentPage() + "/" + pv.GetTotalPage() + "页 "; return link; } private String ShowPageNav() { // PrintWriter out = response.getWriter(); String link = ""; if (pv.GetTotalPage() > 1) link = "<a href='" + currentUrl + "?page=1" + strParams + "'><span>首页</span></a> "; else link = "<span>首页 </span>"; // if (pv.GetHasPrev()) link = link + "<a href='" + currentUrl + "?page=" + pv.GetPrevPageNumber() + strParams + "'><span>上页</span></a> "; else link = link + "<span>上页 </span>"; // if (pv.GetHasNext()) link = link + "<a href='" + currentUrl + "?page=" + pv.GetNextPageNumber() + strParams + "'><span>下页</span></a> "; else link = link + "<span>下页 </span>"; // if (pv.GetTotalPage() > 1) { link = link + "<a href='" + currentUrl + "?page=" + pv.GetTotalPage() + strParams + "'><span>尾页</span></a> "; return link; } else { link = link + "<span>尾页 </span>"; return link; } } private String ShowTotalRecord() { // PrintWriter out = response.getWriter(); String link = "<span>共" + pv.GetTotalRecord() + "条记录 </span>"; return link; } public String getStrlink() { return strlink; } public void setStrlink(String strlink) { this.strlink = strlink; } }
使用时,在action中建立该类的对象pr,并执行public void Show(boolean allRecord, boolean pageInfo, boolean pageNav,boolean jumpPage),将该对象放入ModelAndView,在页面使用${pr.strlink }就可以实现分页,如图
本人从事JAVA才1年,希望达到抛砖引玉的效果,大家把自己的工具拿出来show show,共同研究下,学习下
也建议版主弄一个工具包专题
评论
28 楼
yuxianghong
2008-11-18
把JavaScript和显示放在里面总感觉不是很好。
27 楼
bluemare
2008-11-18
用string来拼!!不好吧!
支持show代码的胆量,我怕一show就成隐藏或者新手
支持show代码的胆量,我怕一show就成隐藏或者新手
26 楼
hotrain
2008-11-18
把request和response都加进类里面,耦合太厉害了,不太灵活。
25 楼
deepthink
2008-11-18
xuming9 写道
package com.xm.utils; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.kangsheng.cus.common.dbconn.DaoFactory; // Referenced classes of package com.sihitech.tools: // DaoFactory public class PageRoll { private String currentUrl; // private PageContext page; private DaoFactory pv; private HttpServletRequest request; private HttpServletResponse response; private String strParams; private String strlink; public PageRoll(HttpServletRequest request, HttpServletResponse response, DaoFactory pv) { currentUrl = ""; strParams = ""; this.request = request; this.response = response; this.pv = pv; currentUrl = request.getRequestURL().toString(); strParams = GetParamsFromCurrentUrl(); } private String GetParamsFromCurrentUrl() { String str1 = ""; String paraValue = ""; for (Enumeration enu = request.getParameterNames(); enu .hasMoreElements();) { String paraName = (String) enu.nextElement(); paraValue = request.getParameter(paraName); if (!paraName.equals("page")) str1 = str1 + "&" + paraName + "=" + paraValue; } return str1; } public void Show(boolean allRecord, boolean pageInfo, boolean pageNav, boolean jumpPage) { // PrintWriter out = response.getWriter(); // out.print("<table border=0> <tr><td>"); String link = ""; if (allRecord) link = link + ShowTotalRecord(); if (pageInfo) link = link + ShowPageInfo(); if (pageNav) link = link + ShowPageNav(); if (jumpPage) link = link + ShowJumpPage(); this.strlink = link; // out.print("</td></tr></table>"); } private String ShowJumpPage() { // PrintWriter out = response.getWriter(); String link = ""; link = link + "转到第<input type='text' name='page' size='1'><span>页</span><input type=button value='GO' onclick='goToPage()'>"; link = link + "<script language='javascript'>"; link = link + "function goToPage(){"; link = link + "value=document.all.page.value;"; link = link + "if(value.indexOf(\".\")==-1 && value.indexOf(\"-\")==-1 && value!==\"\" && !isNaN(value) && value>0 && value<" + (pv.GetTotalPage() + 1) + "){"; link = link + "location.assign('" + currentUrl + "?page='+value+'" + strParams + "')"; link = link + "}"; link = link + "}"; link = link + "</script>"; return link; } private String ShowPageInfo() { // PrintWriter out = response.getWriter(); String link = "第" + pv.GetCurrentPage() + "/" + pv.GetTotalPage() + "页 "; return link; } private String ShowPageNav() { // PrintWriter out = response.getWriter(); String link = ""; if (pv.GetTotalPage() > 1) link = "<a href='" + currentUrl + "?page=1" + strParams + "'><span>首页</span></a> "; else link = "<span>首页 </span>"; // if (pv.GetHasPrev()) link = link + "<a href='" + currentUrl + "?page=" + pv.GetPrevPageNumber() + strParams + "'><span>上页</span></a> "; else link = link + "<span>上页 </span>"; // if (pv.GetHasNext()) link = link + "<a href='" + currentUrl + "?page=" + pv.GetNextPageNumber() + strParams + "'><span>下页</span></a> "; else link = link + "<span>下页 </span>"; // if (pv.GetTotalPage() > 1) { link = link + "<a href='" + currentUrl + "?page=" + pv.GetTotalPage() + strParams + "'><span>尾页</span></a> "; return link; } else { link = link + "<span>尾页 </span>"; return link; } } private String ShowTotalRecord() { // PrintWriter out = response.getWriter(); String link = "<span>共" + pv.GetTotalRecord() + "条记录 </span>"; return link; } public String getStrlink() { return strlink; } public void setStrlink(String strlink) { this.strlink = strlink; } }
使用时,在action中建立该类的对象pr,并执行public void Show(boolean allRecord, boolean pageInfo, boolean pageNav,boolean jumpPage),将该对象放入ModelAndView,在页面使用${pr.strlink }就可以实现分页,如图
本人从事JAVA才1年,希望达到抛砖引玉的效果,大家把自己的工具拿出来show show,共同研究下,学习下
也建议版主弄一个工具包专题
好像写的是太死了,不应该把HTML也写到里面去,这个是基本
24 楼
tianmo2008
2008-11-18
显示和分页逻辑偶合在一起了。和跟html有关的都想办法去掉
23 楼
icefire
2008-11-18
xuming9 写道
icefire 写道
输出都写死了,无法定制输出内容,无法定义样式,无法国际化,GetParamsFromCurrentUrl()……总之,很差。
<div id="product_page">
${pr.strlink }
</div>
样式可以定义,
国际化也可以使用哦,只是目前我这个项目没涉及到国际化,没改
这只是我个人使用的,有很多缺点,大家讨论下嘛,
多谢楼上的意见,希望大家多多提出意见,多多完善
其实这都源于一个原因,你把分页展现写死在了类里。假如用户要改成像JAVAEYE一样的分页效果呢?
更假如有的界面要一种效果,另外的页面又要另一种效果呢?
虽然样式是可以定义,但很难细化。。。
真正的样式不只是字体,大小,颜色……还包括你的输出文字。
比如 第2/3页,改成 当前第 2 页,共 3 页,
比如用户要跳转是下拉选的呢?
留白用CSS来定义,不要用 
多看看别人的吧,比如displaytag怎么处理的。虽然我觉得也不怎么好!主要自由度还不够大。。
分页的工具有很多,自己多搜搜吧!
以前我和你一样,不过我是写死在taglib中。
str1 = str1 + "&" + paraName + "=" + paraValue;
不要用字符串加和,用stringbuilder,其他地方也是
其实可以用replace把page参数去掉
国际化需求是少的,不过改视图中名称的情况是多的,改一个资源文件多好,并且保证一致,不会出现某个页面少打一个字。。。低耦合总是好的。其实国际化也不会增加多少工作。不过选择权在自己手上,自己怎么选,那得看自己了。
22 楼
andy54321
2008-11-18
恩。。。。
LS几个说的js组建还是不错的
LS几个说的js组建还是不错的
21 楼
xuming9
2008-11-18
呵呵,多谢提出宝贵建议,
还有楼上说的JS组件,偶没用过,能推荐几个不
还有楼上说的JS组件,偶没用过,能推荐几个不
20 楼
sgysgy
2008-11-18
至少用StringBuffer来拼吧
19 楼
liangwenzheng
2008-11-18
恩, 支持show代码:)
18 楼
eoeac
2008-11-18
eneasy 写道
别的不说,代码规范不是很好。至少有两个我看不惯的,方法的名称首字母用大写和这样拼String.
同感,方法名称首字母大写貌似C#的写法,但这样拼String确实有些丑陋。
同感,方法名称首字母大写貌似C#的写法,但这样拼String确实有些丑陋。
不过还是给点掌声吧
17 楼
ruderal
2008-11-18
按照你的想法,不如写成JspTags更方便点...
16 楼
eneasy
2008-11-18
别的不说,代码规范不是很好。至少有两个我看不惯的,方法的名称首字母用大写和这样拼String.
15 楼
SysTem128
2008-11-18
讨论的这么激烈~我也发一个。
http://www.iteye.com/topic/269307
http://www.iteye.com/topic/269307
14 楼
zhxp791008
2008-11-18
Page类和reqeust,response混在起。应该分开。
”上一页“”下一页“这些东东应该放在jsp中进行展现。不能写死。
其它没有仔细看
”上一页“”下一页“这些东东应该放在jsp中进行展现。不能写死。
其它没有仔细看
13 楼
jiming
2008-11-18
还是直接使用 Displaytag 吧。很好很强大。
12 楼
hypercube1024
2008-11-18
分页还用得着写个类-_-! ExtJS或者别的什么js组件都有现成的分页组件,直接用得了,传两个参数,当前页 和 最大页 就够了,而且还是 Ajax 无刷新的,既然别人都做成组件了,直接调用得了,别这么大费周章
11 楼
mayday85
2008-11-18
<pre name='code' class='java'><pre name='code' class='java'>//回调接口
import java.util.List;
public interface Page {
public List<?> selectForPage(Object[] args,int offset, int length);
public int selectCounts();
}
//Javabean
import java.util.* ;
public class Pagination{
private int rowscount ;
private int pagecount ;
private int pagesize ;
private int pagenum ;
private boolean nextcount ;
private boolean previouscount ;
private Page page;
public Pagination( int pagesize,Page page){
this.pagesize = pagesize ;
this.rowscount = page.selectCounts();
this.page = page ;
this.pagenum = 1 ;
if( (rowscount/pagesize)*pagesize == rowscount )
this.pagecount = rowscount/pagesize ;
else
this.pagecount = (rowscount/pagesize) + 1 ;
}
public List<?> queryByPage(int pageNo,Object[] agrs){
this.pagenum = pageNo ;
int begin = 0 ;
if( pageNo == 1 ){
begin = 1 ;
}else{
begin = ( pageNo - 1) * this.pagesize ;
}
return page.selectForPage(agrs, begin, this.pagesize);
}
public int getPagenum(){
return this.pagenum ;
}
public int getPagecount(){
return this.pagecount ;
}
public boolean getNextcount(){
if( pagecount - pagenum >= 5)
this.nextcount = true ;
else
this.nextcount = false ;
return this.nextcount ;
}
public boolean getPreviouscount(){
if( pagenum > 5)
this.previouscount = true ;
else
this.previouscount = false ;
return this.previouscount ;
}
}</pre>
</pre>
<p>不知道说什么,我接触编程1年,上面这个分页已经改过了,现在找不到最新的</p>
import java.util.List;
public interface Page {
public List<?> selectForPage(Object[] args,int offset, int length);
public int selectCounts();
}
//Javabean
import java.util.* ;
public class Pagination{
private int rowscount ;
private int pagecount ;
private int pagesize ;
private int pagenum ;
private boolean nextcount ;
private boolean previouscount ;
private Page page;
public Pagination( int pagesize,Page page){
this.pagesize = pagesize ;
this.rowscount = page.selectCounts();
this.page = page ;
this.pagenum = 1 ;
if( (rowscount/pagesize)*pagesize == rowscount )
this.pagecount = rowscount/pagesize ;
else
this.pagecount = (rowscount/pagesize) + 1 ;
}
public List<?> queryByPage(int pageNo,Object[] agrs){
this.pagenum = pageNo ;
int begin = 0 ;
if( pageNo == 1 ){
begin = 1 ;
}else{
begin = ( pageNo - 1) * this.pagesize ;
}
return page.selectForPage(agrs, begin, this.pagesize);
}
public int getPagenum(){
return this.pagenum ;
}
public int getPagecount(){
return this.pagecount ;
}
public boolean getNextcount(){
if( pagecount - pagenum >= 5)
this.nextcount = true ;
else
this.nextcount = false ;
return this.nextcount ;
}
public boolean getPreviouscount(){
if( pagenum > 5)
this.previouscount = true ;
else
this.previouscount = false ;
return this.previouscount ;
}
}</pre>
</pre>
<p>不知道说什么,我接触编程1年,上面这个分页已经改过了,现在找不到最新的</p>
10 楼
sbfwfn
2008-11-18
支持!大家有好东西都拿出来分享一下!
9 楼
sjwiner
2008-11-18
不要总是批评人家写的程序不好,如果你们觉得自己写的水平高,也拿出来让大家学习学习啊。
相关推荐
2. **样式调整**:可以通过调整类中的属性值来改变分页组件的外观,例如更改文字、图标等。 #### 六、总结 PHP超强分页类不仅提供了基础的分页功能,还支持自定义显示模式、AJAX分页等功能,使得开发者能够根据项目...
在实际使用中,开发者可以通过`ShowPage`类设置分页参数,然后调用其内部的查询方法,由`ShowSQL.java`生成对应的SQL语句,最后执行查询并返回结果。这个过程中,`StringUtil.java`起到辅助作用,确保SQL的正确性和...
5. **show_page.rar**:这个名字暗示可能是一个分页类,用于处理大型数据集的分页显示,常用于网页上显示大量的记录时,提高用户体验。 6. **adodb300.tgz**:ADODB(Active Record Object-Database Bridge)是一个...
根据给定的信息,本文将对一个“简单、方便、功能全”的PHP分页类进行详细的解析,包括其构造方法、属性、以及如何实现分页显示的功能。通过本篇内容,您将了解到该类的设计思想、核心函数的工作原理,以及如何在...
此外,类中的`show`方法(在文档片段中未显示)应该负责将处理好的分页数据转换为HTML输出。 ### 结论 通过以上知识点的讨论,我们可以看出,万能的PHP分页类对于快速开发和实现分页功能是非常有帮助的。开发者只...
此外,类内部可能有错误处理机制,如`ErrInfo`和`ShowError`方法,当参数错误或出现异常时,会显示相应的错误信息。 总的来说,这个ASP超强分页类通过优化代码和算法,提高了处理大量数据时的分页效率,同时提供了...
分页类支持四种不同的分页模式,可以通过`show`方法的参数来切换。这四种模式可能包括不同的显示样式或链接结构,例如,模式1可能是基础的数字链接,模式2可能包含上一页/下一页按钮等。 5. **AJAX支持** 当`is_...
当网站的留言内容越来越多的时候,分页功能的应用就应运而生了,来重点讲解下ThinkPHP框架自带的分页类的调用。 知识点: 1、count函数的试用 2、Page类实例化操作及相关参数了解 3、limit函数了用 4、show函数...
`Page`类提供了`show()`方法,用于生成分页的HTML代码。默认情况下,它会根据设定的样式生成完整的分页链接。例如: ```php echo $Page->show(); // 输出分页HTML ``` 4. **获取分页数据**: 调用`Page`类的`...
ThinkPhp仿百度分页类,在ThinkPhp3.1.3下测试通过 Author: 泡泡堂 <46445280@qq.com> 参照 ThinkPhp3.1.3 及 ThinkPhp3.2.1护展包下的 Page.class.php 说明:在ThinkPhp3.1.3下测试通过,其它版本未做测试 ...
`Show.asp`文件可能是展示分页数据的主页面。在这个文件中,我们需要实例化分页类,传入必要的参数如每页显示的记录数、当前页数、数据库连接信息等。然后调用`GetPageData()`方法获取当前页的数据,并在HTML中进行...
* description:超强分页类,四种分页模式,默认采用类似baidu,google的分页风格。 * 2.0增加功能:支持自定义风格,自定义样式,同时支持PHP4和PHP5, * to see detail,please visit ...
php 分页类,很方便使用 ////演示 ////require_once('../libs/classes/page.class.php'); //$page=new minupage(array('total'=>1000,'perpage'=>20)); //echo 'mode:1 '.$page->show(); //echo '<hr>mode:2 '...
自己写的简单实用的PHP分页类,支持URL重写,支持多种选项设置 包括: show_list-是否显示数字列表页码 list_num-当显示数字列表页码时该变量表示数字的数量 prefix-当使用URL重写时使用该变量值连接表示的页码的GET...
当网站的留言内容越来越多的时候,分页功能的应用就应运而生了,来重点讲解下ThinkPHP框架自带的分页类的调用。 知识点: 1、count函数的试用 2、Page类实例化操作及相关参数了解 3、limit函数了用 4、...
在网页开发中,分页是一种常见的用户界面设计,用于处理大量数据时的浏览体验优化。jQuery,作为一个轻量级的JavaScript库,提供了丰富的插件来实现分页功能。本篇文章将详细讲解如何使用jQuery分页插件来设置分页...
通过以上步骤,你可以实现Struts2.0框架下的数据分页功能。注意,为了优化性能和用户体验,还应考虑缓存策略、错误处理和异常处理等细节。同时,随着技术的发展,现代的Web应用可能更倾向于使用ORM框架(如Hibernate...
一种是最简单的普通分页模式[首页] [上页] [下页] [尾页]模式,另一种是经典分页模式,即:[1][2][3][4][5][6][7][8][9][10][下一页][尾页]。 使用方法 require_once 'pager.class.php'; $pager = new pager($...