pager taglib简单解析,够实用

本示例思路是这样的:从servlet到数据库取分页信息,然后响应到jsp页面,当点击jsp页面的页码(1,2,3,4.......)时,再请求servlet(如何加包去百度,我不说)

这是servlet代码

<pre name="code" class="java">package com.leo.servlet;

import java.io.IOException;
import java.net.URLDecoder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.leo.dao.PlateDao;
import com.leo.dao.UserDao;
import com.leo.entity.Page_Plate;
import com.leo.entity.User;

/**
 * Servlet implementation class PagerPlateServlet
 */
@WebServlet("/PagerPlateServlet")
public class PagerPlateServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		String pager_offset =  request.getParameter("pager.offset");//我用的是mysql的limit分页需要两个参数
		String maxPageItems =  request.getParameter("maxPageItems");
		int start;//limit语句的起始参数
 		int dataNumber;//每页显示数据条数
		if(pager_offset==null||maxPageItems==null){//当没有jsp页面时无法点击页码。所以要有个初始值
			
			start=0;
			 dataNumber=3;
		 }else{
 			start = Integer.parseInt(pager_offset);
			 dataNumber = Integer.parseInt(maxPageItems);
 		}
		 PlateDao plateDao = new PlateDao();
		 Page_Plate page = plateDao.getPage(start,dataNumber);//这是查询的分页结果,,,,,,Page_Plate是自己定义的分页实体类,
		 request.setAttribute("page", page);
		 request.getRequestDispatcher("/views/main.jsp").forward(request, response);
 	} 

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
 	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 		doGet(request, response);
 	}

 }

 jsp页面代码 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"  %><!-- 加包-->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>

	<table>
		<tr>
			<td>板块id</td>		                                       
                         <td>板块名称</td>
		</tr>
		<c:forEach var="plate" items="${page.plates }"> 
			 <tr>
                                <td>${plate.id}</td>
                                <td>${plate.plate_title}</td>
			</tr>
		</c:forEach>
	</table>
	                    // pg:pager的url属性是要提交的位置,这里就是我们上面所说的Servlet
	<div align="center">//下面的分页代码,只需要你传2个值就是items属性值,(也就是所查表的总记录数,以便显示分出多少页)和url。其他的分页框架自己写好的
	<pg:pager items="${page.total}" url="" maxPageItems="${3 }" maxIndexPages="${3}" export="currentPageNumber=pageNumber">  
            <pg:param name="maxPageItems" value="${3 }"></pg:param>//这个是为了传limit ?,?分页语句的第二个参数给servlet,
            <!-- 首页 -->                                           //  还有第一个参数是当你点击页码时会在url里自动传
	            <pg:first>  
	                <!-- 生成链接 -->  
	                <a href="${pageUrl }">首页</a>  //就这么写不用管
	            </pg:first>  
	            <pg:prev>    
	             <a href="${pageUrl }">上一页</a>//就这么写不用管
	            </pg:prev>  
	            <pg:pages>  
	                <c:choose>  
	                    <c:when test="${currentPageNumber eq pageNumber }">  //(当点击的页码是当前页码时为红色数字,不显示为链接)就这么写不用管,
	                      <a style="color:red;">${pageNumber }</a>
	                    </c:when>  
	                    <c:otherwise>  
	                       <a href="${pageUrl }">${pageNumber }</a>//就这么写不用管
	                    </c:otherwise>  
	                </c:choose>  
	            </pg:pages>  
	            <pg:next>  
	                <a href="${pageUrl }">下一页</a>//就这么写不用管
	            </pg:next>  
	            <pg:last>  
	               <a href="${pageUrl }">尾页</a> //就这么写不用管
	            </pg:last>             
        </pg:pager>  
     </div>
</body>
</html>

 

这两个属性:

maxPageItems="${3 }" maxIndexPages="${3}"

 maxPageItems表示每页显示数据的条数,我写的是3; 

maxIndexPages表示每次显示的页码个数,比如是  1  2  3  4  5  6   六个还是1   2   3   4   5   6   7   8  八个,我写的是3个

这两个属性如果不加也可以,默认值是10




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值