java web 分頁查詢

ssh2分頁查詢初試,放着記錄學習一下。

entity:student.java:

[html] view plaincopyprint?

package com.zte.entity;  

  

/**  

 * 數據持久化,跟數據庫的的相應的表的字段是對應的。  

 *   

 *   

 */  

public class Student  

{  

  

    private Integer id;  

  

    private String name;  

  

    private Integer age;  

  

    private Integer score;  

  

    private String email;  

  

    private String phone;  

  

    public String getEmail()  

    {  

        return email;  

    }  

  

    public void setEmail(String email)  

    {  

        this.email = email;  

    }  

  

    public String getPhone()  

    {  

        return phone;  

    }  

  

    public void setPhone(String phone)  

    {  

        this.phone = phone;  

    }  

  

    public Integer getId()  

    {  

        return id;  

    }  

  

    public void setId(Integer id)  

    {  

        this.id = id;  

    }  

  

    public String getName()  

    {  

        return name;  

    }  

  

    public void setName(String name)  

    {  

        this.name = name;  

    }  

  

    public Integer getAge()  

    {  

        return age;  

    }  

  

    public void setAge(Integer age)  

    {  

        this.age = age;  

    }  

  

    public Integer getScore()  

    {  

        return score;  

    }  

  

    public void setScore(Integer score)  

    {  

        this.score = score;  

    }  

  

}  

Student.hbm.xml:

[html] view plaincopyprint?

<?xml version="1.0" encoding="UTF-8"?>  

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >  

<hibernate-mapping package="com.zte.entity">  

    <class name="Student" table="student">  

        <id name="id" column="id" type="java.lang.Integer">  

            <generator class="identity">  

            </generator>  

        </id>  

        <property name="name" column="name" type="java.lang.String"></property>  

        <property name="age" column="age" type="java.lang.Integer"></property>  

        <property name="score" column="score" type="java.lang.Integer"></property>  

        <property name="email" column="email" type="java.lang.String"></property>  

        <property name="phone" column="phone" type="java.lang.String"></property>  

    </class>  

</hibernate-mapping>  


dao層:StudentDao.java

[html] view plaincopyprint?

public interface StudentDao<T>  

{  

    public QueryResult<T> getScrollData(int firstindex, int maxresult); // 獲得分頁記錄  

}  


StudentDaoImpl.java:

[html] view plaincopyprint?

public class StudentImpl<T> implements StudentDao  

{  

  

    private SessionFactory sessionFactory;// 通過spring注入數據持久化工廠(相當於spring幫你設置好了  

                                            // 對象,直接通過getter/setter的方式獲取)  

  

    public SessionFactory getSessionFactory()  

    {  

        return sessionFactory;  

    }  

  

    public void setSessionFactory(SessionFactory sessionFactory)  

    {  

        this.sessionFactory = sessionFactory;  

    }  

      @Override  

    public QueryResult getScrollData(int firstindex, int maxresult)  

    {  

        QueryResult retuslt = new QueryResult<T>();  

        Query query =  

                sessionFactory.getCurrentSession().createQuery("from Student");  

        System.out.println("query---size---before>>>" + query.list().size());  

        retuslt.setTotalrecord(query.list().size());  

        query.setFirstResult(firstindex).setMaxResults(maxresult);  

        System.out.println("query---size---after>>>" + query.list().size());  

        retuslt.setResultlist(query.list());  

        return retuslt;  

    }  


services層:

StudentService.java:

[html] view plaincopyprint?

public interface StudentService<T>  

{  

    public QueryResult<T> getScrollData(int firstindex, int maxresult);  

}  

StudentServiceImpl.java:

[html] view plaincopyprint?

public class StudentServiceImpl implements StudentService  

{  

  

    private StudentDao studentDao;// 通過spring的bean依賴注入對象  

    public StudentDao getStudentDao()  

    {  

        return studentDao;  

    }  

  

    public void setStudentDao(StudentDao studentDao)  

    {  

        this.studentDao = studentDao;  

    }  

    @Override  

    public QueryResult getScrollData(int firstindex, int maxresult)  

    {  

        return studentDao.getScrollData(firstindex, maxresult);  

    }  


Action:

BaseAction.java:

[html] view plaincopyprint?

public class BaseAction extends ActionSupport implements ServletRequestAware,  

