1 設置跳轉
??<logic:equal name="page" property="hasPreviousPage" value="true">
??????????????<a href="list.do?currentPage=<bean:write name="page" property="previousPage"/>">上一頁</a>
??????????????</logic:equal>
??????????????<logic:equal name="page" property="hasNextPage" value="true">
???????????? <a href="list.do?currentPage=<bean:write name="page" property="nextPage"/>">下一頁</a>
?????????????? </logic:equal>
2 在Form中設置private String currentPage ;
3進入action,在action中,頁面信息都是在pagebean得到的,根據頁面信息,進行分頁操作
public ActionForward execute(ActionMapping mapping, ActionForm form,
?? HttpServletRequest request, HttpServletResponse response) {
??ListForm listForm = (ListForm) form;// TODO Auto-generated method stub
????HttpSession session = request.getSession();
??????PageBean pb ;
??????NewsDao newsdao = new NewsDao();
??????List list = new ArrayList();
??????String currentPage = listForm.getCurrentPage();
??????if(currentPage == null){
??????int totalRows = newsdao.getTotalRows();
??????System.out.println(totalRows);
??????pb = new PageBean(totalRows,1);
??????session.removeAttribute("page");
??????System.out.println("當前頁面"+String.valueOf(pb.getPageStartRow()));
??????list = newsdao.getPageQueryDate(String.valueOf(pb.getPageStartRow()),String.valueOf(pb.getPageRecorders()));
??????System.out.println("進入action11");
??????}
????
??????else{
??????
??????
?? int totalRows = newsdao.getTotalRows();
??????pb = new PageBean(totalRows,Integer.parseInt(currentPage));
??????System.out.println("當前頁面"+String.valueOf(pb.getPageStartRow()));
??????list = newsdao.getPageQueryDate(String.valueOf(pb.getPageStartRow()), String.valueOf(pb.getPageRecorders()));
??????
??????session.setAttribute("page",pb);??????
??????request.setAttribute("all", list);
??????return mapping.findForward("pageinfo");
}
}
在action中,會涉及到三個方法
(1)
查詢到數據庫中記錄的跳數
??public int getTotalRows() {
????int totalRows = 0;
????String sql = "select count(*) from Newsvo";
????Connection conn = this.session.connection();
????PreparedStatement pstmt;
??try {
?? pstmt = conn.prepareStatement(sql);
?? ResultSet rs =pstmt.executeQuery();
???? if(rs.next()){
??????
??????String id = (String) rs.getString(1);
??????totalRows = Integer.parseInt(id);
??????????
???? }
??} catch (SQLException e) {
?? // TODO Auto-generated catch block
?? e.printStackTrace();
??}
????return totalRows;
??}
}
(2)
根據記錄的條數,得到分頁信息
public class PageBean {
private int currentPage = 1; // 當前頁
private int totalPages = 0; // 總頁數
private int pageRecorders = 5;// 每頁5條數據
private int totalRows = 0; // 總數據數
private int pageStartRow = 0;// 每頁的起始數
private int pageEndRow = 0; // 每頁顯示數據的終止數
private boolean hasNextPage = false; // 是否有下一頁
private boolean hasPreviousPage = false; // 是否有前一頁
private int nextPage = 0;//下一頁的頁碼
private int previousPage = 0;//上一頁的頁碼
??public PageBean(int totalRows,int currentPage) {
????this.totalRows = totalRows;
????this.currentPage = currentPage;
????if(currentPage < 2)
???? hasPreviousPage = false;
????else
???? hasPreviousPage = true;
????if ((totalRows % pageRecorders) == 0) {
???? totalPages = totalRows / pageRecorders;
????} else {
???? totalPages = totalRows / pageRecorders + 1;
????}
????if (currentPage < totalPages) {
???? hasNextPage = true;
???? nextPage = currentPage + 1;
???? pageStartRow = (currentPage - 1)*pageRecorders;
???? this.pageEndRow = pageStartRow + pageRecorders;
????} else if(currentPage == totalPages){
???? pageStartRow = (currentPage - 1)*pageRecorders;
???? this.pageEndRow = totalRows;
???? hasNextPage = false;
???? nextPage = currentPage;
????}
????if(currentPage < 2){
???? previousPage = currentPage;
???? hasPreviousPage = false;
????}else if(currentPage > 1){
???? previousPage = currentPage-1;
???? hasPreviousPage = true;
????}
?? }
public int getCurrentPage() {
??return currentPage;
}
public void setCurrentPage(int currentPage) {
??this.currentPage = currentPage;
}
public boolean isHasNextPage() {
??return hasNextPage;
}
public void setHasNextPage(boolean hasNextPage) {
??this.hasNextPage = hasNextPage;
}
public boolean isHasPreviousPage() {
??return hasPreviousPage;
}
public void setHasPreviousPage(boolean hasPreviousPage) {
??this.hasPreviousPage = hasPreviousPage;
}
public int getNextPage() {
??return nextPage;
}
public void setNextPage(int nextPage) {
??this.nextPage = nextPage;
}
public int getPageEndRow() {
??return pageEndRow;
}
public void setPageEndRow(int pageEndRow) {
??this.pageEndRow = pageEndRow;
}
public int getPageRecorders() {
??return pageRecorders;
}
public void setPageRecorders(int pageRecorders) {
??this.pageRecorders = pageRecorders;
}
public int getPageStartRow() {
??return pageStartRow;
}
public void setPageStartRow(int pageStartRow) {
??this.pageStartRow = pageStartRow;
}
public int getPreviousPage() {
??return previousPage;
}
public void setPreviousPage(int previousPage) {
??this.previousPage = previousPage;
}
public int getTotalPages() {
??return totalPages;
}
public void setTotalPages(int totalPages) {
??this.totalPages = totalPages;
}
public int getTotalRows() {
??return totalRows;
}
public void setTotalRows(int totalRows) {
??this.totalRows = totalRows;
}
}
(3)根據分頁信息,把數據查詢出來
public List<Newsvo> getPageQueryDate(String startRow,String num){
??List list = new ArrayList();
??System.out.println("進入查詢");
??String sql="select * from Newsvo limit "+startRow+","+num;
??Connection conn = this.session.connection();
??PreparedStatement pstmt ;
??try {
?? pstmt = conn.prepareStatement(sql);
?? ResultSet rs = pstmt.executeQuery();
??
?? while(rs.next()){
??
????Newsvo news = new Newsvo();
????news.setId(rs.getInt("id"));
????news.setUrl(rs.getString("url"));
????//news.setUrl(newsvo.getUrl());
????news.setTitle(rs.getString("title"));
????System.out.println(rs.getString("title"));
????list.add(news);
?? } } catch (SQLException e) {
?? // TODO Auto-generated catch block
?? e.printStackTrace();
??}
??
??
??
??return list;
}
錯誤:dao中,
while(rs.next()){
????Newsvo news = new Newsvo();
????news.setId(rs.getInt("id"));
????news.setUrl(rs.getString("url"));
????//news.setUrl(newsvo.getUrl());
????news.setTitle(rs.getString("title"));
????System.out.println(rs.getString("title"));
????list.add(news); }
我把vo的定義,放在while以外,發生了查詢的是同一條數據。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
