jstl分页管理

本文介绍了如何通过servlet实现分页,并详细讲解了JSTL的各种核心标签,包括<c:forEach>、<c:if>、<c:choose>等。还探讨了<fmt:formatNumber>、<fmt:formatDate />等格式化标签库的使用,以及<c:forEach>中varStatus属性的应用。内容覆盖了JSTL标签库的基础和实践,旨在提高开发效率。
摘要由CSDN通过智能技术生成

通过servlet实现分页

一、首先要查询出要分页的内容.用会话存储

request.setAttribute("content",lst);

二、由于每次点击页面时都要知道当前是第几页,所以要将这个变量存储在会话里面

request.setAttribute("pageNum",pageNum);//pageNum是用户点击时存储的页面数

三、求出一共有多少页maxPage,当查询出来的所有数据条数与你自己设定的每页条目数计算

if (pageCount % 4 == 0) {
        maxPage = pageCount / 4;//pageCount = lst.size();lst是查询出来的集合
    } else {
        maxPage = pageCount / 4 + 1;
    }
  然后存储在会话里面
    request.setAttribute("pageNum",pageNum);//maxPage是我自己定义的最大页面数

• 页面设计(在JSP中实现)
页面设计里面,我们只需要传递变量,也就是当前第几页这个变量

   下一页pageNum = ${pageNum+1}
   上一页pageNum = ${pageNum+1}
   首页pageNum = ${0}
   尾页pageNum = ${maxPage-1}
a.处理第一页时不能点击上一页
<c:if test="${pageNum>0}">
    <a href="GoodsServlet?pageNum=${pageNum-1 }">[上一页]</a>
   </c:if>
   <c:if test="${pageNum==0}">[上一页]</c:if>
b.最后一页时不能点击下一页
 <c:if test="${pageNum<maxPage-1}">
    <a href="GoodsServlet?pageNum=${pageNum+1 }">[下一页]</a>
    </c:if>
   <c:if test="${pageNum==maxPage-1}">[下一页]</c:if>

• 具体实现代码如下
1.servlet部分

List lst = (List) request.getAttribute("goods");// 取得共享里面的数据
        // 查询应该只用查询一次就可以了,所以如果查询过,就直接从查询的结果里面取就OK了
        if (lst == null) {
            GoodsImpl g = new GoodsImpl();
            lst = g.findAll();
        }
        // 接收分页页面传递过来的页面数
        String strNum = request.getParameter("pageNum");
        int pageNum = 0;// 表示当前要显示的页面数
        int maxPage = 0;// 最大页
        int pageCount = lst.size();// 得到查询出来的所有数据的数目
        // 如果是第一次执行,就会接收不到数据
        if (strNum == null) {
            strNum = "0";
        } else {// 接收到了用户点击的第几(pageNum)页
            pageNum = Integer.parseInt(strNum);
        }
        // 计算出要分多少页
        if (pageCount % 4 == 0) {
            maxPage = pageCount / 4;
        } else {
            maxPage = pageCount / 4 + 1;
        }
        request.setAttribute("maxPage", maxPage);// 存储最大页数
        request.setAttribute("pageNum", pageNum);// 将当前页面存储起来,给分页页面使用
        request.setAttribute("goods", lst);// 存储要显示的数据
        request.getRequestDispatcher("/index.jsp").forward(request, response);

2.页面部分

