struts中的分頁實例
struts中的分頁實例?
??
??? 這僅是一個入門實例,簡潔實用,從網上整理而來,供參考。這里僅列出部分文件,其它文件、數據庫及目錄結構請從本站下載。
一、struts-config.xml配置,主要是配數據庫,這里用access。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
?</data-sources> ? <action-mappings> ? <controller> 二、Action類 package page; import java.util.*; public class DataSourceAction extends Action { ?public DataSourceAction(){} ??????? // if there is a previous page, set the previous variable? ??????? // if there is a next page, set the next variable? ?? }catch(SQLException e){
public int getId(){? ?public String getAuthor() { ?public void setAuthor(String author) { ?public String getBookname() { ?public void setBookname(String bookname) { <logic:iterate id="book" name="list" type="bean.Book">? <form action="/TestPage/page.do"> ?? <logic:present name="next">? 每頁<c:out value="${page}"/>條記錄,共<c:out value="${pages}"/>頁? 跳到<input type="text"? name="go" size="3" maxlength="30" > ? OK!!!!
????????? "-//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>
? <form-beans>
? </form-beans>
? <global-forwards>
? </global-forwards>
? <action path="/page" type="page.DataSourceAction" scope="request">
? <forward name="success" path="/pagetest.jsp"/>
? </action>
? </action-mappings>
? </controller>
</struts-config>
用 page.do?start=1 來顯示第一個頁面?
參數說明:?
? list:信息列表?
? start:開始位置?
? page:每頁顯示的信息數目?
? pages: 總頁數
? previous:上頁開始位置?
? next:下頁開始位置?
import org.apache.struts.action.*;
import javax.servlet.http.*;
import javax.sql.*;
import java.sql.*;
import bean.*;
?
?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));?
??????? int previous = start-page;?
??????? if ( previous>=0 ){?
??????????? request.setAttribute("previous", new Integer(previous));?
??????????? System.out.println ("previous:" + previous);?
??????? }?
??????? int next = start+page;?
??????? if ( next<=data_num ){?
??????????? request.setAttribute("next", new Integer(next));?
??????????? System.out.println ("next:" + next);?
??????? }?
????????? 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;
}
??????? return id;?
??? }?
? return author;
?}
? this.author = author;
?}
? return 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" %>
??????????? <br><html:link??
??????????????????? paramId="id" paramName="book" paramProperty="id"?
??????????????????? page="/messagedetail.do">?
??????????????????? <bean:write name="book" property="bookname" />?
??????????????? </html:link>?
</logic:iterate>?
?? <logic:present name="previous">?
??????????? <html:link??
??????????????????? paramId="start" paramName="previous"?
??????????????????? page="/page.do">?
??????????????????? 上一頁?
??????????????? </html:link>?
?? </logic:present>?
????????????? <html:link??
??????????????????? paramId="start" paramName="next"?
??????????????????? page="/page.do">?
??????????????????? 下一頁?
??????????????? </html:link>?
?? </logic:present>?
<input type="submit" value="go" >
</form>
?????????
五、測試,請下載本實例的目錄結構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