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
分頁實現結果如下:

