1、创建分页工具类(jstl标签的实现类)
package com.utils;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/***
* 分页控件
* @author hugo
*
*/
public class PaginationTag extends TagSupport{
private static final long serialVersionUID = 1L;
/**
* 当前页
*/
private String curPage;
/**
* 总tiao数
*/
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;
}
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
// 得到分页后的页数,(总页数/页大小)+1
if (pageSize == null || pageSize == "") {
pageSize = "1";
}
int pageNumber=0;//共有页数
if (Integer.parseInt(totalPage)%Integer.parseInt(pageSize) == 0 ){
pageNumber = Integer.parseInt(totalPage)/Integer.parseInt(pageSize);
} else{
pageNumber = Integer.parseInt(totalPage)/Integer.parseInt(pageSize) + 1;
}
if (Integer.parseInt(curPage) < 0) {
curPage = "1";
}
try {
if(pageNumber>1){
out.print("<span onclick=page(0) style=\"cursor: hand; font-size:12px\">首页</span> ");
//上一页
// out.print("<span class=f7_1 style=\"cursor: hand;\">< </span>");
if((Integer.parseInt(curPage)-1<0)){
out.print("<span style=\"cursor: hand;font-size:12px\">上一页</span> ");
}else{
out.print("<span style=\"cursor: hand;;font-size:12px\"" +
"onclick=page("+(Integer.parseInt(curPage) - 1)+")>上一页</span> ");
}
// // 显示给用户操作的页面开始端
// int start = Integer.parseInt(curPage) - 4;
// // 显示给用户操作的页面结束端
// int end = Integer.parseInt(curPage) + 4;
// // 特殊情况处理(开始端小于0)
// if ((Integer.parseInt(curPage) - 4) <= 1) {
// start = 1;
// if(pageNumber>10){
// end=10-pageNumber;
// }else{
// end=pageNumber;
// }
// }
// // 特殊情况处理(结束端大于总页数)
// if ((Integer.parseInt(curPage) + 4) > Integer.parseInt(totalPage)) {
// end = pageNumber;
// start=Integer.parseInt(totalPage)-10;
// if(start<0){
// start=1;
// }
// }
int start=(Integer.parseInt(curPage))-4;
if(start<=0){
start = 0;
}
int end=7;
if(Integer.parseInt(curPage)-start==4){
start=start+1;
end=end+start;
if(end>=pageNumber){
end=pageNumber;
}
}
if(end>=pageNumber){
end=pageNumber;
}
for (int i = start+1; i <=end; i++) {
if(i-1== Integer.parseInt(curPage)){
out.print("<span style=\"cursor: hand;border-style: solid;border-color: #ccc;background:bottom;color:white;background-color: #ccc;border-width: 1px;border-bottom-style: none;\" onclick=page("+(i-1)+")><font size=\"2\">"+i+"</font></span> ");
}else{
out.print("<span style=\"cursor: hand;background:bottom;color:black\" onclick=page("+(i-1)+")><font size=\"2\">"+i+"</font></span> ");
}
}
//下一页
if(Integer.parseInt(curPage)>=pageNumber-1){
out.print("<span style=\"font-size:12px\">下一页</span><span class=f7_1>" +
"</span><span></span><span></span> ");
}else{
out.print("<span style=\"cursor: hand;font-size:12px\" " +
"onclick=page("+(Integer.parseInt(curPage)+1)+")>下一页</span><span class=f7_1>" +
"</span><span></span><span></span> ");
}
//尾页
if(Integer.parseInt(curPage)>=pageNumber-1){
out.print("<span style=\"font-size:12px\">尾页</span> ");
}else{
out.print("<span onclick=page("+(pageNumber-1)+") style=\"cursor: hand;font-size:12px\">尾页</span> ");
}
out.print("<input type=hidden id='curPage' name=curPage>");
out.print("<script type=\"text/javascript\">");
out.print("function page(n){");
out.print("document.getElementById(\"curPage\").value=n;");
out.print("document.getElementById(\"pageForm\").submit();");
out.print("}");
out.print("</script>");
}
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
}
2、创建jstl的tld文件
<?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.utils.PaginationTag</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>
3、测试
<%@ taglib prefix="page" uri="/WEB-INF/Pagination.tld"%>
...
<%
//此处模拟后台传入数据
request.setAttribute("curPage","0");
request.setAttribute("pageSize","5");
request.setAttribute("totalPage","12");
%>
...
<body>
<!-- 修改下面的index.action -->
<form action="/index.action" id="pageForm" method="post" style="display: inline;">
第[<font color="red">${ curPage+1}</font>/${pageCount }]页 共[${ totalPage }]条信息
<page:outpage pageSize="${pageSize}"
totalPage="${totalPage}" curPage="${curPage}" />
</form>
</body>
4、效果图
- 大小: 5.5 KB
分享到:
相关推荐
如何用JSTL实现分页 如何用JSTL实现分页 如何用JSTL实现分页 如何用JSTL实现分页 如何用JSTL实现分页
jsp+jstl实现分页,简单的分页
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ...
JSTL 实现 JSP 分页显示数据代码(MySQL 数据库) 本文将详细讲解如何使用 JSTL 实现 JSP 分页显示数据代码,并使用 MySQL 作为数据库。该代码不仅提供了分页显示数据的功能,还提供了数据库和表的创建代码。 标题...
在本示例中,我们将探讨如何利用JSTL实现分页功能,特别是在结合JavaBean、JSP和SQL Server 2005数据库的情况下。 首先,我们要理解分页的基本原理。分页主要是通过限制数据库查询返回的数据量来实现的,每次只获取...
实现分页通常涉及以下几个步骤: 1. **计算总页数**:根据数据库中的记录总数和每页显示的记录数,计算出总页数。 2. **获取当前页数据**:通过SQL查询语句,结合当前页码和每页记录数,获取当前页的数据。 3. **...
总的来说,JSTL提供了强大的控制结构,使得在JSP中实现分页功能变得简单直观。通过结合EL表达式和JSTL标签,我们可以创建动态的、适应性强的分页界面,提高用户体验。在实际开发中,还需要考虑错误处理和优化,例如...
本文将详细探讨如何在JSP中利用JSTL实现分页技术。 首先,我们需要了解JSTL的基本概念。JSTL是由Sun Microsystems开发的一个开源项目,旨在简化JSP页面的编写,减少脚本代码,提高可维护性和可读性。它包括多个核心...
本示例是基于`jsp`、`servlet`、`EL(Expression Language)`表达式和`JSTL(JavaServer Pages Standard Tag Library)`实现的一个分页代码。下面,我们将深入探讨这些技术及其在分页中的应用。 **1. JSP(Java...
开发者可能需要编写SQL查询语句,利用`TOP`关键字或者`ROW_NUMBER()`函数实现分页效果,返回每一页的数据量。 JSTL(JavaServer Pages Standard Tag Library)是JSP标准标签库,提供了许多预定义的标签,简化了JSP...
本文将详细介绍如何利用JSP结合JSTL实现分页功能,并提供一个具体的实例代码分析。 #### 二、JSP与JSTL简介 1. **JSP**: - JSP是一种基于Java技术的服务器端脚本语言。 - 它允许开发者将HTML、XML和其他文档格式...
jh-plugins是一项基于JSTL的自定义标签(插件)库,致力于打造一处实现、任何项目通用的开源项目。 jh-plugins已实现标签库:分页 jh-plugins特点:高效、轻巧、简单、适用(可融合与任何B/S架构的java项目) jh-...
总的来说,通过Struts和JSTL实现分页,可以高效地管理大量数据,提高Web应用的性能和用户体验。理解并掌握这一技术对于JavaEE开发人员来说是至关重要的。在实际项目中,还需要考虑如何优化数据库查询、缓存策略以及...
在这个"JSTL&EL分页的例子"中,我们将探讨如何使用JSTL和EL来实现分页功能,这是一种在网页上显示大量数据时非常实用的技术。分页可以使用户更方便地浏览和管理信息,避免一次性加载过多数据导致页面响应慢或者内存...
通过JavaScript函数调用jQuery load函数来实现分页。load函数中将起始页数发送至servlet,servlet通过DataService从数据库中获取数据。但是每次点击都会请求数据库。
在网页开发中,分页功能是一项非常常见的需求,特别是在数据量较大的情况下,为了提高用户体验,我们需要将大量数据分批次展示,这就是jsp实现分页功能的主要目的。本篇将详细介绍如何利用jsp来完成这一任务。 首先...
`实现分页的.java`这个项目很可能是实现了这样一个分页插件,使用了JSTL(JavaServer Pages Standard Tag Library)来简化JSP页面的编写。 JSTL是Java Web开发中的一个标准标签库,它提供了多种功能标签,包括核心...
3. **.struts-config.xml配置文件**:在实现分页功能时,需要在项目的配置文件`struts-config.xml`中定义Action以及相关的ActionForm和ActionForward。ActionForm用于封装用户请求的数据,ActionForward则定义了请求...
本篇文章将详细解读如何利用JSP中的JSTL标签库实现真分页功能。 #### JSTL简介 JavaServer Pages Standard Tag Library (JSTL) 是一套为简化JSP页面开发而设计的标准标签库。它提供了一系列预定义标签来执行常见...