`
hi_app
  • 浏览: 77837 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

struts+hibernate利用taglib中的标签来进行分页显示

阅读更多
1、action中的写代码

/**
* 查询用户留言。
*/
public String queryMessage() throws Exception {

HttpServletRequest request = ServletActionContext.getRequest();
LeaveMessageDao pdd = new LeaveMessageDao();
int offset=0 ;
try{
//获得表单传过来的数据。
String pager = request.getParameter("pager.offset");
if(pager!=null) offset = Integer.parseInt(pager);

}catch(NumberFormatException e){
e.getMessage();
e.printStackTrace();
}
//将返回来的pageModel对象保存到pm中,这样在页面就是通过request来访问里面的数据。
request.setAttribute("pm", pdd.queryMessage(offset,10));

return SUCCESS;

}

2、业务逻辑dao中的方法

/**
* 得到留言的数据和总数记录数。
* @param offset 起始的记录数
* @param pagesize 每一页显示多少条记录
* @return
* @throws Exception
*/

public PagerModel queryMessage(int offset,int pagesize)throws Exception {
List<LeaveMessage> list = new ArrayList<LeaveMessage>();
//Session se = HibernateSessionFactory.getSession();

//或得所有留言的数据(数据库里面的一张表)
String hql="select a from LeaveMessage as a";
//或得留言的总记录数。
String hqlCount = "select count(id) from LeaveMessage";
PagerModel pm = null;

try {
Session session = HibernateSessionFactory.getSession();
session.beginTransaction();
//得到总的记录数。
int total = ((Long) session.createQuery(hqlCount).uniqueResult())
.intValue();
//在总记录数中取出一页的记录(从offset开始取出pagesize条记录来)放在一个list中。
list = session.createQuery(hql).setFirstResult(offset)
.setMaxResults(pagesize).list();
//将取出来的一页的数据和留言的总记录数放到一个对象中。
pm = new PagerModel();
//记录集数据。
pm.setDatas(list);
//总记录数。
pm.setTotal(total);
session.beginTransaction().commit();
session.flush();
HibernateSessionFactory.closeSession();
} catch (HibernateException e) {
e.getMessage();
e.printStackTrace();
throw(e);
} catch(Exception e ){
e.getMessage();
e.printStackTrace();
throw(e);
}
return pm;
}

3、pageModel类中的实现

package com.sipu.wcme.util;

import java.util.List;

public class PagerModel {
private List datas;
private int total;

public List getDatas() {
return datas;
}
public void setDatas(List datas) {
this.datas = datas;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
}

4、struts中的配置文件


    <package name="newscenter" extends="struts-default" namespace="/newscenter/message">
    <!-- 分页显示用户留言 -->
      
        <action name="message_list" class="com.sipu.wcme.action.newscenter.LeaveMessageAction" method="queryMessage">
   <result>my_cantonfair_msg_list.jsp</result>  
        </action>
                                     
   </package>

5、jsp页面分页显示代码
在页面顶部引入taglib标签:
//利用标签取数据的标签。
<%@ taglib uri="/struts-tags" prefix="s" %>
//分页的标签。
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg" %>
<DIV id=voices>
<UL>

<!-- 利用迭代器将数据库里面的数据取出来显示-->
<!-- 利用request来获取数据库里返回来的数据 -->
<s:iterator value="#request.pm.datas" >
<DIV class=list><SPAN><s:property value="content"/><BR></SPAN>
<BR><SPAN>-------<s:property value="company"/></SPAN>
</DIV>
</s:iterator>
</UL>
</DIV><BR><BR>


<DIV style="TEXT-ALIGN: right; BACKGROUND-COLOR: #cccccc">
            <div class="page" style="TEXT-ALIGN: right; margin-right:100px; BACKGROUND-COLOR: #cccccc">
    <pg:pager url="newscenter/message/message_list.action" items="${pm.total}">
    <!-- url 是执行action的路径。items是总记录数 -->
        <pg:first>
      <a href="<%= pageUrl %>">首页</a>
    </pg:first>

    <pg:prev>
      <a href="<%= pageUrl %>">前页</a>
    </pg:prev>

    <pg:pages>
       <a href="<%= pageUrl %>"><%= pageNumber %></a>
    </pg:pages>

    <pg:next>
      <a href="<%= pageUrl %>">后页</a>
    </pg:next>

    <pg:last>
      <a href="<%= pageUrl %>">尾页</a>
    </pg:last>
</pg:pager>
</div>

<DIV class=clear></DIV></DIV>
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics