<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    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 閱讀(4260) 評論(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)

    友情鏈接

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成人永久福利免费观看| 亚洲精品无码久久久久sm| 女人裸身j部免费视频无遮挡| 亚洲sss综合天堂久久久| 国产精品久久免费视频| 亚洲色欲色欲www在线播放 | 日亚毛片免费乱码不卡一区 | 国产AⅤ无码专区亚洲AV| 国产精品成人亚洲| 久久亚洲国产视频| 国产免费一区二区视频| 怡红院亚洲怡红院首页| 毛片免费全部免费观看| 久久亚洲中文无码咪咪爱| 国产jizzjizz免费看jizz| 羞羞视频免费网站入口| 亚洲第一区香蕉_国产a| 四虎影永久在线高清免费| 在线美女免费观看网站h| 青青视频免费在线| 亚洲妇女水蜜桃av网网站| 国产亚洲精品a在线观看| 久久久久国产精品免费看| 亚洲最新在线视频| 永久亚洲成a人片777777| 四虎在线视频免费观看| 久久久久高潮毛片免费全部播放 | 特级av毛片免费观看| 亚洲区视频在线观看| 亚洲AV无码专区电影在线观看| 成人永久免费福利视频网站| 日本最新免费网站| 男人进去女人爽免费视频国产| 亚洲女人初试黑人巨高清| 精品亚洲综合久久中文字幕| 午夜福利不卡片在线播放免费| 国产成人精品久久亚洲高清不卡| 亚洲色四在线视频观看| 精品国产免费观看一区| 1000部拍拍拍18勿入免费视频软件| 中文字幕无码毛片免费看|