Java与Struts结合写一个简单基础的分页显示

来源:互联网 发布:淘宝最稀奇暴利产品. 编辑:程序博客网 时间:2024/06/06 02:16

用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

1 0