- 浏览: 887602 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
发现在系统中有好多写得很好的代码,也不知道是哪位前辈留下来的.整理一下...
自定义分页标签库
1:在配置文件中配置
<!-- self Tag Library Descriptors -->
<taglib>
<taglib-uri>/WEB-INF/self-html.tld</taglib-uri>
<taglib-location>/WEB-INF/self-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/self-html.tld</taglib-uri>
<taglib-location>/WEB-INF/self-html.tld</taglib-location>
</taglib>
2:在self-html.tld中page标签的配置
<tag>
<name>page</name>
<tagclass>com.jbbis.netedu.common.util.taglib.PageTag</tagclass>
<bodycontent>empty</bodycontent>
<info>tag here</info>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>pageNum</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>method</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>methodValue</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>form</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>action</name>
<required>flase</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>returnLevel</name>
<required>flase</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<name>page</name>
<tagclass>com.jbbis.netedu.common.util.taglib.PageTag</tagclass>
<bodycontent>empty</bodycontent>
<info>tag here</info>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>pageNum</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>method</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>methodValue</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>form</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>action</name>
<required>flase</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>returnLevel</name>
<required>flase</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
其实从这儿也可以看到在PageTag文件中是一些什么值了...
3:PageTag中的具体操作(精华全部在这儿啦)
/**//*
* Created on 2004-6-25
*
*/
package com.jbbis.netedu.common.util.taglib;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import com.jbbis.netedu.common.page.NullPage;
import com.jbbis.netedu.common.page.Page;
/** *//**
* @author leo_deng
*
*/
public class PageTag extends TagSupport {
/**//* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#doStartTag()
*/
private String name;
private String pageNum="pageNum";
private String method="method";
private String methodValue;
private String form="mainForm";
private String action;
private String returnLevel;
private final int CONST_FIRST=1;
private final int CONST_NEXT=2;
private final int CONST_PRIOR=3;
private final int CONST_LAST=4;
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
try{
JspWriter out = pageContext.getOut() ;
Page page=(Page)pageContext.getRequest().getAttribute(name);
if(page==null)
page=NullPage.instance();
out.print(getHtml(page.getPageNumber(),page.getPageCount()));
out.print(getJs(page.getPageNumber(),page.getPageCount()));
//jspwriter是一个隐含对象,用于向jsp网页输出内容。输出的目标由
// pagecontext.getout提供
//向jsp网页上下文输出
}catch(IOException ioException){
throw new JspException(ioException.getMessage() );
}//catch
return(SKIP_BODY);
}
/**//*
* <
* <!--
* function page_next(){
* form.action=""
* form.pageNum=""
* form.method.value=""
* form.submit;
*
* }
* function page_prior()
* function page_first()
* funciotn page_last()
*
* //-->
* <div class="listbox_page">
<a class="page" ><img src="public/icon/first.gif" alt="首页" align="absmiddle" border="0" onclick="page_first()"/></a>
<a class="page" ><img src="public/icon/previous.gif" alt="上页" align="absmiddle" border="0" onclick="page_first()"/></a>
第<input class="page_number" name="pageNum" value=""> <img src="page_go.gif" class="page_go">页
<a class="page" ><img src="public/icon/next.gif" alt="下页" align="absmiddle" border="0"/ onclick="page_next()"></a>
<a class="page" ><img src="public/icon/last.gif" alt="末页" align="absmiddle" border="0"/ onclick="page_prior()"></a>
共 <span class="page_sum">1000</span> 页
</div>
*
* */
private String getJs(int pageNum,int totalNum){
StringBuffer sb=new StringBuffer();
sb.append("\n<script language=\"JavaScript\">\n<!--");
sb.append(printFunction("page_first",pageNum,totalNum,CONST_FIRST));
sb.append(printFunction("page_next",pageNum,totalNum,CONST_NEXT));
sb.append(printFunction("page_prior",pageNum,totalNum,CONST_PRIOR));
sb.append(printFunction("page_last",pageNum,totalNum,CONST_LAST));
getGoJs(sb,pageNum,totalNum);
sb.append("\n //-->\n</script>");
return sb.toString();
}
private void getGoJs(StringBuffer sb,int pageNum,int totalNum){
sb.append("function page_go(obj){\n");
sb.append("var page_number=document.getElementById(\"page_number\");\n");
sb.append("if( page_number.value != new Number(page_number.value))return alert(\"请输入正确的页数\");\n");
sb.append("if(page_number.value<1) page_number.value=1;if(page_number.value>");
sb.append(totalNum);
sb.append(")page_number.value=");
sb.append(totalNum);
sb.append(";\n");
sb.append("if(page_number.value!="+pageNum+")");
sb.append("submitForPageNum(obj);\n");
sb.append("}");
}
private StringBuffer printFunction(String function,int pageNumber,int totalNumber,int pageConst){
StringBuffer sb=new StringBuffer();
sb.append("\nfunction "+function+"(){");
sb.append("\nevent.returnValue=false;");
sb.append(printAction());
sb.append(printMethod());
//sb.append("\n"+this.form+".submit();\n}");
if(totalNumber>1){
switch(pageConst){
case CONST_FIRST:
if(pageNumber>1){
sb.append(printPageNum(String.valueOf(1)));
sb.append("\n submitForPageNum("+this.form+");");
}
break;
case CONST_LAST:
if(pageNumber<totalNumber){
sb.append(printPageNum(String.valueOf(totalNumber)));
sb.append("\n submitForPageNum("+this.form+");");
}
break;
case CONST_PRIOR:
if(pageNumber>1){
sb.append(printPageNum(String.valueOf(pageNumber-1)));
sb.append("\n submitForPageNum("+this.form+");");
}
break;
case CONST_NEXT:
if(pageNumber<totalNumber){
sb.append(printPageNum(String.valueOf(pageNumber+1)));
sb.append("\n submitForPageNum("+this.form+");");
}
break;
}
}
sb.append("\n}");
return sb;
}
/**//*
private StringBuffer printFunction(String function,String pageNum,int pageConst){
StringBuffer sb=new StringBuffer();
sb.append("\nfunction "+function+"(){");
sb.append("\nevent.returnValue=false;");
sb.append(printAction());
sb.append(printMethod());
sb.append(printPageNum(pageNum));
//sb.append("\n"+this.form+".submit();\n}");
sb.append("\n submitForPageNum("+this.form+");\n}");
sb.append("\n}");
* Created on 2004-6-25
*
*/
package com.jbbis.netedu.common.util.taglib;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import com.jbbis.netedu.common.page.NullPage;
import com.jbbis.netedu.common.page.Page;
/** *//**
* @author leo_deng
*
*/
public class PageTag extends TagSupport {
/**//* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#doStartTag()
*/
private String name;
private String pageNum="pageNum";
private String method="method";
private String methodValue;
private String form="mainForm";
private String action;
private String returnLevel;
private final int CONST_FIRST=1;
private final int CONST_NEXT=2;
private final int CONST_PRIOR=3;
private final int CONST_LAST=4;
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
try{
JspWriter out = pageContext.getOut() ;
Page page=(Page)pageContext.getRequest().getAttribute(name);
if(page==null)
page=NullPage.instance();
out.print(getHtml(page.getPageNumber(),page.getPageCount()));
out.print(getJs(page.getPageNumber(),page.getPageCount()));
//jspwriter是一个隐含对象,用于向jsp网页输出内容。输出的目标由
// pagecontext.getout提供
//向jsp网页上下文输出
}catch(IOException ioException){
throw new JspException(ioException.getMessage() );
}//catch
return(SKIP_BODY);
}
/**//*
* <
* <!--
* function page_next(){
* form.action=""
* form.pageNum=""
* form.method.value=""
* form.submit;
*
* }
* function page_prior()
* function page_first()
* funciotn page_last()
*
* //-->
* <div class="listbox_page">
<a class="page" ><img src="public/icon/first.gif" alt="首页" align="absmiddle" border="0" onclick="page_first()"/></a>
<a class="page" ><img src="public/icon/previous.gif" alt="上页" align="absmiddle" border="0" onclick="page_first()"/></a>
第<input class="page_number" name="pageNum" value=""> <img src="page_go.gif" class="page_go">页
<a class="page" ><img src="public/icon/next.gif" alt="下页" align="absmiddle" border="0"/ onclick="page_next()"></a>
<a class="page" ><img src="public/icon/last.gif" alt="末页" align="absmiddle" border="0"/ onclick="page_prior()"></a>
共 <span class="page_sum">1000</span> 页
</div>
*
* */
private String getJs(int pageNum,int totalNum){
StringBuffer sb=new StringBuffer();
sb.append("\n<script language=\"JavaScript\">\n<!--");
sb.append(printFunction("page_first",pageNum,totalNum,CONST_FIRST));
sb.append(printFunction("page_next",pageNum,totalNum,CONST_NEXT));
sb.append(printFunction("page_prior",pageNum,totalNum,CONST_PRIOR));
sb.append(printFunction("page_last",pageNum,totalNum,CONST_LAST));
getGoJs(sb,pageNum,totalNum);
sb.append("\n //-->\n</script>");
return sb.toString();
}
private void getGoJs(StringBuffer sb,int pageNum,int totalNum){
sb.append("function page_go(obj){\n");
sb.append("var page_number=document.getElementById(\"page_number\");\n");
sb.append("if( page_number.value != new Number(page_number.value))return alert(\"请输入正确的页数\");\n");
sb.append("if(page_number.value<1) page_number.value=1;if(page_number.value>");
sb.append(totalNum);
sb.append(")page_number.value=");
sb.append(totalNum);
sb.append(";\n");
sb.append("if(page_number.value!="+pageNum+")");
sb.append("submitForPageNum(obj);\n");
sb.append("}");
}
private StringBuffer printFunction(String function,int pageNumber,int totalNumber,int pageConst){
StringBuffer sb=new StringBuffer();
sb.append("\nfunction "+function+"(){");
sb.append("\nevent.returnValue=false;");
sb.append(printAction());
sb.append(printMethod());
//sb.append("\n"+this.form+".submit();\n}");
if(totalNumber>1){
switch(pageConst){
case CONST_FIRST:
if(pageNumber>1){
sb.append(printPageNum(String.valueOf(1)));
sb.append("\n submitForPageNum("+this.form+");");
}
break;
case CONST_LAST:
if(pageNumber<totalNumber){
sb.append(printPageNum(String.valueOf(totalNumber)));
sb.append("\n submitForPageNum("+this.form+");");
}
break;
case CONST_PRIOR:
if(pageNumber>1){
sb.append(printPageNum(String.valueOf(pageNumber-1)));
sb.append("\n submitForPageNum("+this.form+");");
}
break;
case CONST_NEXT:
if(pageNumber<totalNumber){
sb.append(printPageNum(String.valueOf(pageNumber+1)));
sb.append("\n submitForPageNum("+this.form+");");
}
break;
}
}
sb.append("\n}");
return sb;
}
/**//*
private StringBuffer printFunction(String function,String pageNum,int pageConst){
StringBuffer sb=new StringBuffer();
sb.append("\nfunction "+function+"(){");
sb.append("\nevent.returnValue=false;");
sb.append(printAction());
sb.append(printMethod());
sb.append(printPageNum(pageNum));
//sb.append("\n"+this.form+".submit();\n}");
sb.append("\n submitForPageNum("+this.form+");\n}");
sb.append("\n}");
发表评论
-
UrlRewriteFilter--动态URL静态化
2011-04-25 13:38 2039版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声 ... -
Java框架数据库连接池比较(c3p0,dbcp和proxool)
2011-04-08 22:34 703现在常用的开源数据连 ... -
Java Proxool 源代码分析
2011-04-03 00:31 1088入口点:ProxoolFacade. 启动顺序: ... -
一个相当好的自定义标签---分页(二)
2011-04-02 22:23 935在上一个介绍里面主要讲到了分页标签的配置,逻辑处理,引用。 ... -
恢复被CVS被Override and Update后的代码
2011-04-02 20:45 2020今天做了件相当愚蠢的事,把一个新的功能(之前未提交过代码)写完 ... -
MD5加密
2011-03-07 09:03 859因为用到所以就写了个加密的方法 如您发现有任何错误请Mailt ... -
抓取谷歌网页问题
2011-03-02 11:52 881当使用 URL url = new URL("htt ... -
readme
2011-03-01 15:57 7932011-3-1 /** * 循环创建父目录 * @ ... -
proxool配置文档(一)
2011-02-21 22:16 1103一、 所需要包 conmmons-loggin ... -
proxool配置文档(一)
2011-02-21 22:10 954一、 所需要包 conmmons-loggin ... -
总结一些常用功能源码
2011-02-18 09:32 909最近比较闲,总结一些开发中常用到的功能源码,把它挂出来;这样一 ... -
jboss + JMS 开发实例
2011-02-14 17:07 1798核心提示:异步进程通信是面向服务架构(SOA)一个重要的组 ... -
成为软件架构师
2011-02-01 21:48 914现在软件架构师满天飞 ... -
log4j中配置日志文件相对路径
2011-01-28 16:52 1156方法一、 解决的办法自然是用相对路径代替绝对路径,其实log4 ... -
HttpClient|HttpClient请求详解
2011-01-28 12:50 1138HttpClient 是 Apache Jakarta Com ... -
Log4J通用配置|注意问题 笔记
2011-01-28 12:46 1122关于日志的等级 那些去 百度就知道了! 这几天 要搭个新框架 ... -
JAVA WEB学习笔记(一)-Cookie和Session专题
2011-01-27 12:46 1081一、cookie机制和session机制的区别******** ... -
深入 理解 Statement 和 PreparedStatement
2011-01-26 22:05 1062一、使用Statement而不是PreparedState ... -
培析J2EE分层结构
2011-01-20 22:56 933http://hi.baidu.com/gabe2008/bl ... -
j2EE 分层模式中的异常架构设计
2011-01-20 22:45 1568Java引入了异常处理给 ...
相关推荐
标题中的“一个封装好的分页控件”指的是在软件开发中用于处理大量数据展示的UI组件,这种控件能够将大量的记录分割成多个小部分,每次只加载一部分数据到界面上,提高用户浏览效率和应用性能。在.NET环境中,这样的...
分页标签通常是一个自定义标签库,可以接受页码、每页记录数等参数,并返回相应的查询结果。这种方式提高了代码的可读性和可维护性。 总的来说,MySQL和Oracle都提供了有效的分页解决方案,但它们的语法略有不同。...
Struts2.0是Struts框架的一个重大升级版本,它在继承了Struts1.x的优良特性基础上,引入了大量的新功能和改进,特别是在标签库方面,提供了更为强大、灵活和易于使用的标签集,大大简化了Web应用的开发过程。...
1. **PageBreak**: 在ReportLab中,`PageBreak`对象被用来插入一个新的页面。当你想要在某个特定点结束当前页面并开始新的一页时,可以使用它。例如: ```python from reportlab.pdfgen import canvas from ...
`searchList`应该是一个包含各种表单字段配置的对象数组,包括类型(type)、标签(label)、属性(prop)、宽度(labelWidth)等信息。根据字段类型,可以创建不同类型的输入控件,如`el-input`、`el-date-picker`...
一个好的插件不仅要功能强大,还需要考虑到性能问题。这个分页排序插件可能进行了性能优化,比如使用索引提升查询速度,减少数据库负载,或者利用Ajax技术实现无刷新排序和分页,提高用户体验的同时降低了服务器压力...
- PageControl通常包含多个TabPages,每个TabPage相当于一个独立的界面。 - 分页切换:处理WM_NOTIFY消息,响应TCN_SELCHANGE通知,更新当前显示的页面。 - 自定义分页样式:调整分页按钮的外观,例如使用圆角...
eXtremeComponents 是一个功能强大的组件库,尤其以其在JSP中的extremetable标签而闻名,它提供了一种类似于displaytag的便捷方式来处理表格展示,极大地提高了开发效率和用户体验。本文将深入探讨eXtremeComponents...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...
针对程序员: 模板 API | 自定义标签(tags)和过滤器(filters) 表单 Django 提供了一个丰富的框架来帮助创建表单和处理表单数据。 基础: 概览 | 表单 API | 内建字段 | 内建 widgets 进阶: 针对模型的表单 | 整合媒体...
YxB2B商务网是易想网络旗下的门户型B2B行业网站系统,采用先进的标签技术和静态生成技术,通过网站后台管理轻松实现网站前台多种风格和会员网站多风格,让每一个只要懂得简单网页制作常识的网友,轻松制作出精美专业...
**WordPress滑动图相册插件ML...无论你是希望提升网站视觉吸引力,还是需要一个高效展示产品或内容的工具,ML-Slider都是一个值得信赖的选择。在实际使用中,请确保自行测试以熟悉各项设置,以充分利用这款插件的优势。
-一个典型应用,在Window控件中打开新页面,如果传递的参数不正确,则首先提示参数不对然后关闭此弹出窗口。 -ExtAspNet.Alert.Show("参数错误!", String.Empty, ExtAspNet.ActiveWindow.GetCloseReference());...
│ 13-zTree树形结构-Demo4-一次加载数据,避免多次数据库交互,提高效率7 M) d& `5 L5 T2 d7 R$ s │ 14-zTree树形结构-Demo5-一次加载数据,Map集合解决双层for性能问题 │ 0 D% f8 ?. j2 W( U' z, e ├─众筹项目-第...
同时,Firefox还支持分页浏览,允许用户在一个窗口内打开多个网页,便于多任务处理。 总的来说,Firefox 78.0b8-win32版本提供了一流的浏览体验,无论是对于普通用户还是高级用户,都是一款值得信赖的浏览器。它的...
MyBatis 是一个基于 Java 的持久层框架,它简化了对数据库的操作,通过 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 2. **MyBatis...
例如,可以创建一个PageInterceptor插件实现分页功能。 6. **事务管理**:MyBatis支持手动和自动事务管理。在Spring集成中,通常会使用Spring的事务管理,但在简单的应用中,MyBatis也可以独立处理事务。 7. **...
在MFC中,`CTabSheet`类是用于实现Tab控件的一个关键组件,它允许你在同一个窗口内创建多个分页,每个分页可以展示不同的内容。`CTabSheet`是`CPropertySheet`类的一部分,常用于创建多页对话框式的应用程序。 标题...
- **Redirect**:客户端重定向,相当于新发起一个请求。 - **Forward和Redirect的问题**:比较两者的优缺点,选择合适的跳转方式。 #### 第4章 四个作用域 - **作用域概念**:介绍PageScope、RequestScope、...