struts2 + hibernate + spring 使用pager-taglib 分页

第一步:

pager-taglib 分页需要从其官方下载相应的插件: http://jsptags.com 解压出来将pager-taglib.jar包拷贝到lib目录下,

第二部:

新建StudentImpl类,用来获取要分页的数据和数据库中数据总的条目数,并继承Spring对hibernate支持来获得session对象

public class IStudentDAOImpl extends HibernateDaoSupport{

public int getNumber() {

String hql = "select count(*) from Student";

Session session = this.getSession();

Query query = session.createQuery(hql);
int total = ((Number)query.uniqueResult()).intValue();

return total;
}

@SuppressWarnings("unchecked")
public List<Student> finStudents(int offset, int pageSize) {
String hql = "from Student";

Session session = this.getSession();
List<Student> list = session.createCriteria(Student.class).setFirstResult(offset).setMaxResults(pageSize).list();

return list;
}

public void saveStudent(Student student) {

this.getHibernateTemplate().save(student);

}

}

第三部: 书写业务层类: 并继承IStudentDAOImpl 实现其方法

public class IStudentServiceImpl implements IStudentService {

public IStudentDAOImpl studentDAO;

public List<Student> getStudents(int offset, int pageSize) {

return studentDAO.finStudents(offset, pageSize);
}

public int getNumber() {

return studentDAO.getNumber();
}

public void setIStudentDAOImpl(IStudentDAOImpl studentDAO){

this.studentDAO = studentDAO;

}

第四步:书写Action

public class StudentAction extends ActionSupport {

private IStudentServiceImpl service;

//商品总的记录数
private int total;
//每页要显示的数据条目
private List<Student> pageStudents;
//从第几条数据开始显示
private int offset;
//每页显示的条目
private int pageSize = 2;

public String list() throws Exception{

total = service.getNumber();
HttpServletRequest request = ServletActionContext.getRequest();


if(request.getParameter("pager.offset") == null)
{
offset = 0;
}

else
{
offset = Integer.parseInt(request.getParameter("pager.offset"));
}

students = service.getStudents(offset, pageSize);
ActionContext.getContext().put("students", students);
return "list";
}

}

第五部:写list.jsp页面

<!--

头部引入

<%@ taglib uri="/struts-tags" prefix="s" %>
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

-->

<h2 align="center"><font color="red">学生信息预览表</font></h2>
<table border="1" align="center">
<tr>
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
<td>学校</td>
<td>入学日期</td>
</tr>
<s:iterator value="#students" id="student">
<tr>
<td><s:property value="#student.id"/></td>
<td><s:property value="#student.name"/></td>
<td><s:property value="#student.age"/></td>
<td><s:property value="#student.sex"/></td>
<td><s:property value="#student.school"/></td>
<td><s:property value="#student.date"/></td>
</tr>
</s:iterator>
</table>

<pg:pager items="${total}" url="student_list.action" export="currentPageNumber=pageNumber" maxPageItems="2" >
<pg:first><a href="${pageUrl}"><nobr>[首页]</nobr></a></pg:first>
<pg:prev><a href="${pageUrl}">前一页</a></pg:prev>
<pg:pages>
<c:choose>
<c:when test="${currentPageNumber eq pageNumber}">
<font color="red">${pageNumber }</font>
</c:when>
<c:otherwise>
<a href="${pageUrl}">${pageNumber}</a>
</c:otherwise>
</c:choose>
</pg:pages>
<pg:next><a href="${pageUrl}">下一页</a></pg:next>
<pg:last><a href="${pageUrl}"><nobr>[尾页]</nobr></a></pg:last>
</pg:pager>

Struts.xml配置

<action name="student_list" class="StudentAction" method="list">
<result name="list">/list.jsp</result>
</action>

applicationContext.xml配置

<!--把sessionFactory映射到IStudentDAOImpl类的sessionFactory属性中-->

<bean id="studentDAO" class="org.cxg.dao.impl.IStudentDAOImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<!--把studentDAO映射到IStudentServiceImpl类的studentDAO属性中-->

<bean id="studentService" class="org.cxg.service.impl.IStudentServiceImpl">
<property name="studentDAO" ref="studentDAO"></property>
</bean>

<bean id="StudentAction" class="org.cxg.action.StudentAction" scope="prototype">
<property name="service" ref="studentService"></property>
</bean>

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值