龍行天下

            政 博
          隨筆 - 23, 文章 - 0, 評論 - 12, 引用 - 0
          數據加載中……

          struts中的分頁實例

          struts中的分頁實例?
          ??
          ??? 這僅是一個入門實例,簡潔實用,從網上整理而來,供參考。這里僅列出部分文件,其它文件、數據庫及目錄結構請從本站下載。
          一、struts-config.xml配置,主要是配數據庫,這里用access。
          <?xml version="1.0" encoding="ISO-8859-1" ?>

          <!DOCTYPE struts-config PUBLIC
          ????????? "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          ????????? "


          <struts-config>
          <data-sources>
          ?? <data-source key="dataSource" type="org.apache.commons.dbcp.BasicDataSource">
          ??????????? <set-property property="driverClassName" value="sun.jdbc.odbc.JdbcOdbcDriver" />
          ??????????? <set-property property="url" value="jdbc:odbc:page" />
          ??????????? <set-property property="username" value="admin" />
          ??????????? <set-property property="password" value="" />
          ??????????? <set-property property="maxActive" value="20" />
          ??????????? <set-property property="maxWait" value="5000" />
          ??????????? <set-property property="defaultAutoCommit" value="true" />
          ??????????? <set-property property="defaultReadOnly" value="false" />
          ??????????? <set-property property="validationQuery" value="SELECT 1" />
          ??????????? <set-property property="removeAbandoned" value="true" />
          ??????????? <set-property property="removeAbandonedTimeout" value="120" />????????????
          ??????????? <set-property property="encoding" value="false" />????????????
          ??????? </data-source>

          ?</data-sources>
          ? <form-beans>
          ? </form-beans>
          ? <global-forwards>
          ? </global-forwards>

          ? <action-mappings>
          ? <action path="/page" type="page.DataSourceAction" scope="request">
          ? <forward name="success" path="/pagetest.jsp"/>
          ? </action>
          ? </action-mappings>

          ? <controller>
          ? </controller>
          </struts-config>

          二、Action類
          用 page.do?start=1 來顯示第一個頁面?
          參數說明:?
          ? list:信息列表?
          ? start:開始位置?
          ? page:每頁顯示的信息數目?
          ? pages: 總頁數
          ? previous:上頁開始位置?
          ? next:下頁開始位置?

          package page;
          import org.apache.struts.action.*;
          import javax.servlet.http.*;

          import java.util.*;
          import javax.sql.*;
          import java.sql.*;
          import bean.*;

          public class DataSourceAction extends Action {

          ?public DataSourceAction(){}
          ?
          ?public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
          ?HttpServletResponse response) throws Exception {???
          ? try{
          ????? DataSource ds=this.getDataSource(request,"dataSource");???
          ????? Connection con = ds.getConnection();
          ????? Statement stmt = con.createStatement();
          ????? ResultSet resultSet = stmt.executeQuery("select count(*) from book" );?
          ????? resultSet.next();?
          ????? int data_num=resultSet.getInt(1);?
          ????? int start=1;
          ????? int page = 4; //每頁的記錄數。
          ????? int pages=data_num/page;
          ????? if(data_num%page!=0)
          ???????? pages++;
          ????? if(request.getParameter("start")!=null)
          ????????? start = Integer.parseInt(request.getParameter("start"));?
          ????? if(request.getParameter("go")!=null){
          ??????????????? int go = Integer.parseInt(request.getParameter("go"));?
          ??????????????? if(go<=1)
          ????????????????? start=1;
          ??????????????? else if(go>pages)
          ????????????????? start=(pages-1)*page+1;
          ??????????????? else?
          ?????????????????? start=(go-1)*page+1;
          ?????? }?
          ?????
          ????? String sql = "SELECT * FROM book where id>="+start+" and id<"+(start+page);
          ????? resultSet = stmt.executeQuery(sql);??
          ????? ArrayList list = new java.util.ArrayList();?
          ????? while(resultSet.next())
          ????? {??
          ??????? int id=resultSet.getInt("id");
          ??????? String name = resultSet.getString("name");
          ??????? String author = resultSet.getString("author");
          ??????? String price = resultSet.getString("price");
          ??????? System.out.println("開始數據封裝:name="+name+"author="+author+"price="+price);
          ??????? Book book= new Book(id,name,author,price);???????
          ??????? list.add(book);
          ????? }
          ??? con.close();
          ??? request.setAttribute("pages",new Integer(pages));
          ??? request.setAttribute("list",list);
          ??? //request.setAttribute("start", new Integer(start));?
          ??? request.setAttribute("page", new Integer(page));?

          ??????? // if there is a previous page, set the previous variable?
          ??????? int previous = start-page;?
          ??????? if ( previous>=0 ){?
          ??????????? request.setAttribute("previous", new Integer(previous));?
          ??????????? System.out.println ("previous:" + previous);?
          ??????? }?

          ??????? // if there is a next page, set the next variable?
          ??????? int next = start+page;?
          ??????? if ( next<=data_num ){?
          ??????????? request.setAttribute("next", new Integer(next));?
          ??????????? System.out.println ("next:" + next);?
          ??????? }?

          ?? }catch(SQLException e){
          ????????? e.printStackTrace();
          ????????? System.out.println("數據庫連接出現異常");
          ????? }?
          ???
          ???????????? return (mapping.findForward("success"));
          ? }?
          }


          三、bean類Book.java
          package bean;
          import java.sql.*;
          import java.util.ArrayList;
          public class Book {
          ?int id;
          ?private String bookname; //書名
          ?private String author;?? //作者
          ?private String price;??? //價格
          ?
          public Book(int id,String name,String author,String price){
          ?this.id=id;
          ?this.bookname=name;
          ?this.author=author;
          ?this.price=price;
          }

          public int getId(){?
          ??????? return id;?
          ??? }?

          ?public String getAuthor() {
          ? return author;
          ?}

          ?public void setAuthor(String author) {
          ? this.author = author;
          ?}

          ?public String getBookname() {
          ? return bookname;
          ?}

          ?public void setBookname(String bookname) {
          ? this.bookname = bookname;
          ?}
          ?
          ?public String getPrice(){
          ???? return this.price;?
          ?}
          ?
          ?public void setPrice(String price){
          ???? this.price=price;?
          ?}
          ?
          }
          四、分頁的jsp頁面pagetest.jsp,用了jstl中的c標記。
          <%@ page contentType="text/html; charset=gb2312" language="java"%>
          <%@ page import="java.util.*" %>
          <%@ page import="bean.*" %>
          <%@ taglib prefix="c" uri="
          <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
          <%@ taglib uri="/tags/struts-html" prefix="html" %>
          <%@ taglib uri="/tags/struts-logic" prefix="logic" %>

          <logic:iterate id="book" name="list" type="bean.Book">?
          ??????????? <br><html:link??
          ??????????????????? paramId="id" paramName="book" paramProperty="id"?
          ??????????????????? page="/messagedetail.do">?
          ??????????????????? <bean:write name="book" property="bookname" />?
          ??????????????? </html:link>?
          </logic:iterate>?

          <form action="/TestPage/page.do">
          ?? <logic:present name="previous">?
          ??????????? <html:link??
          ??????????????????? paramId="start" paramName="previous"?
          ??????????????????? page="/page.do">?
          ??????????????????? 上一頁?
          ??????????????? </html:link>?
          ?? </logic:present>?

          ?? <logic:present name="next">?
          ????????????? <html:link??
          ??????????????????? paramId="start" paramName="next"?
          ??????????????????? page="/page.do">?
          ??????????????????? 下一頁?
          ??????????????? </html:link>?
          ?? </logic:present>?

          每頁<c:out value="${page}"/>條記錄,共<c:out value="${pages}"/>頁? 跳到<input type="text"? name="go" size="3" maxlength="30" >
          <input type="submit" value="go" >
          </form>
          ?????????

          ?

          OK!!!!
          五、測試,請下載本實例的目錄結構TestPage,放入tomcat的webapps下,在瀏覽器中輸入:
          ???
          http://127.0.0.1:8080/TestPage/page.do?
          來源: java學習室
          ?

          posted on 2006-05-03 20:04 feingto 閱讀(632) 評論(0)  編輯  收藏 所屬分類: Java Web

          主站蜘蛛池模板: 桦甸市| 南部县| 枣阳市| 岚皋县| 遂宁市| 乌兰县| 墨江| 安陆市| 苍南县| 龙山县| 固阳县| 新化县| 黄平县| 六枝特区| 淳化县| 临泉县| 潜山县| 蒙城县| 宜城市| 江口县| 奉新县| 齐齐哈尔市| 宾川县| 平和县| 银川市| 台州市| 独山县| 和龙市| 剑河县| 望都县| 镇平县| 长白| 新巴尔虎右旗| 沈丘县| 绥芬河市| 礼泉县| 台湾省| 云霄县| 灵川县| 三门峡市| 嘉禾县|