-
使用方法,在要进行分页的页面,使用jsp:include 标签动态包含本组件
该组件需要的参数有- url 需要进行分页的网页路径
- currentPage 定义当前所在页数,如果没有定义,则默认是第一页
- linesize 定义每页显示的数据个数,如果没有定义,则默认是5行
- allRecorders 保存总记录的统计结果,需要从包含页面传入
- column 模糊查询的数据列
- keyWord 模糊查询的关键字
组件内容
<%@ page pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8") ;
String url = request.getParameter("url") ; // 提交路径
int currentPage = 1 ; // 当前所在的页面,默认是在第1页
int lineSize = 1 ; // 表示每页显示的数据行数
int allRecorders = 0 ; // 保存总记录的统计结果
int pageSize = 1 ; // 总页数
String column = request.getParameter("column") ;
String keyWord = request.getParameter("keyWord") ;
%>
<%
try {
currentPage = Integer.parseInt(request.getParameter("currentPage")) ;
} catch (Exception e) {}
try {
lineSize = Integer.parseInt(request.getParameter("lineSize")) ;
} catch (Exception e) {}
try {
allRecorders = Integer.parseInt(request.getParameter("allRecorders")) ;
} catch (Exception e) {}
if ("null".equals(column) || column == null || "".equals(column)) {
column = "" ;
}
if ("null".equals(keyWord) || keyWord == null || "".equals(keyWord)) {
keyWord = "" ;
}
%>
<%
int seed = 2 ; // 定义一个种子数,用于判断是否会有“.”
if (allRecorders > 0) {
pageSize = (allRecorders + lineSize - 1) / lineSize ;
}
%>
- ">
<%
if (currentPage == 1) {
%>
1
<%
} else {
%>
1
<%
}
%>
<%
if (pageSize > seed * 2) { // 数据量很大,需要进行省略号的出现
if (currentPage <= seed * 2) {
int startPage = 2 ; // 从第2页开始显示
int endPage = currentPage + seed * 2 ;
if (endPage >= pageSize) {
endPage = pageSize - 1 ;
}
for (int x = startPage ; x <= endPage ; x ++) {
%>
- "><%=x%>
<%
}
if ((currentPage + seed * 2) < pageSize - 1) {
%>
- ...
<%
}
} else { // 需要分两段显示了
%>
- ...
<%
int startPage = currentPage - seed ;
int endPage = currentPage + seed ;
if (endPage >= pageSize) {
endPage = pageSize - 1 ;
}
for (int x = startPage ; x <= endPage ; x ++) {
%>
- "><%=x%>
<%
}
if ((currentPage + seed * 2) < pageSize) { // 后面还有很多页
%>
- ...
<%
} else { // 后续的页码需要出现
for (int x = currentPage + seed + 1 ; x < pageSize ; x ++ ) {
%>
- "><%=x%>
<%
}
}
}
}
%>
<%
if (pageSize != 1) {
%>
- ">
<%
if (currentPage == pageSize) {
%>
<%=pageSize%>
<%
} else {
%>
<%=pageSize%>
<%
}
%>
<%
}
%>
- 使用示例
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="cn.mldn.service.*" %>
<%@ page import="cn.mldn.util.factory.*" %>
<%@ page import="cn.mldn.vo.*" %>
<%@ page import="java.util.*" %>
<%
request.setCharacterEncoding("utf-8");
String basePath = request.getScheme() + "://" +
request.getServerName() + ":" + request.getServerPort() +
request.getContextPath() + "/" ;
%>
<%!
public static final String GOODS_LIST_URL="oages/back/admin/goods/goods_list.jsp";
public static final String GOODS_ADD_URL = "pages/back/admin/goods/goods_add.jsp" ;
public static final String GOODS_DELETE_URL = "pages/back/admin/goods/goods_delete_do.jsp" ;
public static final String GOODS_EDIT_URL = "pages/back/admin/goods/goods_edit.jsp" ;
%>
<%
//定义当前所在页数,默认为第一页
int currentPage = 1;
//定义每页显示的数据个数,默认是每页显示5行数据
int lineSize = 5;
//定义总页数默认为1
int pageSize = 1;
//保存总记录数
int allRecorders = 0;
//定义模糊查询的数据列
//在搜索分页组件中,会自动将字符串进行拆分处理,字符串格式为"显示的文字信息:模糊查询数据列名称"
String columnData = "商品名称:name";
//column和keyWord的参数是在分页搜索组件中获取到的
String column=request.getParameter("col");
String keyWord=request.getParameter("ky");
//从页面中接收定义的当前所在页 和 每页显示个数的信息
//其中cp表示当前所在页,ls表示每页显示的个数
//由于数据类型的转换异常无法处理,所以直接在浏览器中抛出异常
try{
currentPage = Integer.parseInt(request.getParameter("cp"));
}catch(Exception e){}
try{
currentPage = Integer.parseInt(request.getParameter("ls"));
}catch(Exception e){}
//实例化IGoodsService接口,使用list()方法,取出分页查询的数据
IGoodsService goodsService = Factory.getServiceInstance("goods.service");
Map map = goodsService.list(currentPage, lineSize, column, keyWord);
//取出所有商品信息
List allGoods = (List)map.get("allGoods");
//取出所有商品数量信息
allRecorders = (Integer)map.get("goodsCount");
//取出所有商品分类信息
Map allItems = (Map)map.get("allItems");
%>
商品列表
商品信息列表
商品名称
商品单价
商品分类
操作
<%
//取出所有商品信息,进行动态生成页面
Iterator ite = allGoods.iterator();
while(ite.hasNext()){
Goods temp = ite.next();
%>
<%=temp.getName() %>
<%=temp.getPrice() %>
<%= allItems.get(temp.getIid())%>
编辑
<%
}
%>
- 页面效果