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>
<!--分页结束-->