JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。
下面介绍使用jstl实现的简单分页。引入的conn.jsp文件是使用jstl连接数据库文件,根据MVC的思想,JSP作为View层,只是用来负责显示操作,所以在大型项目开发中一般不推荐使用JSTL的数据库标签。

开发环境:Myeclipse10、sqlservler2005、tomcat7.0.40

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@include file="conn.jsp" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'fenye.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
<div align="center">
<c:set var="pagesize" value="4" scope="page" /> <sql:query var="result1" maxRows="6" startRow="0"> select * from Table_1</sql:query> <!--记录数 --> <c:set var="number" value="${result1.rowCount}" scope="page" /> <!-- 计算分页数 --> <c:set var="pagenumber" value="${(number+pagesize-1)/pagesize}" /> <font color="blue"><c:out value="${number}" /></font> <table border="1" align="center">
<tr>
<td>书名</td>
<td>作者</td>
<td>价格</td>
<th>操作</th>
</tr>
<!--判断是否有信息 -->
<!-- 如果类别为空 otherwise -->
<c:choose> <c:when test="${empty result1.rows}">
<tr>
<td colspan="4" align="center">暂时没有图书!</td>
</tr>
</c:when> <c:otherwise> <c:forEach items="${result1.rowsByIndex}" var="row1" begin="${param.start}" end="${param.start+pagesize-1}" >
<tr>
<td>${row1[0]}</td>
<td>${row1[1]}</td>
<td>${row1[2]}</td>
<td><a href="delete.jsp?name=${row1[0]}">删除</a></td>
</tr>
</c:forEach> </c:otherwise>
</c:choose>
</table> <!--分页 -->
<c:choose>
<c:when test="${param.start>0}" >
<a href="fenye.jsp?start=${param.start-pagesize}">上一页</a>
</c:when>
<c:otherwise>
上一页
</c:otherwise>
</c:choose> <c:choose>
<c:when test="${param.start+pagesize<number}" >
<a href="fenye.jsp?start=${param.start+pagesize}">下一页</a>
</c:when>
<c:otherwise>
下一页
</c:otherwise>
</c:choose> <!-- 显示记录数 -->
共<font color="red">${number}</font>条记录   <!-- 显示分页数 -->
共<fmt:parseNumber type="number" value="${pagenumber}" integerOnly="true" />页 </div>
</body>
</html>

  JSTL标签连接数据库conn.jsp文件:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'conn.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body> <sql:setDataSource
url="jdbc:sqlserver://localhost:1433;databaseName=library"
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
user="sa"
password="123"
/>
</body>
</html>

  导出的数据库脚本:

USE [library]
GO
/****** 对象: Table [dbo].[Table_1] 脚本日期: 07/04/2013 14:32:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Table_1](
[name] [nchar](10) NOT NULL,
[author] [char](10) NULL,
[price] [int] NOT NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED
(
[name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO
SET ANSI_PADDING OFF

分页实现结果如下:

JSTL实现分页的更多相关文章

  1. 分享jstl实现分页,类似百度分页

    <c:if test=" ${requestScope.curPage <= 0}"> </ c:if> < c:if test=" ...

  2. 住javaWeb分页实现(模拟百度首页)

    本文来源于 http://blog.csdn.net/tjpu_lin/article/details/41050475 近期在开发一个项目,项目中有非常多数据展示的模块.所以要用到分页,网上搜了非常 ...

  3. 分页探究--Filter+JSTL

    最近卡了一个功能就是分页,查了很多资料,分页大概是两种类型:一种是把数据库的东西全部查出来然后放在session里,用list一页一页传到页面,这样的消耗比较大;另一种就是使用sql语句的limit来 ...

  4. jstl标签怎么实现分页中下一页

    <script type="text/javascript">           //分页按钮处理        function goPageAction(page ...

  5. JAVA基础之JDBC开发、JSTL语法、EL表达式与数据分页

    一.直接使用JDBC开发的问题 1.当表中的列很多时,需要写很长的SQL语句 还需要写大量 setXXX() 设置参数语句 读取数据时还需要写大量setXXXX()设置属性语句 2.非常容易出错,而且 ...

  6. 分页管理的JSTL实现

    userMgr.jsp <%@ page language="java" import="java.util.*" pageEncoding=" ...

  7. 使用JSTL的sql:query标签制作分页查询遇到NoSuchFieldError: deferredExpression

    参考:http://hi.baidu.com/desyle/item/4fe650265792d7182a0f1c33 症状: 如题所述,代码如下 <sql:query var="re ...

  8. JSTL(使用if-else实现分页)

    一.认识标签 <c:choose>标签没有任何属性. <c:when>标签具有以下列出的一个属性. <c:otherwise>标签没有任何属性. <c:whe ...

  9. 数据库分页和使用jstl标签替换分页的jsp代码

    参考链接: http://www.mossle.com/docs/jsp/html/jsp-ch-15.html

随机推荐

  1. Django中级篇(下)

    中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. MIDDLEWA ...

  2. CODEVS 1036 商务旅行

    题目描述 Description 某首都城市的商人要经常到各城镇去做生意,他们按自己的路线去做,目的是为了更好的节约时间. 假设有N个城镇,首都编号为1,商人从首都出发,其他各城镇之间都有道路连接,任 ...

  3. 洛谷P2320 鬼谷子的钱袋

    P2320 06湖南 鬼谷子的钱袋 171通过 480提交 题目提供者xmyzwls 标签各省省选 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 题目有误 数据需要特判 评测系统太神了 题目 ...

  4. Android layout属性大全

    第一类:属性值 true或者 false  android:layout_centerHrizontal 水平居中      android:layout_centerVertical 垂直居中   ...

  5. TCP/IP详解学习笔记(12)-- TCP:传输控制协议

    1.概述      TCP提供了一种可靠的面向连接的字节流运输层服务.      TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认,对失序的数据重新排序,丢弃重复数据,T ...

  6. C++异常:no matching function for call to "Matrix(Matrix&)"

    C++异常:no matching function for call to "Matrix(Matrix&)" 我定义了一个类叫Matrix,其中构造函数explicit ...

  7. ajax 跳入error的一些原因

    先放一个标准的jquery的ajax代码: $.ajax({ type: 'POST', url: 'getSecondClassification', data: {"sort2" ...

  8. 【Linux】基于Linux的buffer和cache学习

    缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘.其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读 ...

  9. 【IHttpHandler】ASP.NET 生命周期

    对由 Microsoft® Internet 信息服务 (IIS) 处理的 Microsoft® ASP.NET 页面的每个请求都会被移交到 ASP.NET HTTP 管道.HTTP 管道由一系列托管 ...

  10. c89和c99的区别【转】

    //本文转自:http://www.360doc.com/content/10/0324/18/2633_20101093.shtml 注: GCC支持C99, 通过 --std=c99 命令行参数开 ...