Struts2實現分頁
阿新 • • 發佈:2018-11-11
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>
<!--分頁結束-->