JSTL实现分页

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

分页实现结果如下:

原文地址:https://www.cnblogs.com/drcoding/p/qrf.html