Struts2 实现分页(源码)!

          好久没好好写点东西了,最近一直在熟练Struts2的各种特性,和搭建机制。

然后搞了一个Struts2新闻发布,实现了对mysql数据库的增删改查,后台管理员登陆、注册,

数据库连接池,新闻分页,权限控制,xml验证框架。但是现在代码的封装,重用,耦合还是不够好。以后要一步步完善。

回头还打算把JQuery框架和Struts2整合一下,那就帅多了。今天也不打算的瑟太多,就讲讲

我写的Struts2分页吧。

          我的分页比较简单,没有那么复杂,还是先实现再优化丰富吧。网上这方面的例子很多,但是详细的并不多。我打算

整理一下我的实现方案,并且接合Struts2的标签实现分页。提供相关完整代码。望高手指教了。

 

环境:MyEclipse6.5+Mysql5+struts2.0.11

实现分页用到三个类,分别为NewsDao.java(接口),NewsDaoImpl.java(实现),ListAction.java(调用方法)。

当然还有配好连接池的Mysql连接辅助类。在此不做过多介绍。

NewsDao.java

package  com.sy.dao;

import  java.util.List;

import  com.sy.vo.News;

public   interface  NewsDao {

        

    
public  List < News >  queryByPage( int  pageSize, int  pageNow);
    
    
public   int  count();
    
    
}

 

NewsDaoImpl.java

package  com.sy.dao.impl;

import  java.sql.PreparedStatement;
import  java.sql.ResultSet;
import  java.text.SimpleDateFormat;
import  java.util.ArrayList;
import  java.util.List;

import  com.sy.dao.NewsDao;
import  com.sy.util.DataBaseConnection;
import  com.sy.util.StringUtil;
import  com.sy.vo.News;

public   class  NewsDaoImpl  implements  NewsDao {
          
        
        
// 获取分页新闻列表
    @SuppressWarnings( " unchecked " )
    
public  List < News >  queryByPage( int  i, int  pageSize){
        List
< News >  newss = new  ArrayList();
        
        PreparedStatement pstmt    
=   null  ;
        String sql                
=   null  ;
        ResultSet rs            
=   null  ;
        DataBaseConnection dbc    
=   null  ;
        dbc 
=   new  DataBaseConnection() ;

        sql 
=   " select * from struts2new order by id asc limit  "   +  i  +   " , "   +  pageSize;
        
try
        {        
            
            pstmt 
=  dbc.getConnection().prepareStatement(sql);
            
            rs 
=  pstmt.executeQuery() ;
            
while (rs.next())
            {
                News news
= new  News();
                news.setId(rs.getInt(
" id " ));
                news.setName(rs.getString(
" name " ));
                news.setTitle(rs.getString(
" title " ));
                news.setDate(rs.getString(
" date " ));
                news.setEmail(rs.getString(
" email " ));
                news.setContent(rs.getString(
" content " ));
                i
++ ;
                newss.add(news);
            }
            rs.close() ;
            pstmt.close() ;
        }
        
catch (Exception e)
        {
            System.out.println(e) ;
        }
        
finally
        {
            dbc.close();
        }
        
return  newss;
    }
             
// 查询总行数
     public   int  count() {
        
int  intRowCount  =   0 ; // 总行数
        PreparedStatement pstmt     =   null  ;
        String sql                
=   null  ;
        ResultSet rs            
=   null  ;
        DataBaseConnection dbc    
=   null  ;
        dbc 
=   new  DataBaseConnection() ;

        sql 
=   " select count(id) from struts2new order by id asc " ;
        
try
        {            
            pstmt 
=  dbc.getConnection().prepareStatement(sql);
            rs 
=  pstmt.executeQuery();
            rs.next();
// 游标指向第一行
            intRowCount = rs.getInt( 1 ); // 取得总行数
            rs.close() ;
            pstmt.close() ;
        }
        
catch (Exception e)
        {
            System.out.println(e) ;
        }
        
finally
        {
            dbc.close();
        }
        
return  intRowCount;
    }
}

ListAction.java

 

package  com.sy.action;

import  java.util.List;

import  com.opensymphony.xwork2.ActionSupport;
import  com.sy.dao.AdminDao;
import  com.sy.dao.NewsDao;
import  com.sy.dao.impl.AdminDaoImpl;
import  com.sy.dao.impl.NewsDaoImpl;
import  com.sy.vo.Admin;
import  com.sy.vo.News;

public   class  ListAction  extends  ActionSupport {

    
private   static   final   long  serialVersionUID  =   1L ;
        
int  i = 1 ; // 中间变量
     private   int  k; // 储存最大页面数
     private   int  pageNow = 1 // 页码数,初始为1
     private   int  pageSize  =   5  ;  // 页面行数 
     private   int  intRowCount; // 总行数
     private   int  intPageCount; // 总页数
     private  Admin admin;
    
private  List < Admin >  Adminss;
    
private  News news;
    @SuppressWarnings(
" unchecked " )
    
private  List < News >  Newss;
    
    
private   int  id;
    
private   int  aid;

    
public  News getNews() {
        
return  news;
    }

    
public   void  setNews(News news) {
        
this .news  =  news;
    }

    @SuppressWarnings(
" unchecked " )
    
public  List < News >  getNewss() {
        
return  Newss;
    }
    
public   void  setNewss(List < News >  newss) {
        Newss 
=  newss;
    }

    
public   int  getId() {
        
return  id;
    }

    
public   void  setId( int  id) {
        
this .id  =  id;
    }
    
public  Admin getAdmin() {
        
return  admin;
    }

    
public   void  setAdmin(Admin admin) {
        
this .admin  =  admin;
    }

    
public  List < Admin >  getAdminss() {
        
return  Adminss;
    }

    
public   void  setAdminss(List < Admin >  adminss) {
        Adminss 
=  adminss;
    }
    
public   int  getAid() {
        
return  aid;
    }

    
public   void  setAid( int  aid) {
        
this .aid  =  aid;
    }

    
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   int  getK() {
        
return  k;
    }

    
public   void  setK( int  k) {
        
this .k  =  k;
    }
@SuppressWarnings(
" unchecked " )
    @Override
// 显示新闻列表
     public  String execute()  throws  Exception {

        NewsDao npage
= new  NewsDaoImpl();
        intRowCount
= npage.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;
        NewsDao nlist
= new  NewsDaoImpl();
        
if ( null != nlist.queryByPage(i,pageSize)){
        Newss 
=  nlist.queryByPage(i,pageSize);
            
return  SUCCESS;
        }
else {
            
return   " failure " ;
        }
    }
          ..
}

 

struts.xml

 

<? xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"
>
< struts >
< package  name ="news"  extends ="struts-default" >

..
<!--  查看新闻列表  -->         
        
< action  name ="list"  class ="com.sy.action.ListAction" >
            
< result > /listNews.jsp </ result >
            
< result  name ="failure" > /Showfailure.jsp </ result >
        
</ action >

</ package >
</ struts >

 

显示页面listNews.jsp

 

<% @ page language = " java "  pageEncoding = " UTF-8 " %>
<% @ taglib prefix = " s "  uri = " /struts-tags " %>
<%
    
String  path  =  request.getContextPath();
    
String  basePath  =  request.getScheme()  +   " :// "
            
+  request.getServerName()  +   " : "   +  request.getServerPort()
            
+  path  +   " / " ;
%>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
    
< head >
        
< base  href ="<%=basePath%>" >
        
< title > My JSP 'index.jsp' starting page </ title >
    
</ head >
    
< body >



..


        
< center >
        共
< s:property  value ="intRowCount" /> 记录 &nbsp;&nbsp;
        第
< s:property  value ="pageNow" /> &nbsp;&nbsp;
         
< s:url  id ="url_pre"  value ="list.action" >    
         
< s:param  name ="pageNow"  value ="pageNow-1" ></ s:param >    
     
</ s:url >    
  
     
< s:url  id ="url_next"  value ="list.action" >    
         
< s:param  name ="pageNow"  value ="pageNow+1" ></ s:param >    
     
</ s:url >    
     
< s:iterator  value ="Newss"  status ="status" >    
        
< s:url  id ="url"  value ="list.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 >
    
</ body >
</ html >

 

效果:

 

如果有疑问可以提出来,我会尽力答复,如果有更好的想法,欢迎交流,以上源码还不成熟,以后会优化。

 

施杨出品!!!谢绝盗版。转载注明。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值