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. Activity代码结构

    把一个Nova项目中典型的Activity代码结构简单归纳一下,保持代码风格的一致,有助于日常开发效率提升以及日后维护 Class Name     变量 constants   requests   ...

  2. Shell | grep with n following lines

    'foo' sample.txt ➜ dex-method-counts git:(master) ./dex-method-counts ~/Downloads/n.apk | 'hui' hui: ...

  3. ICE学习——异步1

    ICE的AMI和AMD: AMI:指的是客户端的调用.一般有一个代理类,一个回调类. 从服务端返回的数据在回调类中的ice_response函数中. AMD:指的是服务端对客户端的调用分派.一般进行业 ...

  4. 【测试】模拟一个全表扫描的sql,对其进行优化走索引,并且将执行计划稳定到baseLine。

    ①创建表t3: SQL> create table t3 (id int); Table created. SQL; rows created. ②开启自动捕获并修改时间格式: SQL> ...

  5. java基础回顾(六)——WeakReference、SoftReference

    在Java里, 当一个对象o被创建时, 它被放在Heap里. 当GC运行的时候, 如果发现没有任何引用指向o, o就会被回收以腾出内存空间. 或者换句话说, 一个对象被回收, 必须满足两个条件: 1) ...

  6. 互斥对象 Mutex 和MFC中的CMutex

    互斥(Mutex)是一种用途非常广泛的内核对象.能够保证多个线程对同一共享资源的互斥访问.同临界区有些类似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共 ...

  7. Heavily reliance on forensic tools is risky

    We could take advantage of forensic tools to examine and analyze the evidence, but heavily reliance ...

  8. 十一、Struts2封装请求参数的方式

    十一.Struts2封装请求参数的方式 方式一.Action 本身作为model对象,通过成员setter封装(一个名字为params的拦截器干的) 注意:表单中的名称要和动作类中的名称一致(这是必须 ...

  9. puppet实现主从部署各种软件实战参考模型

    puppet实现主从部署各种软件实战参考模型   实验要求:     1.我将准备三个节点 node2 , node3 , node4 2.我们想让节点node3部署ntp,nginx ;节点node ...

  10. 消息推送之GCM

    利用GCM进行消息推送 原理 1.接收端向GCM注册registerid 2.发送端发消息给GCM服务器 这个过程需要三个参数: (1)API Key (2)registerid (3)传递的数据 3 ...