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

分頁實現結果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM