Java與Struts結合寫一個簡單基礎的分頁顯示

用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章