Struts2实现分页

 

Action层

package action;


public class indexAction extends ActionSupport {
		private int pageAllNum;
		private int beginIndex;
		private List<App_User> list;

		
		public int getBeginIndex() {
			return beginIndex;
		}
		public void setBeginIndex(int beginIndex) {
			this.beginIndex = beginIndex;
		}
		public int getPageAllNum() {
			return pageAllNum;
		}
		public void setPageAllNum(int pageAllNum) {
			this.pageAllNum = pageAllNum;
		}
       	public List<App_User> getList() {
			return list;
		}
		public void setList(List<App_User> list) {
			this.list = list;
		}

		@Override
		public String execute() throws Exception {
			// TODO Auto-generated method stub
			 UserDao userdao=new UserDaoImpl();
			 pageAllNum=userdao.countPages(10);//页大小为10
			 if(beginIndex==0)//初始化
				 beginIndex=1;
			 if(pageAllNum==0)//初始化
				 pageAllNum=1;
			 list=userdao.displayUser(beginIndex,10);//页大小为10
						 
			 return SUCCESS;
		}
}

dao接口层

package dao;
import java.util.List;

import model.App_User;

public interface UserDao {
  public List<App_User> displayUser(int pagenum,int pagesize);
  public int  countPages(int pagesize);
  
}

daoImpl层

<链接的数据库是sqlserver 由于不支持limit关键字 用的top所以sql语句有点长---mysql支持limit 分页查询的sql语句简单>

package daoImpl;

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

import util.DBUtil;
import dao.UserDao;
import model.App_Dep;
import model.App_User;

public class UserDaoImpl implements UserDao {

	@Override
	public List<App_User> displayUser(int pagenum, int pagesize) {
		// TODO Auto-generated method stub
		Connection con=null;
		PreparedStatement stmt=null;
		ResultSet rs=null;
		List<App_User> list=new ArrayList<App_User>();
		try{
			con=DBUtil.openConnection();
//查询语句可以忽略
			String sql="select top(?) App_User.pkid,uname,uage,depname,ucode from App_User inner join App_Dep on App_User.depcode=App_Dep.depcode where App_User.pkid not in (select top (?) App_User.pkid from App_User inner join App_Dep on App_User.depcode=App_Dep.depcode)";
			stmt=con.prepareStatement(sql);
			stmt.setInt(1,pagesize);
			stmt.setInt(2, (pagenum-1)*pagesize);
			rs=stmt.executeQuery();
		while(rs.next()){
			App_User user=new App_User();
			user.setUname(rs.getString("uname"));
			user.setUage(rs.getInt("uage"));
			user.setDepname(rs.getString("depname"));
			user.setUcode(rs.getString("ucode"));
			list.add(user);
		}
		}catch(Exception ex){
			ex.printStackTrace();
		}
	    try {
			DBUtil.closeResultSet(rs);
			DBUtil.closeStatement(stmt);
			DBUtil.closeConnection(con);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    
		
		return list;
	}

	@Override
	public int countPages(int pagesize) {
		// TODO Auto-generated method stub
		Connection con=null;
		PreparedStatement stmt=null;
		ResultSet rs=null;
		int  pagenum = 0;
		try{
			con=DBUtil.openConnection();
			String sql="select count(*) from App_User";
			stmt=con.prepareStatement(sql);
			rs=stmt.executeQuery();
		if(rs.next()){
			if(rs.getInt(1)%pagesize==0)
				pagenum=rs.getInt(1)/pagesize;
			else
				pagenum=rs.getInt(1)/pagesize+1;
		}
		}catch(Exception ex){
			ex.printStackTrace();
		}
	    try {
			DBUtil.closeResultSet(rs);
			DBUtil.closeStatement(stmt);
			DBUtil.closeConnection(con);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return pagenum;
	}


		
}

 

前端.jsp

<!--分页开始-->	
<center>					
<s:if test="beginIndex==1">
上一页
</s:if><s:else>
<a  href="indexAction?beginIndex=<s:property value="beginIndex-1"/>">上一页 </a>
</s:else>				

<s:if test="beginIndex==pageAllNum">下一页 
</s:if><s:else>
<a href="indexAction?beginIndex=<s:property value="beginIndex+1"/>" >下一页   </a>
</s:else>		

第<s:property value="beginIndex"/>页/共<s:property value="pageAllNum"/>页									
</center>
<!--分页结束-->

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值