<table align="center" border="0" width="85%">
                <tr bgcolor="#6699FF" width="30">
                    <td>产品编号</td>
                    <td>产品名称</td>
                    <td>产品图片</td>
                    <td>产品价格</td>
                </tr>
                <c:forEach var="g" items="${goods}" begin="${pageNum*4}" end="${(pageNum+1)*4-1}">
                <tr bgcolor="#DDDDDD" width="410">
                    <td>${g.gId }</td>
                    <td>${g.sName }</td>
                    <td><img src="${g.sImage }" width="78" height="120"/></td>
                    <td>${g.sPrice }</td>
                </tr>
                </c:forEach>
                <tr bgcolor="#6699FF" width="30">
                    <td colspan="4">
                        <a href="1">[首页]</a>
                        <c:if test="${pageNum>0}">
                            <a href="GoodsServlet?pageNum=${pageNum-1 }">[上一页]</a>
                        </c:if>
                        <c:if test="${pageNum==0}">
                            [上一页]
                        </c:if>

                        <c:if test="${pageNum<maxPage-1}">
                            <a href="GoodsServlet?pageNum=${pageNum+1 }">[下一页]</a>
                        </c:if>
                        <c:if test="${pageNum==maxPage-1}">
                            [下一页]
                        </c:if>
                        <a href="GoodsServlet?pageNum=${maxPage-1 }">[尾页]</a>
                    </td>
                </tr>
            </table>

jstl

JSTL标签库,是日常开发经常使用的,也是众多标签中性能最好的。把常用的内容,放在这里备份一份,随用随查。尽量做到不用查,就可以随手就可以写出来。这算是Java程序员的基本功吧,一定要扎实。

JSTL全名为JavaServer Pages Standard Tag Library,目前最新的版本为1.1版。JSTL是由JCP(Java Community Process)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签函数库。

Web程序员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序的阅读性、维护性和方便性。

============================================================================================

  • <%@ taglib %>引入标签库

1、以classPath中,加入jar包: standard-1.1.2.jar , jstl-1.1.2.jar

2、在相目\WEB-INF\tld\文件夹中放入常用的tld文件:c.tld,fmt.tld

3、在jsp文件的顶部加入以下内容:

1.	<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>   
2.	<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>  
3.	<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>  

============================================================================================

  • <c:> 核心标签库

JSTL 核心标签库(C标签)标签共有13个,功能上分为4类:
1.表达式控制标签:out、set、remove、catch
2.流程控制标签:if、choose、when、otherwise
3.循环标签:forEach、forTokens
4.URL操作标签:import、url、redirect

============================================================================================

  • <c:forEach> 标签

为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。

<c:forEach> 标签的语法 说明 :
语法1:迭代一集合对象之所有成员
Html代码

1.	<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>  
2.	本体内容  
3.	</c:forEach>  

语法2:迭代指定的次数
Html代码

1.	<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>  
2.	本体内容  
3.	</c:forEach>  

<c:forEach> 标签的 属性说明 :
在这里插入图片描述

<c:forEach> 遍历 List列表:
对于一个基本类型的数组,当前元素将作为相应包装类(Integer、Float等等)的一个实例提供。
Html代码

	<c:forEach items="${domainList }" var="item">  
	<tr>  
	  <td align="center" valign="middle">${item["domain"]==null?"&nbsp;":item["domain"]}</td>  
	  <td align="center" valign="middle"><fmt:formatDate value="${item['bind_date']}" pattern="yyyy-MM-dd HH:mm:ss"/></td>  
	  <td align="center" valign="middle">  
	    <c:if test="${item['domain']!=null}">  
	    <a href="javascript:;" id="${item['domain']}" class="del">&nbsp;</a>  
	    </c:if>  
	    </td>  
	</tr>    
	</c:forEach>  

<c:forEach> 遍历Map:
对于一个java.util.Map,当前元素则作为一个java.util.Map.Entry提供。
Html代码

1.	<c:if test="${!empty permissionMap}">    
2.	<c:forEach items="${permissionMap}" var="item">  
3.	<tr>  
4.	    <td>${item.value.id}</td>  
5.	    <td>${item.value.urlOnClass}</td>  
6.	    <td>${item.value.urlOnMethod}</td>  
7.	</tr>  
8.	</c:forEach>  
9.	</c:if>    

==========================================================================================

  • <c:forTokens> 标签

用来浏览一字符串中所有的成员,其成员是由定义符号(delimiters)所分隔的。

<c:forTokens> 标签的语法 说明 :
Html代码

	<c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"]  
	[varStatus="varStatusName"] [begin="begin"] [end="end"] [st
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值