love fish大鵬一曰同風(fēng)起,扶搖直上九萬里

          常用鏈接

          統(tǒng)計

          積分與排名

          friends

          link

          最新評論

          Spring+Hibernate+Struts技術(shù)的一個分頁程序(轉(zhuǎn))

          我用的是Spring+Hibernate+Struts框架:

          這是我的DAO的核心代碼
          import org.springframework.orm.hibernate.support.HibernateDaoSupport;
          // 用Spring支持的Hibernate方法,使Hibernate對數(shù)據(jù)庫的操作繼續(xù)瘦身
          public List getOfficeBySearchCriteria(final String hsql,final int pageNo,final int page_size) throws DataAccessException // hsql 是如:"select office1 from Office as office1 order by office1.officename";pageNo 是第幾頁;page_size是每頁記錄數(shù)
          {
          String sql;
          int total_count=0;
          List offices=new ArrayList();
          //offices= getHibernateTemplate().find("from Office office1 where office1.officename like ?", "%"+officeName+"%");
          offices= getHibernateTemplate().find(hsql); //為了得到總記錄數(shù)
          total_count=offices.size();
          crossPageInfo= crossPageBean.getCrossPageInfo(total_count,pageNo,page_size);

          sql=hsql+ " limit " + (pageNo-1)*page_size + "," +page_size;
          offices= getHibernateTemplate().find(sql); //為了得到頁記錄信息 System.out.println("The list offices size: "+offices.size());
          return offices;
          }

          //其中crossPageBean.getCrossPageInfo只是得到頁面的如:總頁數(shù)、供多少頁的信息等一般的翻頁信息;

          我在Action中是這樣調(diào)用的
          public ActionForward execute(
          ActionMapping mapping,
          ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response)
          throws Exception
          {
          CrossPageInfo crossPageInfo=new CrossPageInfo();
          String hsql="select office1 from Office office1 order by office1.officename";
          String pageNo=request.getParameter("pageNo");
          int pageNoi=1;
          if(pageNo==null)
          pageNo="1";
          pageNoi=Integer.parseInt(pageNo);
          int pageSize=5;
          //List offices=getOfficeService().getAllOffice();
          List offices=getOfficeService().getOfficeBySearchCriteria(hsql,pageNoi,pageSize);
          crossPageInfo=getOfficeService().getCrossPageInfo();
          System.out.println("The CorssPgaeInfo :"+crossPageInfo.getPageNo());
          System.out.println(crossPageInfo.getPageSize());

          request.setAttribute("offices",offices);
          request.setAttribute("pageInfo",crossPageInfo);
          return mapping.findForward("success");
          //throw new UnsupportedOperationException("Generated method 'execute(...)' not implemented.");
          }

          //其中g(shù)etOfficeService()只是提供接口服務(wù)的方法。


          我的表現(xiàn)頁面是這樣的

          <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
          <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
          <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
          <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
          <%@ page import="com.uplus.util.CrossPageInfo"%>

          <html>
          <head>
          <title>
          mySearchCList
          </title>

          </head>
          <body bgcolor="#ffffff">
          <form name="form1" action="officesearch.do" method="post">
          <table >
          <tr>
          <td>OfficeName:<input name="officeName" type="text"></td><td><input type="submit" name="sb" value="Search"></td>
          </tr>
          </table>
          </form>
          <br><a href="/jsp/office/officeadd.jsp">Add</a>

          <table bgcolor="#DBE9F1" align="center" class="InputFrameMain" style="MARGIN: 0px" cellSpacing="1" cellPadding="0" BGALIGN="CENTER" BGVALIGn="middle" width="100%" VALIGN="middle" >
          <tr><td align="center">OfficeName</td><td align="center">OfficePhone</td></tr>
          <logic:iterate id="office" name="offices" >
          <tr bgcolor="#ffffff">
          <td align="center"><a href="officesee.do?id=<bean:write name='office' property='id'/>" target="_blank"><bean:write name="office" property="officename"/></a></td>
          <td align="center"><bean:write name="office" property="officephone"/></td>
          <td align="center"><a href="officeedit.do?id=<bean:write name='office' property='id'/>" >Update </a>
          <td align="center"><a href="officedel.do?id=<bean:write name='office' property='id'/>" onclick="return confirm('Would You Detele It? ')" >Delete </a>
          </tr>
          </logic:iterate>
          </table>
          <%CrossPageInfo cpInfo=(CrossPageInfo)request.getAttribute("pageInfo");%>

          <table width="100%" align="center" class="InputFrameMain" style="MARGIN: 0px" cellPadding="0" cellSpacing="0">
          <tr ><form action="officelist.do" method="post" onsubmit='return checkform2(this)'>
          <td width=70%>Total <font color="blue"><%=cpInfo.getTotalRow()%></font>&items found,Total&<font color="blue"><%=cpInfo.getTotalPage()%></font> Pages,Current No <font color="blue"><%=cpInfo.getPageNo()%> </font>Page.
          Go to <input name="pageNo" type="text" size="5" class="input">Page
          <input name="sb2" type="submit" class="button" value="Go">
          </td></form>
          <td width=30% align='left'>
          <%if(cpInfo.getPageNo()>1){%>
          &<a href="officelist.do?pageNo=1">
          <%}%>First</a>
          <%if(cpInfo.getPageNo()>1){ %>
          &<a href="officelist.do?pageNo=<%=cpInfo.getPageNo()-1%>">
          <%}%>Previous</a>
          <%if(cpInfo.getPageNo()<cpInfo.getTotalPage()){ %>
          &<a href="officelist.do?pageNo=<%=cpInfo.getPageNo()+1%>">
          <%}%>Next</a>
          <%if(cpInfo.getTotalPage()>cpInfo.getPageNo()){%>
          &<a href="officelist.do?pageNo=<%=cpInfo.getTotalPage()%>">
          <%}%>Last</a></td>
          </tr>

          </table>
          </body>
          </html>


          大家可以看一下我的處理過程,其中在DAO里為了得到總計錄數(shù)執(zhí)行了一次次數(shù)據(jù)表查詢HSQL;得到數(shù)據(jù)又執(zhí)行了一次HSQL,我覺得這樣好像有些不太好,大家覺得怎樣?大家提出寶貴的意見吧!

          posted on 2007-03-30 09:43 liaojiyong 閱讀(553) 評論(0)  編輯  收藏 所屬分類: Spring

          主站蜘蛛池模板: 南涧| 永靖县| 依兰县| 遂平县| 合肥市| 曲周县| 浮梁县| 阜康市| 南京市| 南昌市| 白玉县| 南开区| 攀枝花市| 丰宁| 海淀区| 镇原县| 威远县| 千阳县| 武鸣县| 峡江县| 南安市| 营口市| 怀安县| 城固县| 永川市| 安庆市| 永清县| 柳江县| 吉安县| 临潭县| 株洲市| 巴里| 施秉县| 明水县| 新化县| 沁源县| 浦江县| 凤凰县| 徐闻县| 简阳市| 孟连|