Cyh的博客

          Email:kissyan4916@163.com
          posts - 26, comments - 19, trackbacks - 0, articles - 220

          struts2+Spring分頁

          Posted on 2009-06-10 12:26 啥都寫點 閱讀(875) 評論(0)  編輯  收藏 所屬分類: J2EE
               今天寫了一個分頁程序,是使用struts2+Spring完成的,現提供完整的源代碼。如果看完后,還有不明白之處大家可以給我發郵件:chenyanhubusiness@gmail.com

               在這里對struts2 和 Spring的基本配置我就不多說了,在這個小程序中數據源我是使用Spring提供的c3po的數據源,并且查詢數據庫使用的是Jdbc模板,現提供
           數據源和Jdbc模板以及相關配置。
               <!--引入屬性配置文件-->
            <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
              <property name="location" value="/WEB-INF/jdbc.properties"/>
            </bean>  


                               
          <!-- C3P0 -->
            
          <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
                
          <property name="driverClass" value="${jdbc.driverClassName}"></property>
                
          <property name="jdbcUrl"    value="${jdbc.url}"></property>
                
          <property name="user">  
                  
          <value>${jdbc.username}</value>
                
          </property>
                
          <property name="password">
                  
          <value>${jdbc.password}</value>
                
          </property> 
                 
          <property name="minPoolSize" value="5"></property>
                 
          <property name="maxPoolSize" value="20"></property>
                 
          <property name="acquireIncrement" value="5"></property>
               
          </bean>
           
            
          <!-- JDBC模板 -->
            
            
          <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
             
          <property name="dataSource" >
              
          <ref bean="dataSource" />
             
          </property>
             
          <property name="lazyInit" value="true"></property>
            
          </bean>

           <!--   Dao  -->
           <bean id="dao" abstract="true">
              <property name="jdbcTemplate" ref="jdbcTemplate"/>
           </bean>

           <bean id="userDao" parent="dao" class="ryan.chapter8.UserDao"/>
            
           
           <!-- 注入Action -->
           <bean id="user" scope="prototype" class="ryan.chapter8.UserAction">
              <property name="uds" ref="userDao"></property>
           </bean>


             我將相關的jdbc配置寫在了jdbc.properties里面,大家可以根據自己機器的情況自行修改:
          jdbc.driverClassName=com.mysql.jdbc.Driver
          jdbc.url
          =jdbc:mysql://localhost:3306/spring
          jdbc.username=root
          jdbc.password
          =123456

          來看看index.jsp頁面
          <s:form action="pagination_user" method="post">
                  
          <s:submit value="查看列表"/>
               
          </s:form>

          這里是struts.xml配置:
          <struts>
           
          <!--  Struts2  in spring conformity   -->

           
          <constant name="struts.objectFactory" value="spring" />

           
          <package  name="Action" extends="struts-default">
              
          <action name="*_user" method="{1}"  class="user">
                
          <result name="success">/index.jsp</result>
                
          <result name="page">/pagination.jsp</result>
              
          </action>
            
          </package>

          </struts>

          接下來看看UserDaoService 和 UserDao。
          public interface UserDaoService {
              
              
          public void insertUser() ;
               
              
          public List<User> pageUser(int pageNow,int pageSize);
              
              
          public int pageCount(int pageSize);
          }

          import java.util.ArrayList;
          import java.util.List;
          import org.springframework.jdbc.core.support.JdbcDaoSupport;


          public class UserDao extends JdbcDaoSupport implements UserDaoService{
             
               List
          <User> list = new ArrayList<User>();
              
           
               
          int pageCount = 0;
               
          public void insertUser() {
                  String sql 
          = "insert into user(username,password)values('ryan','chen')";
                  getJdbcTemplate().execute(sql);
               }
               
               
               
          public List<User> pageUser(int pageNow,int pageSize) {
                  
                   String limitF 
          = String.valueOf((pageNow-1)*pageSize);
                  
                   System.out.println(
          "limitF = " +limitF);
                   
                   String limitA 
          = String.valueOf(pageSize);
                   
                   System.out.println(
          "limitA = " +limitA);
                   
                   String sql2 
          = "select * from user limit"+" "+limitF+","+limitA ;
                   
                   System.out.println(
          "sql2 = "+sql2);
                  
                   list 
          = getJdbcTemplate().queryForList(sql2);
                   
                   
          return list;
               }
               
          /**
                * 分頁
                
          */
               
          public int pageCount(int pageSize) {
                   String sql 
          = "select count(*) from user";
                     
                   
          int rowCount  = getJdbcTemplate().queryForInt(sql);
                   
                   
          if(rowCount%pageSize==0){
                       pageCount 
          = rowCount/pageSize; 
                   }
          else{
                       pageCount 
          = rowCount/pageSize+1
                   }
                  
          return pageCount;
               }
               
          }

          POJO:
          package ryan.chapter8;

          public class User {

                
          private int id ;
                
                
          private String username;
                
                
          private String password;

               省略 getter和setter
          ......
                
          }

          下面是UserAction:

          package ryan.chapter8;

          import java.util.ArrayList;
          import java.util.List;

          import org.springframework.dao.DataAccessException;

          import com.opensymphony.xwork2.ActionSupport;

          public class UserAction extends ActionSupport{
              
              UserDaoService uds;
              
              
          int pageCount = 0;
              
              
          int pageSize = 5;
              
              
          int listSize;
              
              List
          <User> list = new ArrayList<User>();
              
              
          int pageNow = 1//希望顯示第幾頁
              
              
          public List<User> getList() {
                  
          return list;
              }

              
          public void setList(List<User> list) {
                  
          this.list = list;
              }

              
          public int getPageNow() {
                  
          return pageNow;
              }

              
          public void setPageNow(int pageNow) {
                  
          this.pageNow = pageNow;
              }

              
          public UserDaoService getUds() {
                  
          return uds;
              }

              
          public void setUds(UserDaoService uds) {
                  
          this.uds = uds;
              }
              
              
              
          public  String create(){
                   
          try {
                         uds.insertUser();
                         }
          catch (DataAccessException dae) {
                          
          // TODO: handle exception
                             dae.printStackTrace();
                             System.out.println(
          "數據訪問異常!!");
                      } 
          catch (Exception e) {
                          
          // TODO: handle exception
                             e.printStackTrace();
                             System.out.println(
          "出現異常了!");
                      }
                          
          return SUCCESS;
                      }
                  
              
            
          //分頁
              public String pagination() {
                  
                  pageCount 
          = uds.pageCount(pageSize); 
                  
                  list 
          = uds.pageUser(pageNow,pageSize);

                  
          if(list.size()==0){
                      
                      listSize 
          = 1;

                      addActionError(
          "數據庫中沒有值");
                  }
                  
                  
          return "page";
              }
              
              
              @Override
              
          public String execute() throws Exception {
            
                
          return null;
              }

              
          public int getPageCount() {
                  
          return pageCount;
              }

              
          public void setPageCount(int pageCount) {
                  
          this.pageCount = pageCount;
              }

              
          public int getPageSize() {
                  
          return pageSize;
              }

              
          public void setPageSize(int pageSize) {
                  
          this.pageSize = pageSize;
              }

              
          public int getListSize() {
                  
          return listSize;
              }

              
          public void setListSize(int listSize) {
                  
          this.listSize = listSize;
              }
            }

          接下來是分頁的頁面 pagination.jsp
          <html>
            
          <head>
              
          <base href="<%=basePath%>">
              
              
          <title>My JSP 'pagination.jsp' starting page</title>
              
              
          <meta http-equiv="pragma" content="no-cache">
              
          <meta http-equiv="cache-control" content="no-cache">
              
          <meta http-equiv="expires" content="0">    
              
          <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
              
          <meta http-equiv="description" content="This is my page">
              
          <!--
              
          <link rel="stylesheet" type="text/css" href="styles.css">
              
          -->

            
          </head>
            
            
          <body>
            
              
          <s:actionerror/>
              
            
          <table>
               
          <tr> 
                 
          <td>序號</td>
                 
          <td>姓名</td>
                 
          <td>密碼</td>
               
          </tr>
               
          <s:iterator value="list" id="li">
                
          <tr>
                    
          <td><s:property value="#li.id"/></td>
                    
          <td><s:property value="#li.username"/></td> 
                    
          <td><s:property value="#li.password"/></td>
                
          </tr>  
               
          </s:iterator>
              
            
          </table>   
              
              
          <!-- =================================分頁================================ -->
              
             
          <s:if test="listSize!=1"> 
              
          <s:url action="pagination_user" id="homePage">
                
          <s:param name="pageNow">1</s:param>
              
          </s:url>
              
          <s:a href="%{homePage}">首頁</s:a>

              
          <!-- 這是上一頁的鏈接 --> 
              
          <s:url action="pagination_user" id="previousPage" >
                 
          <s:param name="pageNow">${pageNow-1}</s:param>
              
          </s:url>
             
          <s:if test="pageNow!=1"> 
              
          <s:a href="%{previousPage}">上一頁</s:a> 
             
          </s:if> 

              
               
          <s:bean name="org.apache.struts2.util.Counter" id="counter">  
               
          <s:param name="first">${pageNow}</s:param>  
               
          <s:param name="last">${pageNow+2}</s:param>
               
          <s:iterator>  
                 
          <s:if test=" (pageNow!=pageCount)&&(pageNow = pageNow+1)">
                   
          <s:url action="pagination_user" id="currentPage">
                      
          <s:param name="pageNow">${pageNow}</s:param>
                   
          </s:url>
                   
          <s:a href="%{currentPage}">${pageNow}</s:a> 
                 
          </s:if>
               
          </s:iterator>  
               
          </s:bean>  

            
              
          <!-- 下一頁 --> 
               
          <s:url action="pagination_user" id="nextPage">
                  
          <s:param name="pageNow">${pageNow+1}</s:param>
               
          </s:url>     
               
          <s:if test="pageNow!=pageCount">
                  
          <s:a href="%{nextPage}">下一頁</s:a>
               
          </s:if>
              
              
          <!-- 尾頁 -->
              
          <s:url action="pagination_user" id="endPage">
                
          <s:param name="pageNow">${pageCount}</s:param>
              
          </s:url>
              
          <s:a href="%{endPage}">尾頁</s:a>
              
              
          </s:if>
            
          </body>
          </html>



                                                                                                                 --    學海無涯
                  

          主站蜘蛛池模板: 东辽县| 剑川县| 元氏县| 三穗县| 池州市| 全椒县| 满洲里市| 哈巴河县| 永嘉县| 贵港市| 象山县| 桃源县| 三亚市| 宽城| 北川| 应用必备| 石楼县| 延吉市| 河南省| 茂名市| 海阳市| 雅安市| 涟源市| 乳山市| 亳州市| 喀喇| 通道| 丁青县| 茶陵县| 涞源县| 库尔勒市| 饶平县| 青田县| 灵山县| 河源市| 康平县| 陵川县| 九寨沟县| 鸡西市| 呼和浩特市| 靖宇县|