如果HQL写在POJO.hbm.xml中的话public List getTableList(int page, int pagesize, String queryname) {
Session session = HibernateSessionFactory.getSession();
Query query = session.getNamedQuery(queryname);
query.setFirstResult((page-1) * pagesize);
query.setMaxResults(pagesize);
List list = query.list();
HibernateSessionFactory.closeSession();
return list;
}如果在代码中写HQL的话
public List findTableList(int page, int pagesize, String hql) {
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery(hql);
query.setFirstResult((page-1) * pagesize);
query.setMaxResults(pagesize);
List list = query.list();
HibernateSessionFactory.closeSession();
return list;
}

解决方案 »

  1.   

    我是不太明白jsp那里的处理,具体的struts标签,请各位能把那里讲一下么
      

  2.   

    下面是一种分页方法:(假定你已经把要显示的信息列表传递到了jsp页面)1.工程中引入:jstl.jar ;standard.jar2.列表jsp内:
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
    ...
    ...
    <c:set var="listSize" value="${fn:length(adminListForm.adminList)}"></c:set>
    <c:set var="url" value="../adminList.do"></c:set>
    <%@ include file="../page/pageHead.jsp"%>
    ...
    ...
    <c:forEach var="admin" items="${adminListForm.adminList}"
    begin="${pageBegin}" end="${pageEnd}">
    <tr>
    <td></td>
             </tr>
    </c:forEach>
    ...
    ...
    <%@ include file="../page/pageContent.jsp"%>
    3.增加以下两个文件
    pageHead.jsp
      

  3.   

    <%@ page language="java" pageEncoding="GBK"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
    <html>
    <body>
    <table width="95%" border="0" cellspacing="0" cellpadding="0"
    align="center">
    <tr>
    <td height="3px"></td>
    </tr>
    <tr>
    <td align="right">
    <c:set var="pageSize" value="${param.pageSize}"></c:set>
    <c:if test="${pageSize eq null}">
    <c:set var="pageSize" value="20"></c:set>
    </c:if> <c:set var="pages" value="${listSize / pageSize}"></c:set>
    <c:set var="index" value="-1"></c:set>
    <c:set var="begin" value="1"></c:set> <c:set var="pageBegin" value="${param.pageBegin}"></c:set>
    <c:set var="pageEnd" value="${pageBegin + pageSize - 1}"></c:set>
    <c:set var="pageCurrent"
    value="${param.pageCurrent == null ? 1 : param.pageCurrent}"></c:set> <c:if test="${(listSize mod pageSize) gt 0}">
    <c:set var="pages" value="${pages + 1}"></c:set>
    </c:if>
    <c:set var="index" value="${fn:indexOf(pages,'.')}"></c:set>
    <c:set var="pages" value="${fn:substring(pages,0,index)}"></c:set>
    </td>
    </tr>
    </table>
    </body>
    </html>
      

  4.   

    pageContent.jsp<%@ page language="java" pageEncoding="GBK"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"
    prefix="bean"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
    <html>
    <script type="text/javascript">
    function doChange(para,url){
    //alert(para.value)
    var targetUrl = url + '?pageBegin='+((para.value-1) * '${pageSize}')+ '&pageCurrent='+para.value + '&pageSize=${pageSize}';
    targetUrl = targetUrl.replace('../','/web/');
    window.location = targetUrl;
    }
    function changeCountPerPage(para,url){
    //alert(para.value)
    var targetUrl = url + '?pageSize=' + para.value + '&pageCurrent=1';
    targetUrl = targetUrl.replace('../','/web/');
    window.location = targetUrl;
    }
    </script>
    <body>
    <table width="95%" border="0" cellspacing="0" cellpadding="0"
    align="center">
    <tr>
    <td height="5px"></td>
    </tr>
    <tr>
    <td align="right">
    <c:if test="${(pageBegin - pageSize) ge 0}">
    <a
    href='<c:url value="${url}">
    <c:param name="pageBegin" value="0" />
    <c:param name="pageCurrent" value="1" />
    <c:param name="pageSize" value="${pageSize}" />
    </c:url>'>
    <b><bean:message key="pages.first"/></b></a>
    </c:if>
    <c:if test="${(pageBegin - pageSize) lt 0}">
    <bean:message key="pages.first"/>
    </c:if>
    <c:if test="${(pageBegin - pageSize) ge 0}">
    <a
    href='<c:url value="${url}">
    <c:param name="pageBegin" value="${pageBegin - pageSize}" />
    <c:param name="pageCurrent" value="${pageCurrent - 1}" />
    <c:param name="pageSize" value="${pageSize}" />
    </c:url>'>
    <b><bean:message key="pages.prev"/></b></a>
    </c:if>
    <c:if test="${(pageBegin - pageSize) lt 0}">
    <bean:message key="pages.prev"/>
    </c:if>
    <c:if
    test="${(listSize gt pageSize) and (pageEnd lt listSize - 1)}">
    <a
    href='<c:url value="${url}">
    <c:param name="pageBegin" value="${pageBegin + pageSize}" />
    <c:param name="pageCurrent" value="${pageCurrent + 1}" />
    <c:param name="pageSize" value="${pageSize}" />
    </c:url>'>
    <b><bean:message key="pages.next" /></b></a>
    </c:if>
    <c:if
    test="${!((listSize gt pageSize) and (pageEnd lt listSize - 1))}">
    <bean:message key="pages.next" />
    </c:if>
    <c:if
    test="${(listSize gt pageSize) and (pageEnd lt listSize - 1)}">
    <a
    href='<c:url value="${url}">
    <c:param name="pageBegin" value="${( pages - 1 )* pageSize}" />
    <c:param name="pageCurrent" value="${pages}" />
    <c:param name="pageSize" value="${pageSize}" />
    </c:url>'>
    <b><bean:message key="pages.last" /></b></a>
    </c:if>
    <c:if
    test="${!((listSize gt pageSize) and (pageEnd lt listSize - 1))}">
    <bean:message key="pages.last" />
    </c:if>
    <c:out value="  "></c:out>
    <select onchange='javascript:doChange(this,"${url}")'>
    <c:forEach begin="${begin}" end="${pages}" var="cp">
    <c:if test="${pageCurrent eq cp}">
    <option value="${cp}" selected="selected">
    <c:out value="${cp}"></c:out>
    </option>
    </c:if>
    <c:if test="${!(pageCurrent eq cp)}">
    <option value="${cp}">
    <c:out value="${cp}"></c:out>
    </option>
    </c:if>
    </c:forEach>
    </select>
    <c:out value="${'/'}"></c:out>
    <c:out value="${pages} "></c:out>
    <bean:message key="pages.page" />
    <c:out value=" "></c:out>
    <select onchange='javascript:changeCountPerPage(this,"${url}")'>
    <c:forEach begin="20" end="100" var="pps" step="20">
    <c:if test="${pageSize eq pps}">
    <option value="${pps}" selected="selected">
    <c:out value="${pps}"></c:out>
    </option>
    </c:if>
    <c:if test="${!(pageSize eq pps)}">
    <option value="${pps}">
    <c:out value="${pps}"></c:out>
    </option>
    </c:if>
    </c:forEach>
    </select>
    <bean:message key="pages.total" />
    <c:out value=" ${listSize} "></c:out>
    <bean:message key="pages.item" />
    </td>
    </tr>
    </table>
    </body>
    </html>