SSH框架分页处理

一、在UserDAO接口中定义两个方法:

public interface UserDAO {
	public List findByPage(final int page, final int pageSize);
	int findTotalPage(int pageSize);
}

再实现接口:

public class UserDAOImpl extends HibernateDaoSupport implements UserDAO{
	@Override
	public List findByPage(final int page, final int pageSize) {
		List users = null;
		final String hql = "from User";
		users = this.getHibernateTemplate().executeFind(new HibernateCallback(){
			@Override
			public Object doInHibernate(org.hibernate.Session session)
					throws HibernateException, SQLException {
				Query query = session.createQuery(hql);
				query.setFirstResult((page - 1) * pageSize);
				query.setMaxResults(pageSize);
				return query.list();
			}
		});
		return users;
	}

	@Override
	public int findTotalPage(int pageSize) {
		String hql = "select count(id) from User";
		List list = this.getHibernateTemplate().find(hql);
		int totalNum = Integer.parseInt(list.get(0).toString());
		if(totalNum % pageSize == 0){
			return totalNum / pageSize;
		}else{
			return totalNum / pageSize + 1;
		}
	}
}

二、在action层中添加代码:

public class UserListAction {
	//传入
	private int page = 3;//首先显示的页数
        setter和getter方法
        ......
	private int pageSize = 4;//每页的记录数
        setter和getter方法
        ......
	//传出:当前页显示的内容,总的页数
	private List<User> users = null;
        setter和getter方法
        ......
	private int totalPage;
        setter和getter方法
        ......
	//属性注入
	private UserDAO userList;
	setter方法
        ......
	public String execute(){
		//具有分页功能的查询
		users = userList.findByPage(page, pageSize);
		totalPage = userList.findTotalPage(pageSize);
		System.out.println("总共有 "+totalPage+" 页");
		return "success";
	}
}

三、在struts.xml文件中的配置

<struts>
    <package name="com" extends="struts-default">
        <action name="show">
            <result>show.jsp</result>
        </action>
        <action name="list" class="com.action.UserListAction">
            <result name="success">/WEB-INF/jsp/welcome.jsp</result> 
            <result name="error">/WEB-INF/jsp/error.jsp</result>           
        </action>
    </package>    
</struts>

四、jsp页面的处理

<!-- 分页处理 -->
	<div id="pages">
		<s:if test="page > 1">
			<a href="javascript:;"
				οnclick="location.href='list.action?page=${page-1 }'">上一页</a>
		</s:if>
		<s:else>
			<a href="javascript:;">上一页</a>
		</s:else>
		
		<s:iterator value="new int[totalPage]" status="i">
			<s:if test="#i.count == page">
				<a href="javascript:;" class="current_page"
					οnclick="location.href='list.action?page=${i.count }'">${i.count}</a>
			</s:if>
			<s:else>
				<a href="javascript:;"
					οnclick="location.href='list.action?page=${i.count }'">${i.count}</a>
			</s:else>
		</s:iterator>
		
		<s:if test="page < totalPage">
			<a href="javascript:;"
				οnclick="location.href='list.action?page=${page+1 }'">下一页</a>
		</s:if>
		<s:else>
			<a href="javascript:;">下一页</a>
		</s:else>
	</div>


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值