        ServletResponseAware  

{  

  

    public Integer page; // 當前頁信息  

  

    public String query; // 是否爲條件查詢  

  

    HttpServletRequest request;  

  

    HttpServletResponse response;  

  

    public Integer getPage()  

    {// 獲得當前頁信息  

        return page = (page == null || page < 1) ? 1 : page;  

    }  

  

    public void setPage(Integer page)  

    {// 設置當前頁信息  

        this.page = page;  

    }  

  

    public String getQuery()  

    {// 獲得query信息  

        return query;  

    }  

  

    public void setQuery(String query)  

    {// 設置query信息  

        this.query = query;  

    }  

  

    @Override  

    public void setServletResponse(HttpServletResponse arg0)  

    {  

        this.response = arg0;  

  

    }  

  

    @Override  

    public void setServletRequest(HttpServletRequest arg0)  

    {  

        this.request = arg0;  

  

    }  


QueryAction.java

[html] view plaincopyprint?

public class QueryAction extends BaseAction   

{  

  

    public StudentService studentService;  

  

    public StudentService getStudentService()  

    {  

        return studentService;  

    }  

  

    public void setStudentService(StudentService studentService)  

    {  

        this.studentService = studentService;  

    }  

  

    public String query()  

    {  

        PageView<Student> pageView = new PageView<Student>(5, getPage());  

        pageView.setQueryResult(studentService.getScrollData(  

                pageView.getFirstResult(), pageView.getMaxresult()));// 查詢所有記錄  

        request.setAttribute("pageView", pageView);// 保存到request範圍  

        return this.SUCCESS;  

    }  

}  


Util,分頁工具類:

[html] view plaincopyprint?

public class PageIndex {  

    private long startindex;  

    private long endindex;  

      

    public PageIndex(long startindex, long endindex) {  

        this.startindex = startindex;  

        this.endindex = endindex;  

    }  

    public long getStartindex() {  

        return startindex;  

    }  

    public void setStartindex(long startindex) {  

        this.startindex = startindex;  

    }  

    public long getEndindex() {  

        return endindex;  

    }  

    public void setEndindex(long endindex) {  

        this.endindex = endindex;  

    }  

       

    public static PageIndex getPageIndex(long viewpagecount, int currentPage, long totalpage){  

            long startpage = currentPage-(viewpagecount%2==0? viewpagecount/2-1 : viewpagecount/2);  

            long endpage = currentPage+viewpagecount/2;  

            if(startpage<1){  

                startpage = 1;  

                if(totalpage>=viewpagecount) endpage = viewpagecount;  

                else endpage = totalpage;  

            }  

            if(endpage>totalpage){  

                endpage = totalpage;  

                if((endpage-viewpagecount)>0) startpage = endpage-viewpagecount+1;  

                else startpage = 1;  

            }  

            return new PageIndex(startpage, endpage);         

    }  

}  


PageView.java:

[html] view plaincopyprint?

public class PageView<T> {  

    /** 分頁數據 **/  

    private List<T> records;  

    /** 頁碼開始索引和結束索引 **/  

    private PageIndex pageindex;  

    /** 總頁數 **/  

    private long totalpage = 1;  

    /** 每頁顯示記錄數 **/  

    private int maxresult = 12;  

    /** 當前頁 **/  

    private int currentpage = 1;  

    /** 總記錄數 **/  

    private long totalrecord;  

    /** 頁碼數量 **/  

    private int pagecode = 10;  

    /** 要獲取記錄的開始索引 **/  

    public int getFirstResult() {  

        return (this.currentpage-1)*this.maxresult;  

    }  

    public int getPagecode() {  

        return pagecode;  

    }  

  

    public void setPagecode(int pagecode) {  

        this.pagecode = pagecode;  

    }  

  

    public PageView(int maxresult, int currentpage) {  

        this.maxresult = maxresult;  

        this.currentpage = currentpage;  

    }  

      

    public void setQueryResult(QueryResult<T> qr){  

        setTotalrecord(qr.getTotalrecord());  

        setRecords(qr.getResultlist());  

    }  

      

    public long getTotalrecord() {  

        return totalrecord;  

    }  

    public void setTotalrecord(long totalrecord) {  

        this.totalrecord = totalrecord;  

        setTotalpage(this.totalrecord%this.maxresult==0? this.totalrecord/this.maxresult : this.totalrecord/this.maxresult+1);  

    }  

    public List<T> getRecords() {  

        return records;  

    }  

    public void setRecords(List<T> records) {  

        this.records = records;  

    }  

    public PageIndex getPageindex() {  

        return pageindex;  

    }  

    public long getTotalpage() {  

        return totalpage;  

    }  

    public void setTotalpage(long totalpage) {  

        this.totalpage = totalpage;  

        this.pageindex = PageIndex.getPageIndex(pagecode, currentpage, totalpage);  

    }  

    public int getMaxresult() {  

        return maxresult;  

    }  

    public int getCurrentpage() {  

        return currentpage;  

    }  


QueryResult.java,數據集

[html] view plaincopyprint?

/**  

 * 分頁實體類封裝  

 *  

 */  

public class QueryResult<T> {  

    /** 獲得結果集 **/  

    private List<T> resultlist;  

    /** 獲得總的記錄數 **/  

    private long totalrecord;  

      

    public List<T> getResultlist() {  

        return resultlist;  

    }  

    public void setResultlist(List<T> resultlist) {  

        this.resultlist = resultlist;  

    }  

    public long getTotalrecord() {  

        return totalrecord;  

    }  

    public void setTotalrecord(long totalrecord) {  

        this.totalrecord = totalrecord;  

    }  

}  


分頁jsp:

[html] view plaincopyprint?

<%@ page language="java" pageEncoding="GB18030"%>  

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  

<font color="blue"> 當前頁:第${pageView.currentpage}頁 |  

    總記錄數:${pageView.totalrecord}條 | 每頁顯示:${pageView.maxresult}條 |  

    總頁數:${pageView.totalpage}頁</font>  

<c:forEach begin="${pageView.pageindex.startindex}"  

    end="${pageView.pageindex.endindex}" var="wp">  

    <c:if test="${pageView.currentpage==wp}">  

        <b><font color="red">第${wp}頁</font></b>  

    </c:if>  

    <c:if test="${pageView.currentpage!=wp}">  

        <a href="javascript:topage('${wp}')" class="a03">第${wp}頁</a>  

    </c:if>  

</c:forEach>  


分頁的頁面:

[html] view plaincopyprint?

<%@ page language="java" contentType="text/html; charset=GB18030"  

    pageEncoding="utf-8"%>  

<%@ taglib prefix="s" uri="/struts-tags"%>  

<html>  

<head>  

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  

<script type="text/javascript">  

    //到指定的分頁頁面  

    function topage(page) {  

        var form = document.forms[0];  

        form.page.value = page;  

        form.submit();  

    }  

</script>  

</head>  

<body>  

    <form action="queryAction" method="post">  

        <s:hidden name="page" />  

        <s:hidden name="id" />  

        <s:hidden name="name" />  

        <s:hidden name="phone" />  

        <s:hidden name="email" />  

        <s:hidden name="age" />  

        <s:hidden name="score" />  

        <table width="800" border="0" cellPadding="0" cellSpacing="1"  

            bgcolor="#6386d6">  

            <!-- 列表標題欄 -->  

            <tr bgcolor="#EFF3F7" class="TableBody1">  

                <td width="10%" height="37" align="center"><b>客戶編號</b></td>  

                <td width="10%" height="37" align="center"><B>客戶名稱</B></td>  

                <td width="18%" height="37" align="center"><b>聯繫電話</b></td>  

                <td width="18%" height="37" align="center"><b>聯繫地址</b></td>  

                <td width="18%" height="37" align="center"><b>聯繫人</b></td>  

                <td width="18%" height="37" align="center"><b>其他信息</b></td>  

                <td width="10%" height="37" align="center"><b>操作</b></td>  

            </tr>  

            <!-- 列表數據欄 -->  

            <s:if  

                test="null != #request.pageView.records && !#request.pageView.records.isEmpty() ">  

                <s:iterator value="#request.pageView.records" id="entity">  

                    <tr bgcolor="#EFF3F7" class="TableBody1"  

                        onmouseover="this.bgColor = '#DEE7FF';"  

                        onmouseout="this.bgColor='#EFF3F7';">  

                        <td align="center" vAlign="center">${entity.id }</td>  

                        <td align="center" vAlign="center">${entity.name }</td>  

                        <td align="center" vAlign="center">${entity.phone }</td>  

                        <td align="center" vAlign="center">${entity.email }</td>  

                        <td align="center" vAlign="center">${entity.age }</td>  

                        <td align="center" vAlign="center">${entity.score }</td>  

                        <td align="center" vAlign="center"><a href="#"  

                            onclick="del('customermanage_del.do?customerNO=${entity.id}');">刪除</a>  

                            <a href="#"  

                            onclick="openWin('customermanage_updateUI.do?customerNO=${entity.id}','addperson',600,200);">修改</a>  

                        </td>  

                    </tr>  

                </s:iterator>  

            </s:if>  

            <!-- 在列表數據爲空的時候,要顯示的提示信息 -->  

            <s:else>  

                <tr>  

                    <td colspan="7" align="center" bgcolor="#EFF3F7" class="TableBody1"  

                        onmouseover="this.bgColor = '#DEE7FF';"  

                        onmouseout="this.bgColor='#EFF3F7';">沒有找到相應的記錄</td>  

                </tr>  

            </s:else>  

        </table>  

        <TABLE width="778" border=0 align=left cellPadding=0 cellSpacing=0  

            borderColor=#ffffff style="FONT-SIZE: 10pt">  

            <TBODY>  

                <TR>  

                    <TD height=28 align=right vAlign=center noWrap  

                        background="images/list_middle.jpg">   <!-- 可以在這裏插入分頁導航條 -->  

                        <%@ include file="fenye.jsp"%>  

                    </TD>  

                </TR>  

            </TBODY>  

        </TABLE>  

    </form>  

</body>  

</html> 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章