使用struts2 hibernate spring整合实现新闻信息管理系统案例-实现新闻信息分页显示功能
来源:互联网 发布:隔壁老王出处 知乎 编辑:程序博客网 时间:2024/05/20 11:25
实现新闻信息分页显示功能
项目结构图
使用到jar包
struts-2.5.10 、 hibernate-release-5.2.2.Final 、spring-framework-4.3.8.RELEASE-dist
如何实现三个框架的整合我会在另外一个文章上面写,这篇文章主要是写一个分页显示新闻这个功能怎么实现的。那么就接下来走进正题吧。
首先,我们需要根据页数去显示信息,那么我就在CategoryAction中写一个需要根据页数取数据的方法。
下面所有代码都在原有的代码的基础上添加的
CategoryAction.java
记得在struts.xml中配置action
private int currPage;//需要提供的页数public void setCurrPage(int currPage) { this.currPage = currPage;}public String findallbypage(){ //思路1.必须在先在categoryService中调用findbyPage(currPage)才能获取数据 /*思路2.那么我们应该拿些什么数据呢? 每一页应该显示些什么? 1 当前页数 2 每页最多显示的纪录 3 总的纪录数 4 总的页数 5 总的页数 */ //思路3.得到数据怎么存放,那么就要新建一个PageBean 封装数据了。 //思路5.在categoryService的接口中添加这个方法在categoryService实现类中实现这个方法把数据进行封装。 PageBean<Category> pageBean= categoryService.findbyPage(currPage); //将pageBean存放在值栈中 ActionContext.getContext().getValueStack().push(pageBean); return "page"; //返回一个字符串对应result。}
PageBean.java
import java.util.List;/* *类的说明:分页封装类 * */public class PageBean<T> { private int currPage;//当前页数 private int pageSize;//每页最多显示的纪录 private int totalCount;//总的纪录数 private int totalPage;//总的页数 //思路4.因为需要分页显示不同对象使用到泛型 private List<T> list;//每页显示的数据,T的值是所需数据的对象 /* 此处省略各个属性的get() set()方法必须写*/
CategoryService.java
public interface CategoryService {/*....*/public PageBean<Category> findbyPage(int currPage);}
CategoryServiceImpl .java //实现类
public class CategoryServiceImpl implements CategoryService {/*....*///分页查询类别的方法public PageBean<Category> findbyPage(int currPage) { PageBean<Category> pageBean =new PageBean<Category>(); //数据封装 //封装当前的页数CurrPage pageBean.setCurrPage(currPage); //封装每页最多显示的纪录数 设置一个Pagesize的值 int pageSize = 2; pageBean.setPageSize(pageSize); //封装总的记录数TotalCount int totalCount =categoryDao.findCount();//findCount()方法在DAO接口上新建 pageBean.setTotalCount(totalCount); //封装总的页数totalPage double tc=totalCount; Double totalPage=Math.ceil(tc/pageSize); pageBean.setTotalPage(totalPage.intValue()); //封装每页显示的数据list int begin=(currPage-1)*pageSize; //在DAO接口上新建finbypage(begin,pageSize)@begin:从第几页开始 List<Category> list=categoryDao.finbypage(begin,pageSize); pageBean.setList(list); return pageBean; }
CategoryDao .java//Dao接口
public interface CategoryDao {/*....*/ public List<Category> finbypage(int begin, int pageSize); public int findCount();}
CategoryDaoImpl .java /DAO实现类
public class CategoryDaoImpl extends HibernateDaoSupport implements CategoryDao{ /* .. */ /* * 分页查询部门 * */ public List<Category> finbypage(int begin, int pageSize) { DetachedCriteria criteria =DetachedCriteria.forClass(Category.class); //重点是调用findByCriteria(?,?,?);这个方法取得数据。 List<Category> list=(List<Category>) this.getHibernateTemplate().findByCriteria(criteria, begin, pageSize); return list; } public int findCount() { String hql="select count(*) from Category"; List<Long> list=(List<Long>) this.getHibernateTemplate().find(hql); if(list.size()>0) { return list.get(0).intValue(); } return 0; }
JSP页面显示代码:直接调用的是PageBean封装类中的属性。currPage pageSize totalCount totalPage list
<table border="1"> <s:iterator value="list" var="c"> <tr> <td><s:property value ="#c.categoryName"/> </td> </tr> </s:iterator> </table> <table> <tr> <td> <span>第<s:property value="currPage"/>/<s:property value="totalPage"/>页</span> <span>总的记录数:<s:property value="totalCount"/> 每页显示:<s:property value="pageSize"/></span> </td> </tr> <tr> <td> <span> <s:if test="currPage!=1"> <a href="/Newproject/findallbypageAction.action?currPage=1">[首页]</a> <a href="/Newproject/findallbypageAction.action?currPage=<s:property value="currPage-1"/>">[上一页]</a> </s:if> <s:if test="currPage!=totalPage"> <a href="/Newproject/findallbypageAction.action?currPage=<s:property value="currPage+1"/>">[下一页]</a> <a href="/Newproject/findallbypageAction.action?currPage=<s:property value="totalPage"/>">[尾页]</a> </s:if> </span> </td> </tr> </table>
项目运行的结果
总结一下
初学者来说认真的了解一下上面PageBean封装的想法是非常重要的。而且非常有用,认真思考一下如果需要取多个数据放在同一个action中那么我们是不是可以使用Bean类去封装数据呢。
分页显示的这个PageBean不只可以用在查询新闻类型上,而且还可以使用在新闻查询数据的上面,代码量因为一个泛型就可以不用再写另外的Bean类去显示相似功能。
阅读全文
0 0
- 使用struts2 hibernate spring整合实现新闻信息管理系统案例-实现新闻信息分页显示功能
- 利用层实现具体新闻分页显示
- 实现案例新闻客户端
- 新闻文章信息采集功能的实现
- 使用hibernate和struts2实现分页功能
- 使用hibernate和struts2实现分页功能
- 使用hibernate和struts2实现分页功能
- 使用hibernate和struts2实现分页功能
- 使用hibernate和struts2实现分页功能
- 使用hibernate和struts2实现分页功能
- struts2+spring+hibernate整合写的项目怎么实现分页功能
- 新闻案例网络版(listview实现)
- 利用Struts2和Hibernate实现页面分页显示的功能
- struts2+hibernate+spring分页实现
- struts2+hibernate+spring分页实现
- struts2+spring+hibernate 实现分页
- struts2+spring+hibernate实现ARDU功能(ssh整合)
- ASP.NET实现新闻页面的分页功能
- 数据结构预习
- java字符串的替换replace、replaceAll、replaceFirst的区别详解
- 主流网站关于CSS样式的初始化代码整理
- stm32—fmsc详解
- C语言简单用链表实现学生管理系统
- 使用struts2 hibernate spring整合实现新闻信息管理系统案例-实现新闻信息分页显示功能
- 51nod 1810 连续区间(分治)
- TI ZigBee协议栈中终端设备的状态切换详解
- AppDelegate
- 发送短信
- C# 中的委托和事件
- mysql 递归查询
- Unity CheckBox用法
- 对输入文件描述符重定向函数dup/dup2