struts2+mysql 实现分页效果

1.首先写一个实体类, 写上相应的构造方法  get set 方法,这里就不贴代码了

2.写一个类 查询数据库


package com.shuan.user;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.shuan.conn.ConnectionManager;
import com.shuan.exception.DBOperException;
import com.shuan.user.UserVO;

public class UserListImpl{


  PreparedStatement titleQuery    = null ;
     ResultSet results            = null ;
     Connection conn=null;

 
    @SuppressWarnings("unchecked")
     public List<UserVO> queryByPage(int i,int pageSize){
     List<UserVO> users=new ArrayList();
    
     conn=ConnectionManager.getConnection();
        String sql = "select * from t_user where f_state=1 order by f_userid asc limit "+ i +","+ pageSize;
         try
         {       
           titleQuery=conn.prepareStatement(sql);
           results=titleQuery.executeQuery();
             while(results.next())
             {
                UserVO u1=new UserVO();
       u1.setUserid(results.getInt("f_userid"));
       u1.setUsername(results.getString("f_username"));
       u1.setPassword(results.getString("f_password"));
       u1.setName(results.getString("f_name"));
       u1.setJigou(results.getString("f_jigou"));
       u1.setState(results.getInt("f_state"));
                 i++;
                 users.add(u1);
             }
             results.close() ;
             titleQuery.close() ;
         }
         catch(Exception e)
         {
             System.out.println(e) ;
         }
         finally
         {
     ConnectionManager.closeConnection(conn);

         }
         return users;
 
     }
              //查询总行数
     public int count() {
         int intRowCount = 0;//总行数
         conn=ConnectionManager.getConnection();

       String  sql = "select count(f_userid) from t_user where f_state=1 order by f_userid asc";
         try
         {           
          titleQuery=conn.prepareStatement(sql);
          results=titleQuery.executeQuery();
          results.next();//游标指向第一行
             intRowCount=results.getInt(1);//取得总行数
             results.close() ;
             titleQuery.close() ;
         }
         catch(Exception e)
         {
             System.out.println(e) ;
         }
         finally
         {
     ConnectionManager.closeConnection(conn);
         }
         return intRowCount;
     }
   
}

3. 写action

package com.shuan.action;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpSession;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.shuan.user.UserImpl;
import com.shuan.user.UserListImpl;
import com.shuan.user.UserVO;
public class ListAction extends ActionSupport {


    int i=1;//中间变量
    private int k;//储存最大页面数
    private int pageNow=1; //页码数,初始为1
    private int pageSize = 10 ; //页面行数
    private int intRowCount;//总行数
    private int intPageCount;//总页数
    private UserVO user;
    private List<UserVO> users;

public int getI() {
  return i;
}

public void setI(int i) {
  this.i = i;
}

public int getK() {
  return k;
}

public void setK(int k) {
  this.k = k;
}

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 int getIntRowCount() {
  return intRowCount;
}

public void setIntRowCount(int intRowCount) {
  this.intRowCount = intRowCount;
}

public int getIntPageCount() {
  return intPageCount;
}

public void setIntPageCount(int intPageCount) {
  this.intPageCount = intPageCount;
}

public UserVO getUser() {
  return user;
}

public void setUser(UserVO user) {
  this.user = user;
}

public List<UserVO> getUsers() {
  return users;
}

public void setUsers(List<UserVO> users) {
  this.users = users;
}

/**
* by:zfn
* 查询用户列表
*/
public String queryList() throws Exception{

UserListImpl u=new UserListImpl();
intRowCount=u.count();
k=(intRowCount + pageSize - 1) / pageSize;
    intPageCount = (intRowCount + pageSize - 1) / pageSize;//计算出总页数
    if(pageNow<1){
        pageNow=1;
    }
    if(pageNow > intPageCount)
        pageNow=intPageCount;
        i = (pageNow -1)*pageSize;
        UserListImpl us=new UserListImpl();
        if(null!=us.queryByPage(i,pageSize)){
         users = us.queryByPage(i,pageSize);
            return "userList";
        }else{
            return "userList";
        }

    
}

}

4.编写strutsxml

  <action name="pageList" class="com.shuan.action.ListAction" method="queryList">  
                 
         <result name="userList" type="dispatcher">/view/pageList.jsp</result>    
        
        </action>

5.在jsp页面中粘入下面代码,<s:iterator value="users" status="status">  
这句话里面的users 是  步骤2中 最后获得的值   这两个值名称一点要相同

  <center>
        共<s:property value="intRowCount"/>记录&nbsp;&nbsp;
        第<s:property value="pageNow"/>页&nbsp;&nbsp;
         <s:url id="url_pre" value="pageList.action">  
         <s:param name="pageNow" value="pageNow-1"></s:param>  
     </s:url>  
 
     <s:url id="url_next" value="pageList.action">  
         <s:param name="pageNow" value="pageNow+1"></s:param>  
     </s:url>  
     <s:iterator value="users" status="status">  
        <s:url id="url" value="pageList.action">  
            <s:param name="pageNow" value="pageNow"/>  
        </s:url>  
     </s:iterator>   
     <s:if test="pageNow==1">
    <s:a href="%{url_pre}">最前一页</s:a>
     </s:if>
     <s:else>
     <s:a href="%{url_pre}">上一页</s:a>
     </s:else>
     <s:if test="pageNow==k">
     <s:a href="%{url_next}">最后一页</s:a>
       </s:if>
       <s:else>
       <s:a href="%{url_next}">下一页</s:a>
       </s:else>
       </center>

代码贴完   说的不是很详细   我也是新手   大家多交流


 


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值