- 浏览: 710871 次
- 来自: ...
文章分类
最新评论
-
ranguisheng:
可以加点注释,代码不便于阅读.
用java实现数据库连接池的一个简单示例 -
abcd880129:
这样写的话,还要用专门的下载工具,不然,只能下到一个为空的ex ...
ZK下载文件时,不在服务器生成文件直接下载 -
234369425:
同上,是20
java计算阶乘 -
CodeToMyLaw:
如果目录中含有中文呢?
[^\x00-\xff] 中文的 ...
js验证文件目录格式的正确性 -
yanzhoupuzhang:
加了,还是报那个错误!
org.apache.commons.dbcp.BasicDataSource的解决方法
转载:http://blog.csdn.net/xiang588
如果我们要写出分页标签,最少我们要有三个变量,
curPage//当前页 --也就是说现在用户正在浏览第几页.
total //总记录数 -- 我们从数据库得到的总记录数
PAGE_SIZE//页大小 --也就是说每页我们用来显示多少数据,这一般是常量,有时在Servlet指定,有时在properties文件里读取.
总页数=total/PAGE_SIZE+1
有了上面的数据,那么实现上面图片的需求应该就没有问题了.
首页 -- 把当前页设为1;
上一页--把当前页-1,如果当前页小于1则当前页还是为1;
下一面--把当前页+1,如果当前页大于总页数,当前页不变
末页--把当前页设为总页数
显示最近的9个页面-- 把(当前页-4)到(当前页+4)的页码显示出来.
指定跳转 -- 把当前页设为指定的页数.如果指定页数小于1,则为1,如果大于总页数,则为总页数
其实,我们分页标签的主要目的就是把我们的数据分成N页,并方便用户快速访问自己需要的页面,也就是说,告诉接受处理显示数据的Serlvet,他要负责处理显示的那一页的数据(也就是我们上面提到的当前页).具体实现的语句很简单,在这里,假设处理数据的Servlet的名字叫做 PageSerlvet,那么我们通过Get方法显示传参访问PageSerlvet,语句为:PageSerlvet?curpage=当前页
上面我们讲了很多的业务处理方式,现在提下自定义标签.如果你根本不会写自定义标签的话,那么你先找点浅的例子,这个例子不适合学习自定义标签~
用标签来实现以上的需求,我们必须得到我们要得到的三个参数(curPage,total,PAGE_SZIE),当然,用过自定义标签的朋友都知道,用标签属性来传是最好的!那么,我们确定了用属性来传参,就不要用到标签体,所有,处理分页标签问题,我们还是用TagSupport来解决分页标签.
下面,是我们的标签处理类ageTag.java
也许看上去比较复杂,但是大家是否还记得在Serlvet里面输出HTML代码的例子,我们学Servlet的时候都是这么过来的, 虽然现在不推荐在java类用再写HTML语法, 但是分页标签就是用的这种理念去实现的,有点像include.
上面的代码一共分三总色.紫色主要是初始代标签属性,因为我们在用标签时,他会自己调用setter方法给属性传值.红色为doStartTag()方法.主要是输出我们想要的格式.在红色中有一块蓝色的代码.那都是给属性在特殊情况下赋初值.
下面是tag的tld文件.记住.这个文件一定要放在WEB-INF/tlds目录下.tlds是默认不存在的,手动创建!
一个attribute表示定义一个属性.
name -属性名
required-是否为空
rtexprvalue-是不能用EL语言或表达式(这个是个人理解,因为我如果不加这对标签,那我就用不了EL给属性赋值)
type-属性类型
然后你就在你要用的JSP页面上加上
<%@ taglib prefix="page" uri="/WEB-INF/tlds/pageTag.tld" %>
<page:outpage pageSize="${pageSize }" totalPage="${totalPage }" curPage="${curpage}"></page:outpage>
如果你在测试的时候你可以不用EL语言测试,直接给值就可以了.比如写成
<page:outpage pageSize="10" totalPage="270" curPage="9"></page:outpage>
如果我们要写出分页标签,最少我们要有三个变量,
curPage//当前页 --也就是说现在用户正在浏览第几页.
total //总记录数 -- 我们从数据库得到的总记录数
PAGE_SIZE//页大小 --也就是说每页我们用来显示多少数据,这一般是常量,有时在Servlet指定,有时在properties文件里读取.
总页数=total/PAGE_SIZE+1
有了上面的数据,那么实现上面图片的需求应该就没有问题了.
首页 -- 把当前页设为1;
上一页--把当前页-1,如果当前页小于1则当前页还是为1;
下一面--把当前页+1,如果当前页大于总页数,当前页不变
末页--把当前页设为总页数
显示最近的9个页面-- 把(当前页-4)到(当前页+4)的页码显示出来.
指定跳转 -- 把当前页设为指定的页数.如果指定页数小于1,则为1,如果大于总页数,则为总页数
其实,我们分页标签的主要目的就是把我们的数据分成N页,并方便用户快速访问自己需要的页面,也就是说,告诉接受处理显示数据的Serlvet,他要负责处理显示的那一页的数据(也就是我们上面提到的当前页).具体实现的语句很简单,在这里,假设处理数据的Servlet的名字叫做 PageSerlvet,那么我们通过Get方法显示传参访问PageSerlvet,语句为:PageSerlvet?curpage=当前页
上面我们讲了很多的业务处理方式,现在提下自定义标签.如果你根本不会写自定义标签的话,那么你先找点浅的例子,这个例子不适合学习自定义标签~
用标签来实现以上的需求,我们必须得到我们要得到的三个参数(curPage,total,PAGE_SZIE),当然,用过自定义标签的朋友都知道,用标签属性来传是最好的!那么,我们确定了用属性来传参,就不要用到标签体,所有,处理分页标签问题,我们还是用TagSupport来解决分页标签.
下面,是我们的标签处理类ageTag.java
public class PageTag extends TagSupport { /** * 当前页 */ private String curPage; /** * 总页数 */ private String totalPage; /** * 页大小(一页显示的大小) */ private String pageSize; public void setCurPage(String curPage) { this.curPage = curPage; } public void setPageSize(String pageSize) { this.pageSize = pageSize; public void setTotalPage(String totalPage) { this.totalPage = totalPage; } @Override public int doStartTag() throws JspException { JspWriter out = pageContext.getOut(); // 得到分页后的页数,(总页数/页大小)+1 if (pageSize == null || pageSize == "") { pageSize = "1"; } int pageNumber = (Integer.parseInt(totalPage) / Integer .parseInt(pageSize)); if (Integer.parseInt(curPage) > pageNumber) { curPage = String.valueOf(pageNumber); } if (Integer.parseInt(curPage) < 1) { curPage = "1"; } // 显示给用户操作的页面开始端 int start = Integer.parseInt(curPage) - 4; // 显示给用户操作的页面结束端 int end = Integer.parseInt(curPage) + 4; // 特殊情况处理(开始端小于0) if ((Integer.parseInt(curPage) - 4) <= 0) { start = 1; } // 特殊情况处理(结束端大于总页数) if ((Integer.parseInt(curPage) + 4) > pageNumber) { end = pageNumber; } try { out .print("<form action='bbs/SubjectListServlet'><table align=center><tr height=10 align=justify ><td width=100>"); out .print("<a href='bbs/SubjectListServlet?curpage=1'>[首页]</a> <a href='bbs/SubjectListServlet?curpage=" + (((Integer.parseInt(curPage) - 1) == 0) ? curPage : (Integer.parseInt(curPage) - 1)) + "'>[上一页]</a></td><td width=180 align=center>"); for (int i = start; i <= end; i++) { if(i != Integer.parseInt(curPage)){ out.print("<a href='bbs/SubjectListServlet?curpage=" + i + "'>[" + i + "]</a> "); }else{ out.print("<b>"+i+"</b> "); } } out .print("</td><td width=100><a href='bbs/SubjectListServlet?curpage=" + (((Integer.parseInt(curPage) + 1) > pageNumber) ? curPage : (Integer.parseInt(curPage) + 1)) + "'>[下一页]</a> <a href='bbs/SubjectListServlet?curpage=" + pageNumber + "'>[末页]</a>"); out .print("</td><td width=100><input name='curpage' style='width:22px;height:22px;' /><input type=submit value=go /></td></tr></table></form>"); } catch (IOException e) { e.printStackTrace(); } return super.doStartTag(); } }
也许看上去比较复杂,但是大家是否还记得在Serlvet里面输出HTML代码的例子,我们学Servlet的时候都是这么过来的, 虽然现在不推荐在java类用再写HTML语法, 但是分页标签就是用的这种理念去实现的,有点像include.
上面的代码一共分三总色.紫色主要是初始代标签属性,因为我们在用标签时,他会自己调用setter方法给属性传值.红色为doStartTag()方法.主要是输出我们想要的格式.在红色中有一块蓝色的代码.那都是给属性在特殊情况下赋初值.
下面是tag的tld文件.记住.这个文件一定要放在WEB-INF/tlds目录下.tlds是默认不存在的,手动创建!
<?xml version="1.0" encoding="ISO-8859-1" ?> <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/j2eehttp://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>My Taglib For Holle Word!</description> <tlib-version>1.0</tlib-version> <short-name>page</short-name> <uri></uri> <tag> <name>outpage</name> <tag-class>com.tag.PageTag</tag-class> <body-content>JSP</body-content> <attribute> <name>curPage</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.String</type> </attribute> <attribute> <name>totalPage</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.String</type> </attribute> <attribute> <name>pageSize</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.String</type> </attribute> </tag> </taglib>
一个attribute表示定义一个属性.
name -属性名
required-是否为空
rtexprvalue-是不能用EL语言或表达式(这个是个人理解,因为我如果不加这对标签,那我就用不了EL给属性赋值)
type-属性类型
然后你就在你要用的JSP页面上加上
<%@ taglib prefix="page" uri="/WEB-INF/tlds/pageTag.tld" %>
<page:outpage pageSize="${pageSize }" totalPage="${totalPage }" curPage="${curpage}"></page:outpage>
如果你在测试的时候你可以不用EL语言测试,直接给值就可以了.比如写成
<page:outpage pageSize="10" totalPage="270" curPage="9"></page:outpage>
发表评论
-
Request用法
2009-06-10 14:42 2195转载:http://hi.baidu.com/yuanaish ... -
jsp及Servlet面试题
2009-06-10 14:40 49371、jsp有哪些内置对象作用分别是什么 答:JSP共有以下9种 ... -
数据源+freemarker+servlet生成xml文件
2009-05-10 12:13 30951.在server.xml文件中建立数据源. <S ... -
FreeMarker 设计指南 - 4
2009-05-10 12:09 1101转载:http://blog.csdn.net/b ... -
FreeMarker 设计指南 - 3
2009-05-10 12:03 1122转载:http://blog.csdn.net/bukebus ... -
FreeMarker 设计指南 - 2
2009-05-10 11:57 992转载:http://blog.csdn.net/bukebus ... -
FreeMarker 设计指南 - 1
2009-05-10 11:54 1060转载:http://blog.csdn.net/bukebus ... -
FreeMarker 简介
2009-05-10 11:38 1069转载:http://blog.csdn.net/b ... -
freemarker(5)Include的使用
2009-05-09 15:38 4419转载:http://tech.ddvip.com pack ... -
freemarker(4)&lt;#list 的使用
2009-05-09 15:35 1673转载: packagefreemarker; i ... -
freemarker(3)IF语句的使用
2009-05-09 15:32 4785转载:http://tech.ddvip.com ... -
freemarker(2)给模板传递参数的测试
2009-05-09 15:26 1464转载:http://tech.ddvip.com pa ... -
freemarker(1)老紫竹的第一个freemaker程序
2009-05-09 15:23 931转载:[url]http://tech.ddvip.com [ ... -
JSTL 常用标签属性
2009-04-29 10:35 1451以下属性基于JSTL1.1 一般用途的标签:<c:ou ... -
如何获取文件属性---java.io.File类
2009-04-03 14:01 5428<%@ page language="ja ... -
用javabean在JSP页面中实现进度条效果
2009-04-03 14:00 4620public class TaskBean extends ... -
jsp中文问题解决方案(完整版)
2009-04-03 13:57 1734开发java应用出现乱码是很常见的,毕竟现在unicode的使 ... -
用Servlet过滤器去除JSP页面中的乱码
2009-04-03 11:48 1261import java.io.IOException; ... -
JSP彩色验证码
2009-04-03 11:30 964<%@ page contentType=" ... -
含字母、数字的Servlet图形验证码
2009-04-03 11:15 2089import java.awt.Color; impor ...
相关推荐
总的来说,使用Hibernate自定义标签实现分页功能,不仅能够简化代码,提高代码复用性,还能使页面更加整洁,便于维护。在实际开发中,还可以根据需求进一步扩展,例如添加跳转到指定页的功能,或者提供动态调整每页...
jsp使用自定义标签taglib分页系列——完整例子
本文将详细介绍如何使用自定义标签实现JDBC分页功能,以及与MySQL数据库的集成。 首先,自定义标签是JSP标准标签库(JSTL)的一种扩展,允许开发者创建自己的标签库,以解决特定业务场景的需求。在本例中,...
在本案例中,"jsp java自定义标签 实现分页 当前位置标签"的标题揭示了我们要探讨的核心内容:如何利用JSP和Java来创建一个自定义标签,这个标签不仅能够处理分页功能,还能显示当前位置信息。下面将详细解释这一...
总结起来,这个主题提供了一个完整的解决方案,从理论到实践,涵盖了如何在Java应用中使用自定义标签实现分页功能。通过学习和应用这些材料,开发者不仅可以掌握自定义标签的基本原理,还能了解到如何设计和实现一个...
自定义的漂亮分页标签,支持上下翻页,直接跳转指定页
利用自定义标签实现分页,本代码是本人亲自所作
在这个基于Struts2的自定义分页标签的实践中,我们将深入探讨如何创建、配置和使用自定义标签来实现数据的分页展示,同时与Oracle数据库进行交互。 首先,理解分页的基本概念至关重要。分页是将大量数据分成小块,...
本教程将详细介绍如何在Struts框架中利用自定义标签实现分页。 首先,我们需要了解分页的基本原理。分页通常是通过在数据库查询中限制返回结果的数量来实现的。例如,如果每页显示10条记录,那么第一页将请求1到10...
通过自定义标签实现分页的好处在于,我们可以更好地控制分页的样式和逻辑,使其更符合项目需求,同时也可以提高代码的复用性。这种方式比直接使用Struts的分页标签更加灵活,但需要更多的编码工作。总的来说,自定义...
综合上述信息,这个压缩包可能包含了一个基于自定义标签实现的分页库,该库支持通过反射来动态配置分页参数,并且能够高效地处理ResultSet,实现数据库查询的分页。使用"fenPageTld"这个名字的文件很可能是该分页库...
在这个场景中,"使用JSP自定义标签实现EMP分页"是一个具体的应用实例,旨在提升代码的可读性和可维护性,对比传统的Servlet方法,自定义标签能让分页处理更加简洁。 首先,我们要了解JSP自定义标签的基本结构和工作...
本项目提供了一个用于分页的自定义标签,适用于那些需要在网页上进行数据分页展示的应用。 首先,我们要理解什么是JSP自定义标签。在JSP中,自定义标签是通过TLD(Tag Library Descriptor)文件定义的,它允许...
4. JSP页面:这些页面展示了如何使用自定义标签来实现分页,通常包含HTML、JSP语法以及自定义标签的调用。 5. 可能还有CSS样式文件和JavaScript文件:用于控制分页按钮的样式和交互效果。 通过对这个示例的学习,...
本文将详细介绍如何使用自定义标签实现简单实用的分页功能。 首先,理解分页的基本概念。分页通常包括当前页、总页数、每页显示条数以及上一页、下一页、跳转页码等元素。用户可以通过这些元素方便地浏览数据集合的...
### 在Django中使用自定义标签实现分页功能 #### 概述 本文将详细介绍如何在Django项目中通过自定义模板标签的方式来实现一个高级、动态的分页功能。分页是在任何涉及到大量数据展示的应用中都不可或缺的一个功能。...
7. **在JSP页面使用自定义标签**:在视图层,使用自定义的分页标签来构建分页链接。例如,`<startPage/>`,`<endPage/>`,`<previousPage/>`和`<nextPage/>`标签可以嵌入到HTML代码中,形成完整的分页导航。 8. **...
本例中,我们探讨的是如何结合Struts、Hibernate和自定义标签实现分页功能,这是一种常见的优化用户界面体验的技术,特别是对于数据量大的查询结果。 1. **分页原理** 分页的基本思想是将大量数据分成多个小部分,...
在JavaServer Pages (JSP) 开发中,为了提高代码的可维护性和重用性,开发者经常使用自定义标签库。本主题将深入探讨“jsp自定义分页标签”,这是一种在网页展示大量数据时非常实用的功能,它可以有效地帮助用户浏览...
对于分页,Hibernate提供了`Criteria`、`Query`等API,可以方便地实现分页查询,只需指定每页大小和当前页数即可。 其次,JSP(JavaServer Pages)是Java EE中用于生成动态网页的技术。在分页场景下,JSP通常负责...