如何用SSH实现分页...

 我来答
赵脸乎
2012-01-18 · TA获得超过570个赞
知道小有建树答主
回答量:425
采纳率:0%
帮助的人:299万
展开全部
用标签加hibernate就可以了,hibernate实现分页检索,就是findbypage,,页面就靠标签了,下面是标签类
public class PageTag extends BodyTagSupport {

/**
* serialVersionUID.
*/
private static final long serialVersionUID = -4686685719382532353L;

/**
* 控件ID.
*/
private String styleId = null;

/**
* 每页的页数.
*/
private int pageSize = 20;

/**
* 显示的最大滚动页数.
*/
private int showPageCnt = 5;

/**
* request记录的PageView名.
*/
private String name = "";

/*
* 样式.
*/
private String styleClass = "";

/**
* 宽度.
*/
private String width = "100%";

/**
* @return the styleClass
*/
public final String getStyleClass() {
return this.styleClass;
}

/**
* @return the width
*/
public final String getWidth() {
return this.width;
}

/**
* @param aStyleClass
* the styleClass to set
*/
public final void setStyleClass(String aStyleClass) {
this.styleClass = aStyleClass;
}

/**
* @param aWidth
* the width to set
*/
public final void setWidth(String aWidth) {
this.width = aWidth;
}

/**
* 开始.
*/
public final int doStartTag() throws JspException {

// 变量声明
final JspWriter writer = pageContext.getOut();
ServletRequest request = pageContext.getRequest();
String tagJsp = "";

// 控件生成
tagJsp = makePageViewJsp((PageView) request.getAttribute(name));

try {
// 加入标签内容
writer.println(tagJsp);

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();

// 提示JSP错误
JspException exception = new JspException(
"[MatrixTag getOut().print]:" + e.getMessage());
throw exception;
}

// 正常完了
return SKIP_BODY;
}

/**
* 结束.
*/
public final int doEndTag() {

// 正常完了
return EVAL_PAGE;
}

/**
* 生成控件.
*
* @param src
* @return String
*/
private String makePageViewJsp(PageView src) {

// 变量声明
StringBuffer outStr = new StringBuffer();
int minPage = 1;
int maxPage = 1;

// 样式
outStr.append("<table id='").append(styleId).append(
"' cellspacing='0' width='").append(this.width).append(
"' border='1' class='").append(this.styleClass).append("'>")
.append("\n");
outStr.append("<tr>").append("\n");
outStr.append("<td>").append("\n");

// 首页 上一页
if (src.getPage() > 1) {
outStr
.append(
" <a href=\"#\" onclick=\"peraSubmit('paging','styleId=")
.append(styleId)
.append("&page=1');\">")
.append(PeraContants.APP_BUNDLE.getString("pro.page.first"))
.append("</a>").append("\n");
outStr.append(
" <a href=\"#\" onclick=\"peraSubmit('paging','styleId=")
.append(styleId).append("&page=").append(src.getPage() - 1)
.append("');\">").append(
PeraContants.APP_BUNDLE.getString("pro.page.prev"))
.append("</a>").append("\n");
} else {
outStr.append(" ").append(
PeraContants.APP_BUNDLE.getString("pro.page.first"))
.append("\n");
outStr.append(" ").append(
PeraContants.APP_BUNDLE.getString("pro.page.prev")).append(
"\n");
}

// 页码
if (this.showPageCnt > src.getPageCnt()) {
minPage = 1;
maxPage = src.getPageCnt();
} else {
if (src.getPage() > (this.showPageCnt - 1) / 2) {
minPage = src.getPage() - (this.showPageCnt - 1) / 2;
} else {
minPage = 1;
}
if (src.getPageCnt() > minPage + this.showPageCnt - 1) {
maxPage = minPage + this.showPageCnt - 1;
} else {
maxPage = src.getPageCnt();
minPage = src.getPageCnt() - this.showPageCnt + 1;
}
}
for (int i = minPage; i <= maxPage; i++) {
// 当前页
if (i != src.getPage()) {
outStr
.append(
" <a href=\"#\" onclick=\"peraSubmit('paging','styleId=")
.append(styleId).append("&page=").append(i).append(
"');\">").append(i).append("</a>").append("\n");
} else {
outStr.append("<span class='menu_active'>").append(i).append(
"</span>").append("\n");
}
}

// 下一页 尾页
if (src.getPage() < src.getPageCnt()) {
outStr.append(
" <a href=\"#\" onclick=\"peraSubmit('paging','styleId=")
.append(styleId).append("&page=").append(src.getPage() + 1)
.append("');\">").append(
PeraContants.APP_BUNDLE.getString("pro.page.next"))
.append("</a>").append("\n");
outStr.append(
" <a href=\"#\" onclick=\"peraSubmit('paging','styleId=")
.append(styleId).append("&page=").append(src.getPageCnt())
.append("');\">").append(
PeraContants.APP_BUNDLE.getString("pro.page.end"))
.append("</a>").append("\n");
} else {
outStr.append(" ").append(
PeraContants.APP_BUNDLE.getString("pro.page.next")).append(
"\n");
outStr.append(" ").append(
PeraContants.APP_BUNDLE.getString("pro.page.end")).append(
"\n");
}

// 结束
outStr.append("</td>").append("\n");
outStr.append("</tr>").append("\n");
outStr.append("</table>").append("\n");

// 隐藏
outStr.append("<input type='hidden' id='page_").append(styleId).append(
"' name='page_").append(styleId).append("' value='").append(
src.getPage()).append("'/>").append("\n");

// 返回
return outStr.toString();
}

/**
* @return the name
*/
public final String getName() {
return this.name;
}

/**
* @return the pageSize
*/
public final int getPageSize() {
return this.pageSize;
}

/**
* @return the showPageCnt
*/
public final int getShowPageCnt() {
return this.showPageCnt;
}

/**
* @return the styleId
*/
public final String getStyleId() {
return this.styleId;
}

/**
* @param aName
* the name to set
*/
public final void setName(String aName) {
this.name = aName;
}

/**
* @param aPageSize
* the pageSize to set
*/
public final void setPageSize(int aPageSize) {
this.pageSize = aPageSize;
}

/**
* @param aShowPageCnt
* the showPageCnt to set
*/
public final void setShowPageCnt(int aShowPageCnt) {
this.showPageCnt = aShowPageCnt;
}

/**
* @param aStyleId
* the styleId to set
*/
public final void setStyleId(String aStyleId) {
this.styleId = aStyleId;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天佑笔记
推荐于2017-09-13 · TA获得超过433个赞
知道小有建树答主
回答量:352
采纳率:0%
帮助的人:210万
展开全部
实现分页,Hibernate里有现成的方法,Action类中处理一下page信息,传递给页面,进行参数设置就行。
具体查hibernate里的自带文档。 写的很详细。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
成都利锐科技
2012-01-18 · TA获得超过187个赞
知道答主
回答量:36
采纳率:0%
帮助的人:43.2万
展开全部
Hibernate本身是支持的,使用setMaxResults来设置要查询的记录条数,使用setFirstResult来设置起始查询的位置···

总记录数需要单独查询····
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
味洋扛590
2012-01-18 · TA获得超过1647个赞
知道小有建树答主
回答量:1640
采纳率:100%
帮助的人:814万
展开全部
Query query = session.createQuery("from Ticker");
if(max>0){
query.setFirstResult(first);
query.setMaxResult(max);
}
List list = query.list();
session.close();
return list;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3f95bdd
2012-01-18
知道答主
回答量:43
采纳率:0%
帮助的人:14.3万
展开全部
Hibernate里面有封装好的方法,自己在写一个类控制页数,进行传递
基本上就OK了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式