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; }