用Struts2做一個簡單的基礎的分頁顯示。我的想法是把數據庫表中的每一行數據都封裝成一個對象,然後用一個ArrayList的方法返回這些對象,接着在Struts2的action裏面定義一個ArrayList屬性,用這個ArrayList來接收從數據庫中查詢出來並進行了封裝的那些對象,然後通過Struts2的標籤遍歷ArrayList裏的每個對象
我數據庫表結構和數據http://download.csdn.net/detail/liu_c_y/9553382
完整的項目代碼http://download.csdn.net/download/liu_c_y/9552320
數據庫表中的數據封裝成對象
package com.model;
import com.opensymphony.xwork2.ActionSupport;
public class Timeprice extends ActionSupport{
private static final long serialVersionUID = 1L;
private String from_sp;
private String to_sp;
private String time_leave;
private String time_arrive;
private int rest;
private String date;
private int price;
private int p_id;
private int time_id;
private int car_id;
public String getFrom_sp() {
return from_sp;
}
public void setFrom_sp(String from_sp) {
this.from_sp = from_sp;
}
public String getTo_sp() {
return to_sp;
}
public void setTo_sp(String to_sp) {
this.to_sp = to_sp;
}
public String getTime_leave() {
return time_leave;
}
public void setTime_leave(String time_leave) {
this.time_leave = time_leave;
}
public String getTime_arrive() {
return time_arrive;
}
public void setTime_arrive(String time_arrive) {
this.time_arrive = time_arrive;
}
public int getRest() {
return rest;
}
public void setRest(int rest) {
this.rest = rest;
}
public String getDate() {
return date;
}
public void setDate(String date){
this.date = date;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getP_id() {
return p_id;
}
public void setP_id(int p_id) {
this.p_id = p_id;
}
public int getTime_id() {
return time_id;
}
public void setTime_id(int time_id) {
this.time_id = time_id;
}
public int getCar_id() {
return car_id;
}
public void setCar_id(int car_id) {
this.car_id = car_id;
}
}
數據庫的連接
package com.conn;
import java.sql.DriverManager;
import com.mysql.jdbc.Connection;
public class Conn {
private String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";
private String user = "root";
private String pass = "";
public Connection getConn(){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = (Connection) DriverManager.getConnection(url, user, pass);
return conn;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
}
數據庫表的DAO
package com.conn;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class TimePriceDAO {
private Connection conn;
private PreparedStatement pstmt;
private ArrayList< com.model.Timeprice> list =new ArrayList< com.model.Timeprice>();
public TimePriceDAO(){
conn = new Conn().getConn();
}
public ArrayList< com.model.Timeprice> queryByPage(int pageSize,int pageNow){
if(pageNow<1) pageNow = 1;
try {
pstmt = conn.prepareStatement("select * from price,time_table,car where "
+ "time_table.time_id=price.time_id and car.car_id=time_table.car_id order by p_id desc limit "+(pageNow*pageSize-pageSize)+","+pageSize);
//pageNow*pageSize-pageSize開始查詢的行數,pageSize需要讀取的行數
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
com.model.Timeprice timeprice = new com.model.Timeprice();
timeprice.setP_id(rs.getInt("P_id"));
timeprice.setRest(rs.getInt("rest"));
timeprice.setPrice(rs.getInt("price"));
timeprice.setDate(rs.getString("date"));
timeprice.setTime_id(rs.getInt("time_id"));
timeprice.setTime_leave(rs.getString("time_leave"));
timeprice.setTime_arrive(rs.getString("time_arrive"));
timeprice.setCar_id(rs.getInt("car_id"));
timeprice.setFrom_sp(rs.getString("from_sp"));
timeprice.setTo_sp(rs.getString("to_sp"));
list.add(timeprice);
}
return list;//返回ArrayList的對象
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}
Action類
package com.admin.service;
import java.util.ArrayList;
import com.conn.TimePriceDAO;
import com.opensymphony.xwork2.ActionSupport;
public class TimePricePage extends ActionSupport{
private static final long serialVersionUID = 1L;
private ArrayList<com.model.Timeprice> list;
private int pageNow = 1; //第一頁開始
private int pageSize = 6;//每頁顯示6條記錄
private TimePriceDAO timePriceDAO= new TimePriceDAO();
public ArrayList<com.model.Timeprice> getList() {
return list;
}
public void setList(ArrayList<com.model.Timeprice> list) {
this.list = list;
}
public int getPageNow() {
return pageNow;
}
public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public String execute() throws Exception{
list = timePriceDAO.queryByPage(pageSize, pageNow);
return SUCCESS;
}
}
配置Struts.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="com" extends="struts-default">
<action name="showTimePrice" class="com.admin.service.TimePricePage" >
<result name="success">/displayinfo.jsp</result>
</action>
</package>
</struts>
前端的jsp頁面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'displaystuinfo.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<table>
<tr>
<td>班次</td>
<td>出發地</td>
<td>目的地</td>
<td>出發時間</td>
<td>預計到達時間</td>
<td>剩餘座位</td>
<td>價格</td>
<td>日期</td>
</tr>
<s:iterator value="list" id="list" status="status">
<tr bgcolor="#F0F8FF">
<td><s:property value="#list.car_id"/></td>
<td><s:property value="#list.from_sp"/></td>
<td><s:property value="#list.to_sp"/></td>
<td><s:property value="#list.time_leave"/></td>
<td><s:property value="#list.time_arrive"/></td>
<td><s:property value="#list.rest"/></td>
<td><s:property value="#list.price"/></td>
<td><s:property value="#list.date"/></td>
</tr>
</s:iterator>
</table>
<s:url id="url_pre" value="showTimePrice.action">
<s:param name="pageNow" value="pageNow-1"></s:param>
</s:url>
<s:url id="url_next" value="showTimePrice.action">
<s:param name="pageNow" value="pageNow+1"></s:param>
</s:url>
<s:a href="%{url_pre}">上一頁</s:a>
<s:iterator value="students" status="status">
<s:url id="url" value="showTimePrice.action">
<s:param name="pageNow" value="pageNow"/>
</s:url>
</s:iterator>
<s:a href="%{url_next}">下一頁</s:a>
</body>
</html>
部署完成後便實現了最簡單的只能進行上下頁的分頁顯示
個人博客:http://www.javaknowledge.cn/?p=44