J道 批量分页查询框架
特点:
- 开发方便迅速,当显示项目数多于1页最大显示量,自动实现多页显示。
- 采取缓存技术,大批量频繁查询时,性能最优,速度最快。
- 基于EJB+Struts框架,易于扩展和伸缩,适合小中大型各类数据库查询系统
分页批量查询效果图:

设计原理:
EJB层使用DAO模式实现下列三个功能
1. 获得整个数据表记录总数。
2. 获取符合查询条件的所有数据ID集合。
3. 根据ID查询获取某个完整数据对象记录。
Web层基于Struts,分别实现下列功能
1. Action中对所有数据ID集合实现遍历时,根据ID获取完整数据对象,最后形成数据对象集合,保存在ActionForm中。
2. 使用标签库显示多页,标签库主要从ActionForm中获取相关信息。
3. Jsp页面显示,使用loigc:iterator 从ActionForm数据对象集合中遍历数据对象。
使用方式:
只需要两个步骤便可实现,可以反复应用在需要多页查询的各个模块中。
(一)建立ProductListAction。
public class ProductListAction extends ModelListAction
{
private final static ServiceServerFactory sf = ServiceServerFactory.
getInstance();
public PageIterator getPageIterator(HttpServletRequest request, int
start,
int count) {
ProductManagerLocal productManager = (ProductManagerLocal) sf.getService(
FrameworkServices.ProductEJB, request);
String catId = request.getParameter("catId");
return productManager.getProducts(catId, start, count);
}
public Model findModelByKey(HttpServletRequest
request, Object key) {
ProductManagerLocal productManager = (ProductManagerLocal) sf.getService(
FrameworkServices.ProductEJB, request);
return productManager.getProductByIdJDBC((String)key);
}
}
|
(二)Jsp页面实现。 在Jsp页面加入多页显示标签语法即可 ,也可扩展为专门分页开源产品:
<MultiPages:pager actionFormName="listForm" pageUrl="/msgListAction.do?userId=XXC" count="20">
<MultiPages:prev>[ 前页 ]</MultiPages:prev>
<MultiPages:index />
<MultiPages:next>[ 后页 ]</MultiPages:next>
</MultiPages:pager>
<logic:iterate id="product" name="listForm" property="list" >
<TR >
<td bgcolor="#ffffff" width="90%"><b><bean:write
name="product"
property="name"/></b>
<br><bean:write name="product" property="description"/>
</td>
<td bgcolor="#ffffff" align="center">
<input type="radio" name="productId" value="<bean:write
name="product" property="productId" />">
</td>
</TR>
</logic:iterate>
|
|