Struts+Hibernate分页代码:从dao到jsp

listMessage.jsp:

<table border="1" align="center" width="600" style="border-collapse:collapse;font-size:10pt" >
  <caption>
    电子留言系统
  </caption>
  <tr>
    <td colspan="2" align="right">
    	<a href="enterPostMessage.do"> 发表新留言</a>
    </td>
  </tr>
  <tr>
    <th width="120">作者</th>
    <th width="480" >留言标题</th>
  </tr>
<logic:present name="messageList" scope="request" >
	<logic:iterate id="message" name="messageList" type="org.afei.vo.MessageBean" scope="request" >
    <tr>
      <td align="center" width="167"><bean:write name="message" property="owerName"/></td>
      <td align="center">
      	<a href='viewMessage.do?messageId=<bean:write name="message" property="id"/>'><bean:write name="message" property="title"/></a>
      </td>
    </tr>
</logic:iterate>
  <tr>
    <td align="right" colspan="2">
		第${requestScope.currentPage}页 
		共${requestScope.pageCount}页 	
		<a href="listMessage.do?pageNo=1">首页</a>	
		<logic:greaterThan name="currentPage" value="1" scope="request">
			<a href="listMessage.do?pageNo=${requestScope.currentPage - 1}">	
				上一页	
			</a>
		</logic:greaterThan>		
		<logic:lessThan name="currentPage" value='${requestScope.pageCount}' scope="request">
			<a href="listMessage.do?pageNo=${requestScope.currentPage + 1}">
			下一页
			</a>
		</logic:lessThan>	
		<a href="listMessage.do?pageNo=${requestScope.pageCount}">尾页</a>
  	</td>
  </tr>
</logic:present>
<logic:notPresent name="messageList" scope="request" >
  <tr>
    <td align="center" colspan="2">暂时没有任何留言</td>
  </tr>
</logic:notPresent>
</table>

ListMessageAction.java

public class ListMessageAction extends BaseAction {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		//获取消息总数
		int messageCount=messManager.getMessageCount();		
		//获取总页数
		int pageCount=messManager.getPageCount(messageCount, MessageManager.MESSAGE_PAGE_SIZE);
		
		int pageNo;
		String pageNoStr=request.getParameter("pageNo");
		if(pageNoStr==null||"".equals(pageNoStr.trim())){			
			pageNo=1;//第一次登陆,显示第一页
		}
		try {
			pageNo=Integer.parseInt(pageNoStr.trim());
		} catch (Exception e) {
			pageNo=1;
		}
		
		// 如果请求页已经超出最大页
		if(pageNo>pageCount){
			pageNo=pageCount;
		}
		
		request.setAttribute("pageCount", pageCount);
		request.setAttribute("currentPage", pageNo);
		request.setAttribute("messageList", messManager.getAllMessageByPage(pageNo));
		return mapping.findForward("success");
	}

}

 

MessageManagerImpl.java

	//获取消息数量
	public int getMessageCount() throws MessageException {
		Session sess=null;
		Transaction tx=null;
		try{
			sess=SessionFactoryBuilder.instance().getSessionFactory().openSession();
			tx=sess.beginTransaction();
			
			int result=(int)messageDao.findCount(sess);
			tx.commit();
			return result;
		}catch(Exception e){
			tx.rollback();
			e.printStackTrace();
			throw new MessageException("获取消息数量出现异常");
		}finally{
			sess.close();
		}
	}

	//根据总记录数和每页记录数获取总页数
	public int getPageCount(int count, int pageSize) throws MessageException {
		
		return (count+pageSize-1)/pageSize;
	}
 

 

MessageDaoHibernate.java

	public List findAllByPage(Session sess, int pageNo, int pageSize) {
		int offset=(pageNo-1)*pageSize;//(当前页码-1)*每页行数=开始查询的行号
		return sess.createQuery("from Message as m order by m.id desc")
				.setFirstResult(offset)//设置开始查询的第一行,默认从0开始
				.setMaxResults(pageSize)//设置需要查询的最大行数
				.list();
	}

	public long findCount(Session sess) {
		Object obj=sess.createQuery("select count(m.id) from Message as m")
		.uniqueResult();//返回一的实例
		return (Long)obj;	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值