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; }
分享到:
相关推荐
这些代码片段可以作为参考,帮助理解如何在实际项目中实现Struts和Hibernate的分页功能。 总之,Struts+Hibernate的分页显示是一个典型的Web应用功能,它结合了两者的优势,使得开发者能够高效地处理大量数据的展示...
至于实际的代码实现,"StrutsPageDemo"可能包含了Action类、DAO接口及其实现、实体类、配置文件、JSP页面等。Action类中的方法处理分页逻辑,DAO接口及其实现负责数据库操作,实体类映射数据库表结构,配置文件定义...
通过这个项目,开发者可以学习到如何在Struts和Hibernate的集成环境下实现分页功能,理解MVC架构下各层的职责,以及如何使用Hibernate进行数据库操作。此外,还能了解到如何在前端展示分页信息,提高用户体验。这是...
综上所述,"struts+hibernate分页"涉及到的主要是如何在Struts的控制层和Hibernate的数据层之间协调处理分页请求,以及在DAO层利用Hibernate的特性实现数据库查询的分页。理解并掌握这两个框架的分页机制,对于开发...
通过以上步骤,我们可以构建一个功能完备且易于维护的Struts+Hibernate分页系统。在实际开发中,还可以结合Spring框架进行整合,提高代码的可测试性和解耦性。同时,随着技术的发展,现在的Web应用更多地采用Spring ...
本压缩包中的"高效率spring+struts+hibernate分页算法"文档,旨在提供一种优化的分页解决方案,以改善用户在浏览大量数据时的体验。 首先,让我们深入理解这三个框架的角色: 1. **Spring**:这是一个全面的开源...
### Struts + Hibernate 分页与模糊查询 #### 一、简介 在软件开发过程中,特别是Web应用程序中,分页查询和模糊查询是非常常见的需求。本文将详细介绍如何利用Struts框架结合Hibernate实现这两种功能。 #### 二...
6. **Action类处理请求**:在Struts的Action类中,根据用户的请求参数(如当前页码)调用DAO的分页查询方法,并将结果封装到Page对象中。然后,将Page对象设置为Action的属性,以便在视图层进行渲染。 7. **视图...
总的来说,Struts+Spring+Hibernate 分页涉及到前端交互、后端服务、数据库查询等多个环节,需要综合运用这三个框架的能力。理解并熟练掌握这一过程,对于开发高效、可维护的Web应用具有重要意义。
Struts、Hibernate和Spring是Java开发中的三大框架,它们各自负责不同的职责,组合起来可以构建出高效、松耦合的企业级应用。SSH(Struts、Spring、Hibernate)集成是Java Web开发中的常见模式,用于创建复杂的业务...
在这个“关于Struts+Hibernate分页的例子”中,我们可能看到一个集成这两个框架的Web应用,用于展示如何在Struts中利用Hibernate进行数据的分页显示。分页是Web应用中常见的功能,能够帮助用户更有效地浏览大量数据...
在Web开发中,分页显示是一项常见的需求,尤其是在处理大量数据时,为了提高用户体验和系统...通过合理地设计DAO层和业务层,以及创建专门的分页类,我们可以轻松实现复杂的数据分页,同时保持代码的清晰和可维护性。
在IT行业中,SSH(Spring、Struts和Hibernate)是一个经典的Java Web开发框架组合,用于构建高效、可维护的Web应用程序。SSH框架各自负责不同的职责:Spring作为基础框架提供依赖注入和事务管理;Struts处理MVC...
**Struts、Hibernate和SQL Server 2005 分页小项目详解** 在软件开发中,尤其是Web应用,数据分页是一项重要的功能,它能够帮助用户有效地浏览大量数据,提高用户体验。本项目以"Struts+Hibernate+SQL Server 2005...
将查询结果和分页信息(如当前页、总页数)封装到ActionForm对象中,然后通过Struts1的配置将控制权交给JSP页面。 6. **JSP页面展示** 在JSP页面上,使用JSTL或其他标签库遍历数据列表,并显示分页导航。导航通常...
在Java Web开发中,"Struts+Hibernate 实现分页"是一个常见的需求,尤其是在处理大量数据展示时。这个主题涉及到两个关键的技术栈:Struts作为MVC(模型-视图-控制器)框架,用于处理用户请求和业务逻辑,以及...
在本示例中,"spring+struts+hibernate写的分页代码" 提供了一个使用这三大流行Java框架实现分页功能的实例。下面将详细解释这三个框架以及它们如何协同工作来实现分页。 1. **Spring框架**:Spring 是一个全面的...
Struts、Hibernate和DisplayTag是Java Web开发中的三个重要组件,它们共同构成了一个强大的MVC(Model-View-Controller)架构。在这个实例中,我们将会深入探讨如何将它们整合在一起,实现一个具备分页功能的Web应用...