jsp分頁

          今天寫了個jsp的分頁程序,以前在做jsp項目的時候,分頁采用的是“首頁,尾頁,上一頁,下一頁”的形式,雖然分頁沒有問題,但總感覺不夠友好,現在很多論壇都采用這種模式,即根據用戶請求的頁面,列出請求頁面和該頁面的前幾頁和后幾頁,看上去比較舒服,今天就模仿“編程中國論壇”的分頁風格練了練,后臺查詢數據庫的分頁代碼與之前做過的基本沒有變化,主要是在jsp頁面上多了些判斷,效果實現了,至于效率我就不好說了,如果哪位看過下面代碼的朋友有什么好方法,還望大家能夠一起交流,共同進步。

          該程序采用了MVC設計模式,代碼中的ServletX為總控制器,根據model值將請求轉至相應模塊,后臺數據庫為Oracle,由于emp表中數據只有15條,所以我每頁只顯示一條記錄,效果如圖:

          1,用戶登錄,若登錄成功轉到main.jsp頁面,以下為用戶控制器代碼:
          package controls;

          import java.io.*;
          import javax.servlet.*;
          import javax.servlet.http.*;
          import entitys.User;
          import routines.Translation;
          import operater.*;
          import java.util.*;

          public class UserServlet extends HttpServlet {

              
          /**
               * Constructor of the object.
               
          */

              
          public UserServlet() {
                  
          super();
              }


              
          /**
               * Destruction of the servlet. <br>
               
          */

              
          public void destroy() {
                  
          super.destroy(); // Just puts "destroy" string in log
                  
          // Put your code here
              }


              
          /**
               * The doGet method of the servlet. <br>
               *
               * This method is called when a form has its tag value method equals to get.
               * 
               * 
          @param request the request send by the client to the server
               * 
          @param response the response send by the server to the client
               * 
          @throws ServletException if an error occurred
               * 
          @throws IOException if an error occurred
               
          */

              
          public void doGet(HttpServletRequest request, HttpServletResponse response) 
                          
          throws ServletException, IOException {
                      String event 
          = request.getParameter("event");
                      
          if(event.equals("login")){
                          String userName 
          = Translation.transCode(request.getParameter("userName"));
                          String password 
          = Translation.transCode(request.getParameter("password"));
                          User user 
          = new User();
                          user.setUserName(userName);
                          user.setPassword(password);
                          OperUser obj 
          = new OperUser();
                          
          if(obj.isExist(user)){
                              
          this.mySet(request,"1");
                              request.getRequestDispatcher(
          "main.jsp").forward(request, response);
                              
          return;
                          }
          else{
                              System.out.println(
          "失敗");
                          }

                      }

              }

                  
                  
          private void mySet(HttpServletRequest request,Object pageNo){
                      OperEmp emp 
          = new OperEmp();
                              
          //向請求中存儲關于分頁的信息
                              ArrayList aryInfo = emp.getEmp(pageNo);
                              request.setAttribute(
          "data", aryInfo.get(0));
                              request.setAttribute(
          "pageNo", aryInfo.get(1));
                              request.setAttribute(
          "pageCount", aryInfo.get(2));
                              request.setAttribute(
          "rowsCount", aryInfo.get(3));
                              ArrayList aryNumber 
          = new ArrayList();
                              
          for(int i=1;i<=10;i++){
                                  aryNumber.add(
          new Integer(i));
                              }

                              request.setAttribute(
          "number", aryNumber);
                              ArrayList aryNumberR 
          = new ArrayList();
                              
          for(int i=9;i>=0;i--){
                                  aryNumberR.add(
          new Integer(i));
                              }

                              request.setAttribute(
          "numberR", aryNumberR);
                              
          //向請求中存儲關于職位的信息
                              ArrayList aryJob = emp.getJob();
                              request.setAttribute(
          "job", aryJob);
                              
          //向請求中存儲關于部門編號的信息
                              OperDept dept = new OperDept();
                              ArrayList aryDeptno 
          = dept.getDeptno();
                              request.setAttribute(
          "deptno", aryDeptno);
                  }


              
          /**
               * The doPost method of the servlet. <br>
               *
               * This method is called when a form has its tag value method equals to post.
               * 
               * 
          @param request the request send by the client to the server
               * 
          @param response the response send by the server to the client
               * 
          @throws ServletException if an error occurred
               * 
          @throws IOException if an error occurred
               
          */

              
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                      
          throws ServletException, IOException {
                  
          this.doGet(request, response);
              }


              
          /**
               * Initialization of the servlet. <br>
               *
               * 
          @throws ServletException if an error occure
               
          */

              
          public void init() throws ServletException {
                  
          // Put your code here
              }


          }


          2,main.jsp頁面,即顯示分頁的頁面的代碼:
          <%@page contentType="text/html" pageEncoding="GBK"%>
          <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
             "http://www.w3.org/TR/html4/loose.dtd"
          >

          <html>
              
          <head>
                  
          <title>職員信息</title>
                  
          <script type="text/javascript">
                      
          function go(){
                          
          var page = document.frmMain.pageNo.value;
                          window.location.href 
          = 'ServletX?model=emp&event=partitionPage&pageNo=+ page;
                          
          return;
                      }

                  
          </script>
              
          </head>
              
          <body>
                  
          <form name="frmMain" action="ServletX" method="get">
                      
          <table border="1" align="center">
                          
          <caption>
                              職員信息表
                          
          </caption>
                          
          <tr>
                              
          <th onclick="selectAll(this)" style="cursor:hand">全選</th>
                              
          <th>職員編號</th>
                              
          <th>職員姓名</th>
                              
          <th>職位</th>
                              
          <th>直接上司</th>
                              
          <th>入職時間</th>
                              
          <th>薪金</th>
                              
          <th>獎金</th>
                              
          <th>部門編號</th>
                              
          <th>操作</th>
                          
          </tr>
                          
          <c:forEach  var="obj" items="${requestScope.data}">
                              
          <tr>
                                  
          <td align="center"><input type="checkbox" name="${obj.empNo}"/></td>
                                  
          <td>${obj.empNo}</td>
                                  
          <td>${obj.ename}</td>
                                  
          <td>${obj.job}</td>
                                  
          <td>${obj.mgr}</td>
                                  
          <td>${obj.hireDate}</td>
                                  
          <td>${obj.sal}</td>
                                  
          <td>${obj.comm}</td>
                                  
          <td>${obj.deptno}</td>
                                  
          <td><input type="button" value="編輯"/></td>
                              
          </tr>
                          
          </c:forEach>
                          
          <tr>
                              
          <td colspan="10" align="left">
                                  總記錄數:${requestScope.rowsCount}
          &nbsp;&nbsp;&nbsp;
                                  
          <c:choose>
                                      
          <c:when test="${requestScope.pageCount <= 10}">
                                          
          <c:if test="${requestScope.pageNo != 1}">
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo - 1}"><<</a>
                                          
          </c:if>
                                          
          <c:forEach var="num" begin="0" end="${requestScope.pageCount - 1}" items="${requestScope.number}">
                                              
          <c:choose>
                                                  
          <c:when test="${requestScope.pageNo != num}">
                                                      
          <href="ServletX?model=emp&event=partitionPage&pageNo=${num}">${num}</a>
                                                  
          </c:when>
                                                  
          <c:otherwise>
                                                      
          <font color="red">${requestScope.pageNo}</font>
                                                  
          </c:otherwise>
                                              
          </c:choose>
                                          
          </c:forEach>
                                          
          <c:if test="${requestScope.pageNo != requestScope.pageCount}">
                                              
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo + 1}">>></a>
                                          
          </c:if>
                                      
          </c:when>
                                      
                                      
          <c:otherwise>
                                          
          <c:choose>
                                              
          <c:when test="${requestScope.pageNo > 3 && requestScope.pageNo < requestScope.pageCount - 7}">
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=1">1</a>
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo - 1}"><<</a>
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo - 2}">${requestScope.pageNo - 2}</a>
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo - 1}">${requestScope.pageNo - 1}</a>
                                                  
          <font color="red">${requestScope.pageNo}</font>
                                                  
          <c:forEach var="num" items="${requestScope.number}" begin="0" end="6">
                                                      
          <c:if test="${requestScope.pageNo + num <= pageCount}">
                                                          
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo + num}">${requestScope.pageNo + num}</a>
                                                      
          </c:if>
                                                  
          </c:forEach>
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo + 1}">>></a>
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageCount}">..${requestScope.pageCount}</a>
                                              
          </c:when>
                                              
                                              
          <c:when test="${requestScope.pageNo > 3 && requestScope.pageNo >= requestScope.pageCount -7 && requestScope.pageNo != requestScope.pageCount}">
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=1">1</a>
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo - 1}"><<</a>
                                                  
          <c:forEach var="numR" items="${requestScope.numberR}" begin="0">
                                                      
          <c:choose>
                                                          
          <c:when test="${requestScope.pageCount - numR != requestScope.pageNo}">
                                                              
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageCount - numR}">${requestScope.pageCount - numR}</a>
                                                          
          </c:when>
                                                          
          <c:otherwise>
                                                              
          <font color="red">${requestScope.pageNo}</font>
                                                          
          </c:otherwise>
                                                      
          </c:choose>
                                                  
          </c:forEach>
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo + 1}">>></a>
                                              
          </c:when>
                                              
                                              
          <c:when test="${requestScope.pageNo <= 3 && requestScope.pageNo > 1}">
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo - 1}"><<</a>
                                                  
          <c:forEach var="num" items="${requestScope.number}">
                                                      
          <c:choose>
                                                          
          <c:when test="${requestScope.pageNo != num}">
                                                              
          <href="ServletX?model=emp&event=partitionPage&pageNo=${num}">${num}</a>
                                                          
          </c:when>
                                                          
          <c:otherwise>
                                                              
          <font color="red">${requestScope.pageNo}</font>
                                                          
          </c:otherwise>
                                                      
          </c:choose>
                                                  
          </c:forEach>
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo + 1}">>></a>
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageCount}">..${requestScope.pageCount}</a>
                                              
          </c:when>
                                              
                                              
          <c:when test="${requestScope.pageNo == 1}">
                                                  
          <c:forEach var="num" items="${requestScope.number}">
                                                      
          <c:choose>
                                                          
          <c:when test="${requestScope.pageNo != num}">
                                                              
          <href="ServletX?model=emp&event=partitionPage&pageNo=${num}">${num}</a>
                                                          
          </c:when>
                                                          
          <c:otherwise>
                                                              
          <font color="red">${requestScope.pageNo}</font>
                                                          
          </c:otherwise>
                                                      
          </c:choose>
                                                  
          </c:forEach>
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo + 1}">>></a>
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageCount}">..${requestScope.pageCount}</a>
                                              
          </c:when>
                                              
                                              
          <c:when test="${requestScope.pageNo == requestScope.pageCount}">
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=1">1</a>
                                                  
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageNo - 1}"><<</a>
                                                  
          <c:forEach var="numR" items="${requestScope.numberR}" begin="0">
                                                      
          <c:choose>
                                                          
          <c:when test="${requestScope.pageCount - numR != requestScope.pageNo}">
                                                              
          <href="ServletX?model=emp&event=partitionPage&pageNo=${requestScope.pageCount - numR}">${requestScope.pageCount - numR}</a>
                                                          
          </c:when>
                                                          
          <c:otherwise>
                                                              
          <font color="red">${requestScope.pageNo}</font>
                                                          
          </c:otherwise>
                                                      
          </c:choose>
                                                  
          </c:forEach>
                                              
          </c:when>
                                          
          </c:choose>
                                      
          </c:otherwise>
                                  
          </c:choose>
                                  
          <input name="pageNo" type="text" size="3"/>
                                  
          <input type="button" onclick="go()" value="GO"/>
                              
          </td>
                          
          </tr>
                          
          <tr>
                              
          <td colspan="10" align="center">
                                  
          <input type="button" value="增加" onclick="addRow()"/>
                                  
          <input type="submit" value="保存" onclick="saveRow()"/>
                                  
          <input type="submit" value="刪除" onclick="deleteRow()"/>
                              
          </td>
                          
          </tr>
                      
          </table>
                  
          </form>
              
          </body>
          </html>
          3,用戶點擊相應頁面鏈接或通過文本框請求頁面時,即emp表的控制器,方法類似于用戶登錄成功后的處理,代碼如下:
          /*
           * To change this template, choose Tools | Templates
           * and open the template in the editor.
           
          */


          package controls;

          import java.io.*;
          import javax.servlet.*;
          import javax.servlet.http.*;
          import entitys.Emp;
          import routines.Translation;
          import operater.*;
          import java.util.*;

          /**
           *
           * 
          @author Administrator
           
          */

          public class EmpServlet extends HttpServlet {
             
              
          /** 
              * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
              * 
          @param request servlet request
              * 
          @param response servlet response
              
          */

              
          protected void processRequest(HttpServletRequest request, HttpServletResponse response)
              
          throws ServletException, IOException {
                  response.setContentType(
          "text/html;charset=UTF-8");
                  PrintWriter out 
          = response.getWriter();
                  
          try {
                      
          /* TODO output your page here
                      out.println("<html>");
                      out.println("<head>");
                      out.println("<title>Servlet EmpServlet</title>");  
                      out.println("</head>");
                      out.println("<body>");
                      out.println("<h1>Servlet EmpServlet at " + request.getContextPath () + "</h1>");
                      out.println("</body>");
                      out.println("</html>");
                      
          */

                  }
           finally 
                      out.close();
                  }

              }
           

              
          /** 
              * Handles the HTTP <code>GET</code> method.
              * 
          @param request servlet request
              * 
          @param response servlet response
              
          */

              
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
              
          throws ServletException, IOException {
                  String event 
          = request.getParameter("event");
                  
          if(event.equals("partitionPage")){
                      String pageNo 
          = request.getParameter("pageNo");
                      
          this.mySet(request, pageNo);
                      request.getRequestDispatcher(
          "main.jsp").forward(request, response);
                      
          return;
                  }

              }
           
              
              
          private void mySet(HttpServletRequest request, Object pageNo) {
                  OperEmp emp 
          = new OperEmp();
                  
          //向請求中存儲關于分頁的信息
                  ArrayList aryInfo = emp.getEmp(pageNo);
                  request.setAttribute(
          "data", aryInfo.get(0));
                  request.setAttribute(
          "pageNo", aryInfo.get(1));
                  request.setAttribute(
          "pageCount", aryInfo.get(2));
                  request.setAttribute(
          "rowsCount", aryInfo.get(3));
                  ArrayList aryNumber 
          = new ArrayList();
                  
          for (int i = 1; i <= 10; i++{
                      aryNumber.add(
          new Integer(i));
                  }

                  request.setAttribute(
          "number", aryNumber);
                  ArrayList aryNumberR 
          = new ArrayList();
                  
          for (int i = 9; i >=0; i--{
                      aryNumberR.add(
          new Integer(i));
                  }

                  request.setAttribute(
          "numberR", aryNumberR);
                  
          //向請求中存儲關于職位的信息
                  ArrayList aryJob = emp.getJob();
                  request.setAttribute(
          "job", aryJob);
                  
          //向請求中存儲關于部門編號的信息
                  OperDept dept = new OperDept();
                  ArrayList aryDeptno 
          = dept.getDeptno();
                  request.setAttribute(
          "deptno", aryDeptno);
              }


              
          /** 
              * Handles the HTTP <code>POST</code> method.
              * 
          @param request servlet request
              * 
          @param response servlet response
              
          */

              
          protected void doPost(HttpServletRequest request, HttpServletResponse response)
              
          throws ServletException, IOException {
                  
          this.doGet(request, response);
              }


              
          /** 
              * Returns a short description of the servlet.
              
          */

              
          public String getServletInfo() {
                  
          return "Short description";
              }

          }

          4,該類為分頁查詢代碼,用戶可隨需要改變頁面顯示的記錄行數,代碼如下:
          package operater;

          import java.sql.*;
          import entitys.Emp;
          import db.DataBase;
          import java.util.*;

          /**
           *該類用于完成對用戶信息表操作的業務邏輯
           * 
          @author 非凡DZ
           
          */

          public class OperEmp {
              
              
          private Connection con = null;
              
          private PreparedStatement pstn = null;
              
          private ResultSet rs = null;
              
          private int pageCount = 0;//記錄總頁數
              private int pageNo = 0;//記錄要前往的頁數
              private int pageRows = 6;//記錄每頁的行數
              private int rowsCount = 0;//記錄總行數
              private int i = 0;//用于控制循環次數
              
              
          /**
               * 根據請求的頁數得到相應的數據
               * 
          @param page 請求的頁碼
               * 
          @return 請求頁碼中的信息,請求頁碼及總頁數
               
          */

              
          public ArrayList getEmp(Object page){
                  
          if(page == null){
                      pageNo 
          = 1;
                  }
          else{
                      pageNo 
          = Integer.parseInt(page.toString());
                  }

                  
          if(pageNo < 1){
                      pageNo 
          = 1;
                  }

                  DataBase db 
          = new DataBase();
                  con 
          = db.getConnection();
                  String sql 
          = "select * from emp";
                  ArrayList aryInfo 
          = new ArrayList();
                  ArrayList aryEmp 
          = new ArrayList();//記錄所有
                  try {
                      pstn 
          = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                      rs 
          = pstn.executeQuery();
                      rs.last();
                      rowsCount 
          = rs.getRow();
                      pageCount 
          = (rowsCount + pageRows - 1/ pageRows;
                      
          if(pageNo > pageCount){
                          pageNo 
          = pageCount;
                      }

                      
          if(pageCount > 0){
                          rs.absolute((pageNo 
          - 1* pageRows + 1);
                      }

                      
          while(i < pageRows && !rs.isAfterLast()){
                          Emp emp 
          = new Emp();
                          emp.setEmpNo(rs.getInt(
          1));
                          emp.setEname(rs.getString(
          2));
                          emp.setJob(rs.getString(
          3));
                          emp.setMgr(rs.getInt(
          4));
                          emp.setHireDate(rs.getString(
          5));
                          emp.setSal(rs.getFloat(
          6));
                          emp.setDeptno(rs.getInt(
          7));
                          aryEmp.add(emp);
                          rs.next();
                          i
          ++;
                      }

                  }
           catch (Exception e) {
                      System.out.println(
          "分頁異常"+e.getMessage());
                  }

                  aryInfo.add(aryEmp);
                  aryInfo.add(
          new Integer(pageNo));//當前頁數
                  aryInfo.add(new Integer(pageCount));//總頁數
                  aryInfo.add(new Integer(rowsCount));//總行數
                  return aryInfo;
              }

              
              
          /**
               * 得到所有職位
               * 
          @return
               
          */

              
          public ArrayList getJob(){
                  DataBase db 
          = new DataBase();
                  con 
          = db.getConnection();
                  
          boolean flag = false;
                  String sql 
          = "select job from emp";
                  ArrayList aryJob 
          = new ArrayList();
                  
          try{
                      pstn 
          = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                      rs 
          = pstn.executeQuery();
                      
          while (rs.next()) {
                          flag 
          = false;
                          
          for (int i = 0; i < aryJob.size(); i++{
                              String job 
          = (String) aryJob.get(i);
                              
          if (job.equals(rs.getString(1))) {
                                  flag 
          = true;
                                  
          break;
                              }

                          }

                          
          if (!flag) {
                              aryJob.add(rs.getString(
          1));
                          }

                      }

                  }
          catch(Exception e){
                      System.out.println(
          "職位查詢異常"+e.getMessage());
                  }

                  
          return aryJob;
              }

          }

          以上程序中有一些代碼是用于編輯數據用的,如用于存儲職位,部門編號的集合等

          posted on 2008-04-30 17:30 非凡DZ 閱讀(4266) 評論(11)  編輯  收藏 所屬分類: J2EE

          評論

          # re: jsp分頁 2008-04-30 18:41 yuxianghong

          看了一下你寫的,在數據庫查詢時,你好象是把所有的數據都查出來了,這樣可能效率不是很好.  回復  更多評論   

          # re: jsp分頁 2008-05-03 15:01 fejay

          學習了  回復  更多評論   

          # re: jsp分頁[未登錄] 2008-05-03 20:10 jimmy

          要是上百萬條記錄呢,不是沒次都都查出來吧  回復  更多評論   

          # re: jsp分頁 2008-05-03 21:59 非凡DZ

          確實就是效率問題 每次都需要查詢所有的記錄 這個程序只是簡單的實現了下效果   回復  更多評論   

          # re: jsp分頁 2008-05-04 20:11 ky

          分頁顯示學習了,再加上分頁查詢吧。  回復  更多評論   

          # re: jsp分頁 2008-05-05 15:37 愛上對方

          暈,雖然實現了分頁,但你看你頁面代碼,這么復雜,沒有效率啊  回復  更多評論   

          # re: jsp分頁 2008-05-05 16:03 非凡DZ

          其實頁面代碼我認為還不是特別復雜,可能是這個風格的blog寬度不夠,所以初次看這個程序的代碼比較繁瑣
          分頁的時候無非就是根據每頁記錄數和總記錄數得到總的頁數,然后將總頁數分成大于10和小于10兩種情況,再分別就當前頁進行一下判斷就好了。
          我看一些朋友提到效率問題,這兩天我也是一直在想,如果真的有上千上萬條,甚至百萬條分頁,恐怕也很少有人有耐心一直翻下去,況且需要用分頁顯示的數據恐怕也沒有那么龐大吧  回復  更多評論   

          # re: jsp分頁 2008-05-14 17:14 咸魚

          @非凡DZ
          會有上千上萬條帶分頁的
          我現在開發的系統 對于上百萬條 是很平常的
          而且經常會用此查詢的。
          不要覺得不可能 很多bug都是在否定的前提下 產生。
          總覺得不可能發生 它就是那么發生了。  回復  更多評論   

          # re: jsp分頁 2008-08-16 12:54 hexiaozhen

          spring+hibernate 3.0+struts 2.0的實現過程能否發下,我想看看實現過程,謝了  回復  更多評論   

          # re: jsp分頁 2008-08-18 20:39 非凡DZ

          最近恐怕夠嗆,時間比較緊張,有時間的話會寫的  回復  更多評論   

          # re: jsp分頁[未登錄] 2008-09-16 16:32 Stephen

          這樣做太麻煩了,有沒有更合理更簡單的方法呢?比如在查詢語句上做?  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2008年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類(19)

          隨筆檔案(19)

          友情鏈接

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 双城市| 高碑店市| 巴里| 海晏县| 涟水县| 惠水县| 博乐市| 灯塔市| 赣州市| 福安市| 泰兴市| 平潭县| 繁峙县| 克什克腾旗| 河间市| 尼玛县| 太康县| 徐汇区| 彰化市| 瑞金市| 简阳市| 锡林浩特市| 两当县| 莱西市| 渭南市| 龙江县| 德庆县| 嘉荫县| 杭锦后旗| 普兰县| 博客| 和平区| 临安市| 包头市| 新余市| 宁远县| 东平县| 霍邱县| 浦城县| 江华| 长垣县|