- 浏览: 280326 次
- 性别:
- 来自: 湖南
文章分类
- 全部博客 (120)
- Struts 1.框架 (12)
- Spring框架 (9)
- hibernate框架 (6)
- web 综合 (15)
- Dwr (1)
- struts 2 (19)
- 设计模式 (0)
- lucene (6)
- oracle (3)
- linux (10)
- mysql (4)
- jquery (0)
- AJAX (1)
- javaScript (1)
- J2SE (4)
- IBATIS (3)
- JPA (1)
- Compass (3)
- 报表 (1)
- 任务调度 (1)
- tomcat (3)
- RMI (0)
- JMS (2)
- WebService (2)
- SOAP (0)
- XML (1)
- 多线程 (8)
- 缓存 (2)
- nginx (3)
- mongodb (1)
- ant打包 (0)
最新评论
-
iceman1952:
Hi 你觉得很好的那两三篇 百度文库的链接,能贴一下吗?
内网穿透&UDP打洞 -
ice86rain:
里面貌似没有用到Lucene
Struts2+Hibernate3.2+Spring2.5+Compass整合 -
sgq0085:
写得非常详细 好文章
JMS之ActiveMQ Linux下安装与应用实例 -
強顔歓笶:
JMS之ActiveMQ Linux下安装与应用实例 -
yixiandave:
forcer521 写道不指定所有子目录都在一起的话,这样用源 ...
linux下nginx稳定版1.6.2安装
编写处理类
在web-INF下创建my.tld文件
在web.xml中配置
在jsp中导入标签
自定义分页标签的编写
第一步:
第二步:
编写WEB_INF下tld目录下的paginator.tld
第三步:
引入标签体
第四步:
在jsp页面上
结束!
希望对忘记了的朋友有帮助,也是为了在项目中能迅速copy 谢谢~
package com.oa; import com.oa.manager.AclManager; //JSTL函数,完成权限的即时认证 public class SecurityFunction { private static AclManager aclManager; public static boolean method(int userId,String sn,int permission) { return aclManager.hasPermissionByResourceSn(userId, sn, permission); } //该方法不能定义为public static ,否则spring无法注入 public void setAclManager(AclManager aclManager) { SecurityFunction.aclManager = aclManager; } }
在web-INF下创建my.tld文件
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <display-name>JSTL functions</display-name> <tlib-version>1.1</tlib-version> <short-name>my</short-name> <uri>http://www.oa.com/jsp/jstl/functions</uri> <function> <name>method</name> <function-class>com.oa.SecurityFunction</function-class> <function-signature> boolean method(int, java.lang.String, int) </function-signature> </function> </taglib>
在web.xml中配置
<jsp-config> <taglib> <taglib-uri>http://www.oa.com/jsp/jstl/functions</taglib-uri> <taglib-location>/WEB-INF/my.tld</taglib-location> </taglib> </jsp-config>
在jsp中导入标签
<%@ taglib prefix="my" uri="/WEB-INF/my.tld" %> <c:if test="${my:method(id,searchString,p)}"> ....... </c:if>
自定义分页标签的编写
第一步:
/** * */ package com.cmsz.rist.common.page; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspTagException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.TagSupport; import org.apache.log4j.Logger; import com.cmsz.rist.init.RistConfig; /** * 分页tag,生成分页的跳转标识 * * */ public class PaginatorTag extends TagSupport { /** * Logger for this class */ private static final Logger logger = Logger.getLogger(PaginatorTag.class); /** * */ private static final long serialVersionUID = 1L; private String form;// 页面的form名 private String action;// 跳转的action URL private String name; // 分页器的名称 private String scope = "request"; // 分页器所在位置page/request/session/application private static final Map<String, Integer> scopeMap = new HashMap<String, Integer>(); // 属性范围Map static { // 初始化属性范围Map scopeMap.put("page", PageContext.PAGE_SCOPE); scopeMap.put("request", PageContext.REQUEST_SCOPE); scopeMap.put("session", PageContext.SESSION_SCOPE); scopeMap.put("application", PageContext.APPLICATION_SCOPE); } public int doEndTag() throws JspTagException { //工程路径 String rootPath = com.cmsz.rist.common.util.SystemValue.ROOT; String rootPathSp = rootPath.substring(0,rootPath.length()-1); String path = rootPathSp.substring(rootPathSp.lastIndexOf("\\")+1); //跳转 //String GO = "\""+((HttpServletRequest) pageContext.getRequest()).getContextPath()+ "/images/GO.gif" + "\""; //String GO2 = "\""+((HttpServletRequest) pageContext.getRequest()).getContextPath()+ "/images/GO2.gif" + "\""; Paginator paginator = (Paginator) pageContext.getAttribute(name, ((Integer) scopeMap.get(scope)).intValue()); JspWriter out = pageContext.getOut(); StringBuffer buffer = new StringBuffer(1000); int totalPage = paginator.getTotalPage(); try { if (paginator.getTotalCount() > 0) {// 有记录 buffer.append("<script language=\"JavaScript\">\n"); buffer.append("<!--\n"); buffer.append("function GotoPage(id) {\n"); buffer.append("var pageTotal =document." + form + ".pageSize.value; \n"); if(action.indexOf('?')>0){ buffer.append("document." + form + ".action='" + action+"&pageTotal='+pageTotal+'&pageNow='+" +"id" + ";\n"); }else{ buffer.append("document." + form + ".action='" + action+"?pageTotal='+pageTotal+'&pageNow='+" +"id" + ";\n"); } buffer.append("if(id<=0){id=1;}\n"); buffer.append("document." + form + ".pageIndex.value=id;\n"); buffer.append("document." + form + ".submit();\n"); buffer.append("}\n"); buffer.append("function changePage(obj) {\n"); buffer.append("var id = obj.value;\n"); /*buffer.append("var ar = obj.options;\n"); buffer.append("for(var i=0;i<ar.length;i++){\n"); buffer.append("if(id==ar[i].value){\n"); buffer.append("ar[i].selected=true;\n"); buffer.append("}}\n");*/ if(action.indexOf('?')>0){ buffer.append("document." + form + ".action='" + action+"&pageTotal='+id+'&pageNow='+" +"1" + ";\n"); }else{ buffer.append("document." + form + ".action='" + action+"?pageTotal='+id+'&pageNow='+" +"1" + ";\n"); } buffer.append("document." + form + ".pageIndex.value=1;\n"); buffer.append("document." + form + ".submit();\n"); buffer.append("}\n"); buffer.append("function checkPage(size,page,total) {\n"); buffer.append("if(total)"); buffer.append("document." + form + ".action='" + action + "';\n"); buffer.append("document." + form + ".pageIndex.value=id;\n"); buffer.append("document." + form + ".submit();\n"); buffer.append("}\n"); buffer.append("function checkPageSize(page,size,total){\n"); buffer.append("var reg = /[^0-9]/;\n"); buffer.append("if(size.match(reg) != null){\n"); buffer.append("alert('每页记录数请输入整数');\n"); buffer.append("document." + form + ".pageSize.focus();}\n"); buffer.append("if(size<1){\n"); buffer.append("document." + form + ".pageSize.value=10;}\n"); buffer.append("if(size>300){\n"); buffer.append("document." + form + ".pageSize.value=300;}\n"); buffer.append("var newsize = document." + form + ".pageSize.value;\n"); buffer.append("checkPage(page,newsize,total);\n"); buffer.append("}\n"); buffer.append("function checkPage3(page,size,total){\n"); buffer.append("if(!page){\n"); buffer.append("alert('请输入跳转的页码!');\n"); buffer.append("return false;\n"); buffer.append("}\n"); buffer.append("var reg = /^(([0-9]{1,})([0-9]))|([1-9]{1})$/;\n"); buffer.append("if(!reg.exec(page)){\n"); buffer.append("alert('跳转页数请输入大于0的整数');\n"); //buffer.append("document." + form + ".pageIndex.focus();}\n"); buffer.append("return false;\n"); buffer.append("}\n"); buffer.append("var num = total/size; \n"); buffer.append("var nums = Math.round(num+0.4999999);\n"); buffer.append("if(page<1){\n"); buffer.append("document." + form + ".pageIndex.value=1;}\n"); buffer.append("if(page > nums){\n"); buffer.append("document." + form + ".pageIndex.value=nums;}\n"); buffer.append("GotoPage(page)"); buffer.append("}\n"); buffer.append("//-->\n"); buffer.append("</script>\n"); buffer.append("<script language=\"JavaScript\" event=\"onkeydown\" for=\"document\">\n"); buffer.append("if(event.srcElement.name=='pageSize'){\n"); buffer.append("if(((event.keyCode>=48)&&(event.keyCode<=57))||((event.keyCode>=96)&&(event.keyCode<=105))||(event.keyCode==8)||(event.keyCode==46)||(event.keyCode==13)||(event.keyCode==9)){\n"); buffer.append("return true;\n"); buffer.append("}else{return false;}}"); buffer.append("if(event.srcElement.name=='pageIndex'){\n"); buffer.append("if(((event.keyCode>=48)&&(event.keyCode<=57))||((event.keyCode>=96)&&(event.keyCode<=105))||(event.keyCode==8)||(event.keyCode==46)||(event.keyCode==13)||(event.keyCode==9)){\n"); buffer.append("return true;\n"); buffer.append("}else{return false;}}"); buffer.append("</script>\n"); // 以上为页面跳转的JavaScript方法 buffer.append("<table class=\"page\">\n"); buffer.append("<tr>\n"); buffer.append("<td width='20%'>\n"); buffer.append("每页显示的数量 <select name='ps' id='ps' onchange='javascript:changePage(this)' class='w5'>"); int size = RistConfig.getConfig().getInt("core.setPageSize.value",10); if(size < 10){ size = 10; } for(int i=10;i<=100;i=i+5){ if(i == paginator.getPageSize()){ buffer.append("<option value="+i+" selected>"+i+"</option>"); }else{ buffer.append("<option value="+i+" >"+i+"</option>"); } } /*buffer.append("<option value=\"20\">20</option>"); buffer.append("<option value=\"30\">30</option>"); buffer.append("<option value=\"40\">40</option>"); buffer.append("<option value=\"50\">50</option>"); buffer.append("<option value=\"60\">60</option>"); buffer.append("<option value=\"70\">70</option>"); buffer.append("<option value=\"80\">80</option>"); buffer.append("<option value=\"90\">90</option>"); buffer.append("<option value=\"100\">100</option>");*/ buffer.append("</select>"); buffer.append("</td>\n"); buffer.append("<td width='30%' class='info'>\n"); buffer.append("共有<span class='orange fb'>" + totalPage + "</span>页"); buffer.append("<span class='orange fb'>" + paginator.getTotalCount() + "</span>条记录,"); buffer.append("当前为第<span class='orange fb'>" + paginator.getPageIndex() + "</span>页\n"); buffer.append("</td>\n"); buffer.append("<td width='35%' class='pagebuttons'>"); if (paginator.getPageIndex() > 1) {// 不是第一页,显示“第一页”,“上一页”链接 buffer .append("<a href='javascript:GotoPage(1)' class='bt_pghome'><span>首页</span></a>"); buffer .append("<a class='bt_pgpre' href='javascript:GotoPage(" + (paginator.getPageIndex() - 1) + ")'><span>上一页</span></a>"); } else {// 是第一页,不显示“第一页”,“上一页”链接 buffer.append("<a disabled=\"disabled\" style=\"cursor: default\" href='javascript:;' class='bt_pghome_gray'><span>首页</span></a>"); buffer.append("<a disabled=\"disabled\" style=\"cursor: default\" href='javascript:;' class='bt_pgpre_gray'><span>上一页</span></a>"); } if (paginator.getPageIndex() == totalPage || totalPage <= 1) {// 是最后页或共只有一页,不显示“下一页”,“最后页”链接 buffer.append("<a disabled=\"disabled\" style=\"cursor: default\" href='javascript:;' class='bt_pgnext_gray'><span>下一页</span></a>"); buffer.append("<a disabled=\"disabled\" style=\"cursor: default\" href='javascript:;' class='bt_pgend_gray'><span>尾页</span></a>"); } else {// 不是最后页且总页数大于1页,显示“下一页”,“最后页”链接 /* buffer .append("<a class='bt_pgnext' href='javascript:GotoPage(" + (paginator.getPageIndex() + 1) + ")'>下一页</a>"); buffer .append("<a class='bt_pgend' href='javascript:GotoPage(" + totalPage + ")'>最后页</a>");*/ buffer.append("<a href='javascript:GotoPage(" + (paginator.getPageIndex() + 1) + ")' class='bt_pgnext'><span>下一页</span></a>"); buffer.append("<a href='javascript:GotoPage(" + totalPage + ")' class='bt_pgend'><span>尾页</span></a>"); } buffer.append("</td>"); buffer .append("<td width='2%' align='left'><input type='hidden' size='3' name='pageSize' value='" + paginator.getPageSize() + "' onkeyup=\"value=value.replace(/^[^1-9]+|[^\\d]/g,'');\" onblur='checkPageSize(document.all.pageIndex.value,document.all.pageSize.value," + paginator.getTotalCount() + ")'></td>\n"); buffer .append("<td width='2%' align='left'><input type='hidden' size='4' name='pageIndex' value='" + paginator.getPageIndex() + "'onkeyup=\"value=value.replace(/^[^1-9]+|[^\\d]/g,'');\" onblur='checkPage(document.all.pageIndex.value,document.all.pageSize.value," + paginator.getTotalCount() + ")'></td>\n"); buffer.append("<td width='15%' class='skip'>转至 <input name='iPagePara' id='iPagePara' class='w2' " + "type='text' size='5' maxlength='5' > 页"); //buffer.append("<img onmouseover='this.src=" //+ GO2 +"' style='CURSOR:pointer' onmouseout='this.src=" //+ GO +"' height='18' alt='跳转' src="+ GO +" width='35'" //+ " onclick=\"javascript:checkPage3(document.all.iPagePara.value,"+paginator.getPageSize()+","+paginator.getTotalCount()+");\" align='absmiddle'/></td>\n"); buffer.append("<input type='button' class='bt_pggo' onmouseover='this.className=\"bt_pggo_o\"' onmouseout='this.className=\"bt_pggo\"' "); buffer.append(" onclick=\"javascript:checkPage3(document.all.iPagePara.value,"+paginator.getPageSize()+","+paginator.getTotalCount()+");\" /></td>"); buffer.append("</tr>\n"); buffer.append("</table>\n"); } else {// 无记录 buffer.append("<table class=page>\n"); buffer.append("<tr>\n"); buffer.append("<td width='50%'class='info'>\n"); buffer .append("共有<span class='orange fb'>0</span>页<span class='orange fb'>0</span>条记录,"); buffer.append("当前为第<span class='orange fb'>0</span>页</a></td>"); buffer.append("<td width='35%' class='pagebuttons'>"); buffer.append("<a disabled=\"disabled\" style=\"cursor: default\" href='javascript:;' class='bt_pghome_gray'><span>首页</span></a>\n"); buffer.append("<a disabled=\"disabled\" style=\"cursor: default\" href='javascript:;' class='bt_pgpre_gray'><span>上一页</span></a>\n"); buffer.append("<a disabled=\"disabled\" style=\"cursor: default\" href='javascript:;' class='bt_pgnext_gray'><span>下一页</span></a>\n"); buffer.append("<a disabled=\"disabled\" style=\"cursor: default\" href='javascript:;' class='bt_pgend_gray'><span>尾页</span></a>\n"); buffer.append("</td>"); buffer .append("<td width='2%' align='left'>" + "</td>\n"); buffer .append("<td width='2%' align='left'><input type='hidden' size='4' name='pageIndex' value='" + paginator.getPageIndex() + "' onblur='checkPage(document.all.pageIndex.value,document.all.pageSize.value," + paginator.getTotalCount() + ")'></td>\n"); // buffer.append("<td width='15%'>转至 <input name='iPagePara' id='iPagePara' class=\"text\" " // + "type='text' size='3'> 页"); // buffer.append("<img onmouseover='this.src=" // + GO2 +"' style='CURSOR:pointer' onmouseout='this.src=" // + GO +"' height='18' alt='跳转' src="+ GO +" width='35'" // + " align='absmiddle'/></td>\n"); //buffer.append("<input type='button' class='bt_pggo' onmouseover='this.className=\"bt_pggo\"' onmouseout='this.className=\"bt_pggo\"' disabled='disabled'/></td>"); buffer.append("</tr>\n"); buffer.append("</table><br>\n"); } out.write(buffer.toString()); out.flush(); } catch (Exception e) { logger.error("生成分页html发生错误", e); } return EVAL_PAGE; } public void setForm(String form) { this.form = form; } public void setAction(String action) { HttpServletRequest request = (HttpServletRequest) pageContext .getRequest(); this.action = request.getContextPath() + action; } public void setName(String name) { this.name = name; } public void setScope(String scope) { this.scope = scope; } }
第二步:
编写WEB_INF下tld目录下的paginator.tld
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>paginator</short-name> <uri>http://www.huadu-tech.com/tags-paginator</uri> <description> paginator taglib. </description> <tag> <name>page</name> <tag-class>com.cmsz.rist.common.page.PaginatorTag</tag-class> <body-content>JSP</body-content> <description> Iterates over a specified array of objects, showing pages of information at a time. </description> <attribute> <name>name</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>action</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>form</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> </taglib>
第三步:
引入标签体
<%@ taglib uri="/WEB-INF/tld/paginator.tld" prefix="paginator"%>
第四步:
在jsp页面上
<div align="center"> <paginator:page name="paginator" form="smsClientForm" action="/querySmsClient.do?method=querySmsClient" /> </div>
结束!
希望对忘记了的朋友有帮助,也是为了在项目中能迅速copy 谢谢~
发表评论
-
ANT合并多个第三方包
2015-06-18 16:31 869<project name="cmgr.ivy ... -
jsp国际化处理方式
2014-11-21 10:12 554示例标签: <fmt:message key=&quo ... -
gamecard
2013-07-16 23:37 664的地方的的方式个地方 -
支付
2013-05-06 23:12 629发到飞肥嘟嘟发的发的 -
marven
2013-05-05 23:12 689行业应用管理 -
框架开发
2013-03-21 20:25 727框架开发 版本1.0 -
框架开发
2013-03-21 00:25 0框架开发版本1 -
JavaMail的邮件实例
2011-01-26 16:35 1063简单的邮件实例 package com.wzh.mail ... -
xml解析
2010-11-24 23:32 1156只是供自己参考 import java.io.F ... -
ssh整合的web配置顺序解析
2010-10-20 21:01 2366web.xml的一份模板 整合ssh2+dwr <? ... -
Struts2+Hibernate3.2+Spring2.5+Compass整合
2010-10-10 01:34 2974之前学习了Compass 现在整合下ssh2+Compass ... -
web中的dao模板
2010-07-31 01:08 1580在web项目中 我们可能会针对每一个实体写一个dao ... -
MVC面试题:有了stuts的mvc为什么还要spring的mvc
2010-07-28 19:33 23512今天一同学 去面试 关于mvc的面试题 面试官问道:有了st ... -
ssh2整合问题+ssh2源代码下载
2010-07-13 19:29 3898[/b]整合sreuts2.1.8+hibernate3.2+ ... -
利用组件分页
2010-06-13 14:22 1133. 如何分页? 1.把pager-taglib.jar ...
相关推荐
是用jsp自定义标签编写的一个非常不错的分页,扩展性非常不错,不依赖于数据库。
自己写的自定义标签库,实现JSTL常用的功能。
编写自定义标签类。 3.在页面中使用标签。 下面以一个自定义的分页标签为例,进行说明。 其实,开发自定义标签并不需要Struts2的支持,一般情况下,只需要继承javax.servlet.jsp.tagext.BodyTagSupport类,重写...
想要在 JavaServer Pages (JSP) 应用程序中添加自定义标签吗?本教程将为您展示如何用这些标签编写类似于 JSP 技术自带操作 —— 如 jsp:useBean、jsp:getProperty 和 jsp:forward —— 的自定义操作。介绍如何用...
用法还比较全面,里面的东西都做了详细的注解,比如说:怎么定义这个标签的名字,标签的属性,有什么的约束,都做了较详细的解释,上手比较容易,使用方便,但在里面定义标签的时候,尽量不要使用复制粘贴,会有很大...
JSP 自定义标签,初学者必备,比较简单,可以看看的,没有文档
jsp标签库的应用可以简化我们在编写页面代码量;使我们每一个人更加轻松的去编程
资源包括自定义标签类的编写代码,配置代码,包括开发自定义标签的全过程,适合新手学习
jsp和java联合实现了自定义标签的功能,主要技术继承了TagSupport类和编写对应bodytag.tld配置文件 实现了分页功能 当前功能点所在位置 循环遍历数据
简要的介绍了自定义标签的编写,配置及使用!
在日常使用地图过程中,通常会遇到地图标签,提示点等显示不满足我们的需求,需要进行JavaScript代码编写。本文主要利用FineReport的示例来讲述如何用JavaScript自定义地图标签。
JSP 自定义标签 自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时Web container调用那些操作。 JSP标签扩展...
想要在 JavaServer Pages (JSP) 应用程序中添加自定义标签吗?本教程将为您展示如何用这些标签编写类似于 JSP 技术自带操作 —— 如 jsp:useBean、jsp:getProperty 和 jsp:forward —— 的自定义操作。介绍如何用...
用java编写的字体自定义标签,字体大小的设置,颜色的设置、、、
在vue中使用antv/x6和element组件,实现自定义流程的编写,使用antv/x6实现画布绘制和流程绘制,通过拖动节点到画布的方式进行节点的添加,使用element组件实现鼠标移入节点后的自定义功能,使用antv/x6自带的api和...
本文为大家分享了JSP自定义标签入门学习教程,希望大家喜欢。 1.JSP自定义标签: 自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作...
自定义标签主要包括三个步骤: 1、编写java类,继承TagSupport类; 2、创建tld文件,影射标签名和标签的java类; 3、jsp页面引入tld。 博文地址:http://blog.csdn.net/itmyhome1990/article/details/50718282
NMBottomTabBarController 用 Objective C 编写的可定制的 iOS 标签栏控制器。它使用自动布局。要求iOS 7.1 + 弧配置标签栏项的图片要求图标图像选中和未选中的背景图片特征使用自动布局您可以为选项卡的选定、未...
很适用的自定义JSP分页标签,完整的源码.在实际项目中,是经常用到的...编写一个分页标签处理类;2.配置标记的tld;3.web.xml配置;4.jsp页面调用标记.顺便补充一下:分页,有真分页(读多少取多少)和假分页(全部读在分页显示)!
如果要实现自定义标签,那么需要如下几步: 编写标签处理类 需要继承或者实现相关的类或者接口 编写标签描述文件 该文件是一个XML文件,而且必须放在网站的WEB-INF目录中 在JSP中引入标签且使用 使用taglib指令引入...