- 浏览: 390178 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
消失-IT超市:
方便加一下你的QQ吗,我的QQ是252375879,有个问题请 ...
js调用ocx控件(读写IC卡) -
mszb00123:
很有用
Extjs之--图片上传器 -
shouhouhuakai:
好崇拜,不错
URLConnection的连接、超时、关闭用法总结 -
wujierd:
写得好详细,学习了
URLConnection的连接、超时、关闭用法总结 -
paruke:
请问这个能加上图片旋转功能么 我试了一下 发现寻找中心点是个问 ...
Extjs之--图片浏览器
效果如图:
1、JSP规范1.1版本后增加了自定义标签库。实现自定义标签的步骤
(1)开发自定义标签处理类。
(2)建立*.tld文件。
(3)在web.xml中增加自定义标签的定义。
(4)在jsp中使用自定义标签。
2、自定义标签类
(1)继承javax.servlet.jsp.tagext.TagSupport
(2)标签类属性,及每个属性的getter和setter方法
(3)重写doStartTag或doEndTag方法。当jsp解析这个标签的时候,在“<”处触发 doStartTag 事件,在“>”时触发 doEndTag 事件。通常在 doStartTag 里进行初始化,流程选择操作,在 doEndTag 里后续页面输出控制。
import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * * @author liuxi */ public class PageThirdTag extends TagSupport { private static final Log log = LogFactory.getLog(PageTwoTag.class); private String formName; private String curPage; private String showPages; private String totalPages; private String PREVIOUS_PAGE = "上一页"; private String NEXT_PAGE = "下一页 "; public String getHref(int number) { return "Javascript:ToPage(" + number + ");"; } public String goHref(int number) { return " <a href=\"" + getHref(number) + "\" class=\"pagebox\">" + number + "</a>"; } public int doEndTag() throws JspException { int showPages = Integer.parseInt(this.showPages); int curpage = Integer.parseInt(this.curPage); int totalPages = Integer.parseInt(this.totalPages); StringBuffer strBuf = new StringBuffer(512); // 总页数 int pagecount = totalPages; // 初始化值 if (curpage == 0) { curpage = 1; } else { if (curpage <= 0) { curpage = 1; } if (curpage > pagecount) { curpage = pagecount; } } strBuf.append("<style type='text/css'>"); strBuf.append(".pagebox{margin-left:2px;padding:3px 5px 3px 5px; border:1px solid #fff; background-color:#ebebeb;color:#FFFFFF; font-size:12px;}"); strBuf.append(".cpagebox{margin-left:2px;padding:3px 5px 3px 5px; border:1px gray; background-color:#ebebeb; color:red; font-size:12px;}"); strBuf.append(".vpagebox{margin-left:2px;padding:3px 5px 3px 5px; background-color:#FFFFFF; color:#000000;font-size:12px;}"); strBuf.append("</style>"); strBuf.append("<script language='JavaScript' type='text/JavaScript'>"); strBuf.append("function ToPage(p) { \n"); strBuf.append(" window.document." + formName + ".pageNo.value=p;\n"); strBuf.append(" window.document." + formName + ".submit();\n"); strBuf.append("}</script>"); if (curpage > 1) { strBuf.append("<a href=\"" + getHref(curpage - 1) + "\" class=\"pagebox\" >" + PREVIOUS_PAGE + "</a>"); } // 分页 if (pagecount <= showPages + 2) { for (int i = 1; i <= pagecount; i++) { if (i == curpage) { strBuf.append("<font class=\"cpagebox\">" + i + "</font>"); } else { strBuf.append(goHref(i)); } } } else { if (curpage < showPages) { for (int i = 1; i <= showPages; i++) { if (i == curpage) { strBuf.append("<font class=\"cpagebox\">" + i + "</font>"); } else { strBuf.append(goHref(i)); } } strBuf.append("<font class=\"vpagebox\">...</font>"); strBuf.append(goHref(pagecount)); } else if (curpage > pagecount - showPages + 1) { // 右边 strBuf.append(goHref(1)); strBuf.append("<font class=\"vpagebox\">...</font>"); for (int i = pagecount - showPages + 1; i <= pagecount; i++) { if (i == curpage) { strBuf.append("<font class=\"cpagebox\">" + i + "</font>"); } else { strBuf.append(goHref(i)); } } } else { // 中间 strBuf.append(goHref(1)); //strBuf.append(goHref(2)); strBuf.append("<font class=\"vpagebox\">...</font>"); int offset = (showPages - 2) / 2; for (int i = curpage - offset; i <= curpage + offset; i++) { if (i == curpage) { strBuf.append("<font class=\"cpagebox\">" + i + "</font>"); } else { strBuf.append(goHref(i)); } } strBuf.append("<font class=\"vpagebox\">...</font>"); strBuf.append(goHref(pagecount)); } } // 显示下-页 if (curpage != pagecount) { // 加上链接 curpage+1 strBuf.append("<a href=\"" + getHref(curpage + 1) + "\" class=\"pagebox\" >" + NEXT_PAGE + "</a>"); } strBuf.append("<input name='pageNo' type='hidden' size='3' length='3' />"); try { pageContext.getOut().println(strBuf.toString()); } catch (IOException e) { e.printStackTrace(); log.debug(e.getMessage()); } return EVAL_PAGE; } public String getFormName() { return formName; } public void setFormName(String formName) { this.formName = formName; } public String getCurPage() { return curPage; } public void setCurPage(String curPage) { this.curPage = curPage; } public String getShowPages() { return showPages; } public void setShowPages(String showPages) { this.showPages = showPages; } public String getTotalPages() { return totalPages; } public void setTotalPages(String totalPages) { this.totalPages = totalPages; } }
说明:
(1)如何输出到jsp页面:调用pageContext.getOut().println()。
(2)输出后如何作处理,函数会返回几个值之一。EVAL_PAGE 表示tag已处理完毕,返回jsp页面。
3、建立self.tld 文件
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <description>TEST Tag library</description> <display-name>TEST Tag</display-name> <tlib-version>1.0</tlib-version> <short-name>test</short-name> <uri>/test</uri> <tag> <description>Page Info</description> <name>pagethird</name> <tag-class>com.test.web.tag.PageThirdTag</tag-class> <body-content>empty</body-content> <attribute> <description>the name of the current form</description> <name>formName</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <description>Show Records</description> <name>showPages</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <description>Current Page</description> <name>curPage</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <description>Total Pages</description> <name>totalPages</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
说明:
short-name:taglib的名称。
name:tag的名字。
name:tag的名字。
body-content:指tag之间的内容。
required:是否必填属性。
rtexprvalue:是否支持动态传值。
4、web.xml中加入自定义标签定义
<jsp-config> <taglib> <taglib-uri>test</taglib-uri> <taglib-location>/WEB-INF/tld/self.tld</taglib-location> </taglib> </jsp-config>
5、jsp中使用该自定义标签
<%@ taglib prefix="test" uri="test" %>
<test:pagethird formName="pictureForm" showPages="${ pageBean.showPages }" curPage="${ pageBean.pageNo }" totalPages="${ pageBean.totalPages }"/>
6、over
发表评论
-
不负时光,继续学习
2017-04-11 17:04 6474月,一年当中最好的时节,和风煦日春意浓; ... -
生活依旧,做好自己
2017-02-04 16:51 428新年开工第二天,工作之余翻看了电脑上以前的文 ... -
2016年最后一天随笔
2016-12-30 14:48 5952016年马上就要过去了,回顾过去的一年感 ... -
excel中汉字转拼音全拼和简拼
2016-09-12 11:45 1623一、汉字转全拼 1.启动Excel 2003(其它版本请仿 ... -
年底总结3-工作中遇到的错误及解决方式
2015-02-16 11:28 1039在过去的一年工作中遇到的一些问题及解决方式,如下: -- ... -
数据库方面遇到的问题总结
2013-05-23 20:29 10131、mysql服务自动关闭处理方式 我的电脑 -> ... -
resin2.1.17报错:META-INF/c.tld:6 unknown element `xsi:schemaLocation' in `taglib'
2012-08-20 18:37 30741、问题描述 resin启动后,访问jsp页面 ... -
Extjs grid 合计
2012-05-31 14:28 19131、直接在客户端统计,动态的修改Grid 2、代码如下 ... -
mysql函数使用-字符串处理
2012-05-29 17:15 11841、按地区统计数据 select q.psn,t.na ... -
spring JdbcTemplate 批量插入
2012-05-27 09:13 20471、通过批量操作减少与数据库连接所消耗的资源。 2、J ... -
JDBC连接Sql server
2012-03-07 10:24 17081、采用微软提供的ms sql server jdbc dri ... -
java下将汉字转换为拼音
2012-01-15 18:06 12091、代码如下,不过有些汉字不支持,如:茜 import ... -
年底总结2-spring多线程任务调度
2012-01-01 13:55 54591、spring framework开发参考手册中第23掌& ... -
年底总结1-tomcat6使用中遇到的问题
2012-01-01 10:23 65751、tomcat6.0.18注册windows服务成功后,但是 ... -
VML应用-利用ECOTree绘制树形结构图
2011-10-29 17:57 63991、基本概念 VML的全称是Vector Markup La ... -
java串口编程-读取称重仪表中净重
2011-10-12 17:08 5189一、需求说明 ... -
记录oracle 关联更新的例子
2011-10-03 20:55 11561、说明 修改某一天“本期值”数据时,需要把第二天的“上期值 ... -
js--设为首页、加入收藏
2011-03-19 00:13 978<a onclick="this.style. ... -
org.hibernate.ObjectNotFoundException: No row with the given identifier exists
2011-03-08 00:19 20881、问题说明 hibenate中实体关联映射中<man ... -
VirtualBox网络配置-搭建数据库服务器
2011-02-10 23:50 31601、由于操作系统与数据库之间兼容性的问题,于是采用在虚拟机上安 ...
相关推荐
JDOM处理XML快速上手 - Web UI Design - JavaEye技术网站.mht
Flex学习笔记_09 数据绑定_概念、使用 - Java&Flex - JavaEye技术网站 希望对爱好有帮助!!
它通过自定义函数的方式实现了页面分页的功能。该插件的主要设计思想是利用JavaScript来动态生成分页导航栏,并根据用户的选择跳转到相应的页面。这种设计方式使得网页开发者能够快速地为自己的应用添加分页功能。 ...
Jsp-Servlet复习笔记-----第3章 Servlet技术 - 堕落天使 - JavaEye技术网站.mhtJsp-Servlet复习笔记-----第3章 Servlet技术 - 堕落天使 - JavaEye技术网站.mht
MyEclipse快捷键与插件大全 - 入门技术 - New - JavaEye(1)
JSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mhtJSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mht
让想成为一个顶级程序员,学会调试异常是必不可少的。Eclipse调试常用技巧 -为你解决java程序中的出现的异常。
使用 Eclipse 平台进行调试 - Java - JavaEye论坛
自己仿照javaeye写的jspf分页(原创),请各位多多指教
公司的大部分项目都开始使用IBatis作为O/R Mapping了,但是在使用的过程中也发现了很多不方便和存在...想了很多办法,都没能很好的避免这个问题,无意间在javaeye上看到了《使ibatis支持hibernate式的物理分页》这篇文章,
"学习Acegi-认证(authentication) - Acegi 专栏 - JavaEye知识库.mht"和"Acegi学习小结 - Acegi 专栏 - JavaEye知识库.mht"可能提供了更深入的认证学习材料和作者的学习心得,包括可能遇到的问题和解决方案,这对于...
- **用途**:支持用户自定义标签的保存和操作。 **7. will_paginate** - **作用**:为Rails内置的分页功能提供更好的替代方案。 #### 五、文档与帮助资源 **1. fastri** - **功能**:加速 Ruby 文档查询的速度...
"ActiveBPEL流程的部署关键文件 - 业务流程平台 - JavaEye技术网站.htm"详细介绍了部署activeBpel流程时需要的关键文件,这些文件通常包括流程定义(.bpel)、部署描述符(.dd)等,理解这些文件的作用对于成功部署...
但在Java中,可以用`break`和`continue`语句结合标签来模拟类似`goto`的行为。 ### 13. Overload vs Override - 方法重载(Overloading)是指在同一个类中定义多个同名但参数列表不同的方法。方法覆盖(Overriding...
pager-taglib相关文章.rar pager-taglib的安装和使用.doc pager-taglib-++2.0.rar pager-taglib的安装和使用 - bluelzx - JavaEye技术网站.mht 分页pager-taglib使用指南_Winter.mht
Struts、Spring 和 Hibernate 是Java开发中非常著名的三个开源框架,它们在企业级应用开发中起着关键作用。Struts 是一个 MVC(Model-View-Controller)架构的 Web 框架,Spring 提供了一个全面的后端服务管理平台,...
标题“测试JavaEye的PDF生成效果”提示我们关注的是一个使用JavaEye库生成PDF文档的实践过程。JavaEye可能是一个用于Java平台的开源库,它提供了将数据转换为PDF格式的功能,这对于创建报告、手册或其他需要打印或...
【JavaEye论坛热点 - 2008年11月 - 总第6期】是2008年11月JavaEye论坛上讨论的热点话题汇总,包含了多个关于Java和软件开发领域的讨论主题。以下将对部分主题进行详细解释: 1. **领域模型的价值与困境** - 领域...
Struts原理与实践(1) - Java - New - JavaEye论坛.mht
javaeye被黑 大家看看