<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學習室
?