日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自定义分页标签详解

發布時間:2024/9/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义分页标签详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于自定義分頁標簽的使用,我想大家都見過許多人寫過,我今天也來湊個熱鬧寫下我見到的自定義標簽的使用步驟

既然是自定義標簽那么肯定少不了類和tld文件這兩大因素,因為這兩個才能構成標簽

首先奉獻上最核心的自定義分頁標簽類的寫法PagerTag.java,前提是要繼承自TagSupport類

Java代碼??
  • <span?style="font-size:?medium;">package?com.javacrazyer.web.tag;??
  • ??
  • import?java.io.IOException;??
  • import?java.util.Enumeration;??
  • ??
  • import?javax.servlet.http.HttpServletRequest;??
  • import?javax.servlet.jsp.JspException;??
  • import?javax.servlet.jsp.tagext.TagSupport;??
  • ??
  • ??
  • /**?
  • ?*?分頁標簽處理類?
  • ?*/??
  • public?class?PagerTag?extends?TagSupport?{??
  • ????private?static?final?long?serialVersionUID?=?5729832874890369508L;??
  • ????private?String?url;?????????//請求URI??
  • ????private?int?pageSize?=?10;??//每頁要顯示的記錄數??
  • ????private?int?pageNo?=?1;?????//當前頁號??
  • ????private?int?recordCount;????//總記錄數??
  • ??
  • ????@SuppressWarnings("unchecked")??
  • ????public?int?doStartTag()?throws?JspException?{??
  • ????????int?pageCount?=?(recordCount?+?pageSize?-?1)?/?pageSize;??//計算總頁數??
  • ??????????
  • ????????//拼寫要輸出到頁面的HTML文本??
  • ????????StringBuilder?sb?=?new?StringBuilder();??
  • ??????????
  • ??????????
  • ????????sb.append("<style?type=\"text/css\">");??
  • ????????sb.append(".pagination?{padding:?5px;float:right;font-size:12px;}");??
  • ????????sb.append(".pagination?a,?.pagination?a:link,?.pagination?a:visited?{padding:2px?5px;margin:2px;border:1px?solid?#aaaadd;text-decoration:none;color:#006699;}");??
  • ????????sb.append(".pagination?a:hover,?.pagination?a:active?{border:?1px?solid?#ff0000;color:?#000;text-decoration:?none;}");??
  • ????????sb.append(".pagination?span.current?{padding:?2px?5px;margin:?2px;border:?1px?solid?#ff0000;font-weight:?bold;#ff0000;color:?#FFF;}");??
  • ????????sb.append(".pagination?span.disabled?{padding:?2px?5px;margin:?2px;border:?1px?solid?#eee;?color:?#ddd;}");??
  • ????????sb.append("</style>\r\n");??
  • ????????sb.append("<div?class=\"pagination\">\r\n");??
  • ????????if(recordCount?==?0){??
  • ????????????sb.append("<strong>沒有可顯示的項目</strong>\r\n");??
  • ????????}else{??
  • ????????????//頁號越界處理??
  • ????????????if(pageNo?>?pageCount){??????pageNo?=?pageCount;?}??
  • ????????????if(pageNo?<?1){??????pageNo?=?1;?}??
  • ??????????????
  • ????????????sb.append("<form?method=\"post\"?action=\"").append(this.url)??
  • ????????????????.append("\"?name=\"qPagerForm\">\r\n");??
  • ??????????????
  • ????????????//獲取請求中的所有參數??
  • ????????????HttpServletRequest?request?=?(HttpServletRequest)?pageContext??
  • ????????????????????.getRequest();??
  • ????????????Enumeration<String>?enumeration?=?request.getParameterNames();??
  • ????????????String?name?=?null;??//參數名??
  • ????????????String?value?=?null;?//參數值??
  • ????????????//把請求中的所有參數當作隱藏表單域??
  • ????????????while?(enumeration.hasMoreElements())?{??
  • ????????????????name?=??enumeration.nextElement();??
  • ????????????????value?=?request.getParameter(name);??
  • ????????????????//?去除頁號??
  • ????????????????if?(name.equals("pageNo"))?{??
  • ????????????????????if?(null?!=?value?&&?!"".equals(value))?{??
  • ????????????????????????pageNo?=?Integer.parseInt(value);??
  • ????????????????????}??
  • ????????????????????continue;??
  • ????????????????}??
  • ????????????????sb.append("<input?type=\"hidden\"?name=\"")??
  • ??????????????????.append(name)??
  • ??????????????????.append("\"?value=\"")??
  • ??????????????????.append(value)??
  • ??????????????????.append("\"/>\r\n");??
  • ????????????}??
  • ??????
  • ????????????//?把當前頁號設置成請求參數??
  • ????????????sb.append("<input?type=\"hidden\"?name=\"").append("pageNo")??
  • ????????????????.append("\"?value=\"").append(pageNo).append("\"/>\r\n");??
  • ??????????????
  • ????????????//?輸出統計數據??
  • ????????????sb.append("&nbsp;共<strong>").append(recordCount)??
  • ????????????????.append("</strong>項")??
  • ????????????????.append(",<strong>")??
  • ????????????????.append(pageCount)??
  • ????????????????.append("</strong>頁:&nbsp;\r\n");??
  • ??????????????
  • ????????????//上一頁處理??
  • ????????????if?(pageNo?==?1)?{??
  • ????????????????sb.append("<span?class=\"disabled\">&laquo;&nbsp;上一頁")??
  • ????????????????????.append("</span>\r\n");??
  • ????????????}?else?{??
  • ????????????????sb.append("<a?href=\"javascript:turnOverPage(")??
  • ??????????????????.append((pageNo?-?1))??
  • ??????????????????.append(")\">&laquo;&nbsp;上一頁</a>\r\n");??
  • ????????????}??
  • ??????????????
  • ????????????//如果前面頁數過多,顯示"..."??
  • ????????????int?start?=?1;???
  • ????????????if(this.pageNo?>?4){??
  • ????????????????start?=?this.pageNo?-?1;??
  • ????????????????sb.append("<a?href=\"javascript:turnOverPage(1)\">1</a>\r\n");??
  • ????????????????sb.append("<a?href=\"javascript:turnOverPage(2)\">2</a>\r\n");??
  • ????????????????sb.append("&hellip;\r\n");??
  • ????????????}??
  • ????????????//顯示當前頁附近的頁??
  • ????????????int?end?=?this.pageNo?+?1;??
  • ????????????if(end?>?pageCount){??
  • ????????????????end?=?pageCount;??
  • ????????????}??
  • ????????????for(int?i?=?start;?i?<=?end;?i++){??
  • ????????????????if(pageNo?==?i){???//當前頁號不需要超鏈接??
  • ????????????????????sb.append("<span?class=\"current\">")??
  • ????????????????????????.append(i)??
  • ????????????????????????.append("</span>\r\n");??
  • ????????????????}else{??
  • ????????????????????sb.append("<a?href=\"javascript:turnOverPage(")??
  • ????????????????????????.append(i)??
  • ????????????????????????.append(")\">")??
  • ????????????????????????.append(i)??
  • ????????????????????????.append("</a>\r\n");??
  • ????????????????}??
  • ????????????}??
  • ????????????//如果后面頁數過多,顯示"..."??
  • ????????????if(end?<?pageCount?-?2){??
  • ????????????????sb.append("&hellip;\r\n");??
  • ????????????}??
  • ????????????if(end?<?pageCount?-?1){??
  • ????????????????sb.append("<a?href=\"javascript:turnOverPage(")??
  • ????????????????.append(pageCount?-?1)??
  • ????????????????.append(")\">")??
  • ????????????????.append(pageCount?-?1)??
  • ????????????????.append("</a>\r\n");??
  • ????????????}??
  • ????????????if(end?<?pageCount){??
  • ????????????????sb.append("<a?href=\"javascript:turnOverPage(")??
  • ????????????????.append(pageCount)??
  • ????????????????.append(")\">")??
  • ????????????????.append(pageCount)??
  • ????????????????.append("</a>\r\n");???
  • ????????????}??
  • ??????????????
  • ????????????//下一頁處理??
  • ????????????if?(pageNo?==?pageCount)?{??
  • ????????????????sb.append("<span?class=\"disabled\">下一頁&nbsp;&raquo;")??
  • ????????????????????.append("</span>\r\n");??
  • ????????????}?else?{??
  • ????????????????sb.append("<a?href=\"javascript:turnOverPage(")??
  • ????????????????????.append((pageNo?+?1))??
  • ????????????????????.append(")\">下一頁&nbsp;&raquo;</a>\r\n");??
  • ????????????}??
  • ????????????sb.append("</form>\r\n");??
  • ??????
  • ????????????//?生成提交表單的JS??
  • ????????????sb.append("<script?language=\"javascript\">\r\n");??
  • ????????????sb.append("??function?turnOverPage(no){\r\n");??
  • ????????????sb.append("????if(no>").append(pageCount).append("){");??
  • ????????????sb.append("??????no=").append(pageCount).append(";}\r\n");??
  • ????????????sb.append("????if(no<1){no=1;}\r\n");??
  • ????????????sb.append("????document.qPagerForm.pageNo.value=no;\r\n");??
  • ????????????sb.append("????document.qPagerForm.submit();\r\n");??
  • ????????????sb.append("??}\r\n");??
  • ????????????sb.append("</script>\r\n");??
  • ????????}??
  • ????????sb.append("</div>\r\n");??
  • ??????????
  • ????????//把生成的HTML輸出到響應中??
  • ????????try?{??
  • ????????????pageContext.getOut().println(sb.toString());??
  • ????????}?catch?(IOException?e)?{??
  • ????????????throw?new?JspException(e);??
  • ????????}??
  • ????????return?SKIP_BODY;??//本標簽主體為空,所以直接跳過主體??
  • ????}??
  • ??
  • ????public?void?setUrl(String?url)?{??
  • ????????this.url?=?url;??
  • ????}??
  • ????public?void?setPageSize(int?pageSize)?{??
  • ????????this.pageSize?=?pageSize;??
  • ????}??
  • ????public?void?setPageNo(int?pageNo)?{??
  • ????????this.pageNo?=?pageNo;??
  • ????}??
  • ????public?void?setRecordCount(int?recordCount)?{??
  • ????????this.recordCount?=?recordCount;??
  • ????}??
  • }</span>??
  • ?WEB-INF/pager.tld的寫法

    Xml代碼??
  • <span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"?>??
  • <taglib?version="2.0"?xmlns="http://java.sun.com/xml/ns/j2ee"??
  • ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
  • ????xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee?web-jsptaglibrary_2_0.xsd">??
  • ????<tlib-version>0.9</tlib-version>??
  • ???<!--標簽頭-->??
  • ????<short-name>w</short-name>??
  • ????<!--將來在頁面用taglib引用時的uri屬性,這部分的名字可以隨便寫,只要是符合HTTP網址形式的?-->??
  • ????<uri>http://javacrazyer.iteye.com/tags/pager</uri>??
  • ??????
  • ????<!--?自定義標簽的描述信息?-->??
  • ????<tag>??
  • ????????<!--?標簽名?-->??
  • ????????<name>pager</name>??
  • ????????<!--?對應的標簽處理類全限定名?-->??
  • ????????<tag-class>com.javacrazyer.web.tag.PagerTag</tag-class>??
  • ????????<!--?標簽主體的類型?-->??
  • ????????<body-content>empty</body-content>??
  • ????????<!--?當前頁號屬性的描述信息?-->??
  • ????????<attribute>??
  • ????????????<!--?屬性名?-->??
  • ????????????<name>pageNo</name>??
  • ????????????<!--?該屬性是否為必要的?-->??
  • ????????????<required>true</required>??
  • ????????????<!--?屬性值是否可以在JSP運行時期動態產生?-->??
  • ????????????<rtexprvalue>true</rtexprvalue>??
  • ????????????<!--?屬性的數據類型?-->??
  • ????????????<type>int</type>??
  • ????????</attribute>??
  • ????????<!--?總記錄數屬性的描述信息?-->??
  • ????????<attribute>??
  • ????????????<name>recordCount</name>??
  • ????????????<required>true</required>??
  • ????????????<rtexprvalue>true</rtexprvalue>??
  • ????????????<type>int</type>??
  • ????????</attribute>??
  • ????????<!--?總頁數屬性的描述信息?-->??
  • ????????<attribute>??
  • ????????????<name>pageSize</name>??
  • ????????????<required>true</required>??
  • ????????????<rtexprvalue>true</rtexprvalue>??
  • ????????????<type>int</type>??
  • ????????</attribute>??
  • ????????<!--?分頁標簽要跳轉的URI屬性的描述信息?-->??
  • ????????<attribute>??
  • ????????????<name>url</name>??
  • ????????????<required>true</required>??
  • ????????????<rtexprvalue>true</rtexprvalue>??
  • ????????????<type>java.lang.String</type>??
  • ????????</attribute>??
  • ????</tag>??
  • </taglib></span>??
  • 好了,就上面的兩個基本要素就已經構成了完整的分頁標簽,下面就差在頁面的使用方式了

    一般的使用步驟為在JSP頁面中:

    先倒入標簽庫:<%@taglib?uri="http://javacrazyer.iteye.com/tags/pager" prefix="w"%>

    然后使用: <w:pager pageSize="${pageSize}" pageNo="${pageNo}" url="do.jsp" recordCount="${pm.recordCount}"/>

    具體使用示例,上面兩個類保持不變

    這個例子可以說非常好的純servlet項目的例子,大家今后編程如果沒有用到任何框架的話,我希望這個例子能給你帶來點啟示

    前提是導入所有需要的jar包:包括common-dbcp.jar(數據源需要用到),common-dbutils-1.2.jar(數據庫CURD操作需要用到,可取代最原始的JDBC操作),junit.jar(測試用到)以及數據庫驅動包

    關于上面的common-dbutils非常有用,尤其是在非框架項目中,后面我提供下載

    首先數據庫,這個數據庫腳本是我用navicat導出來的

    Sql代碼??
  • <span?style="font-size:?medium;">/*??
  • Navicat?MySQL?Data?Transfer??
  • Source?Host?????:?localhost:3306??
  • Source?Database?:?jstl??
  • Target?Host?????:?localhost:3306??
  • Target?Database?:?jstl??
  • Date:?2010-11-18?14:30:30??
  • */??
  • ??
  • SET?FOREIGN_KEY_CHECKS=0;??
  • --?----------------------------??
  • --?Table?structure?for?news??
  • --?----------------------------??
  • DROP?TABLE?IF?EXISTS?`news`;??
  • CREATE?TABLE?`news`?(??
  • ??`detail`?varchar(255)?DEFAULT?NULL,??
  • ??`name`?varchar(255)?DEFAULT?NULL,??
  • ??`id`?int(11)?NOT?NULL?AUTO_INCREMENT,??
  • ??PRIMARY?KEY?(`id`)??
  • )?ENGINE=InnoDB?AUTO_INCREMENT=1253?DEFAULT?CHARSET=utf8;??
  • </span>??
  • 實體類News.java

    Java代碼??
  • <span?style="font-size:?medium;">package?com.javacrazyer.domain;??
  • ??
  • public?class?News?{??
  • ????private?int?id;??
  • ????private?String?name;??
  • ????private?String?detail;??
  • ??
  • ????public?int?getId()?{??
  • ????????return?id;??
  • ????}??
  • ??
  • ????public?void?setId(int?id)?{??
  • ????????this.id?=?id;??
  • ????}??
  • ??
  • ????public?String?getName()?{??
  • ????????return?name;??
  • ????}??
  • ??
  • ????public?void?setName(String?name)?{??
  • ????????this.name?=?name;??
  • ????}??
  • ??
  • ????public?String?getDetail()?{??
  • ????????return?detail;??
  • ????}??
  • ??
  • ????public?void?setDetail(String?detail)?{??
  • ????????this.detail?=?detail;??
  • ????}??
  • ??
  • ????@Override??
  • ????public?String?toString()?{??
  • ????????return?"News?[detail="?+?detail?+?",?id="?+?id?+?",?name="?+?name?+?"]";??
  • ????}??
  • ??????
  • ??
  • }</span>??
  • ?NewsDao.java

    Java代碼??
  • <span?style="font-size:?medium;">package?com.javacrazyer.dao;??
  • ??
  • import?com.javacrazyer.common.PageModel;??
  • import?com.javacrazyer.domain.News;??
  • ??
  • public?interface?NewsDao?{??
  • ????PageModel<News>?findByPager(int?pageNo,?int?pageSize);??
  • ??
  • ????void?createNews(News?news);??
  • ??????
  • ????void?update(News?news);??
  • ??????
  • ????void?delete(int?id);??
  • ??????
  • ????News?findbyId(int?id);??
  • ??????
  • ????int?findTotalSize();??
  • ??????
  • ??
  • }</span>??
  • NewsImplDao.java

    Java代碼??
  • <span?style="font-size:?medium;">package?com.javacrazyer.daoimpl;??
  • ??
  • import?java.sql.Connection;??
  • import?java.sql.SQLException;??
  • import?java.util.List;??
  • ??
  • import?org.apache.commons.dbutils.DbUtils;??
  • import?org.apache.commons.dbutils.QueryRunner;??
  • import?org.apache.commons.dbutils.handlers.BeanHandler;??
  • import?org.apache.commons.dbutils.handlers.BeanListHandler;??
  • import?org.apache.commons.dbutils.handlers.ScalarHandler;??
  • ??
  • import?com.javacrazyer.common.ConnectionFactory;??
  • import?com.javacrazyer.common.DAOException;??
  • import?com.javacrazyer.common.PageModel;??
  • import?com.javacrazyer.dao.NewsDao;??
  • import?com.javacrazyer.domain.News;??
  • ??
  • public?class?NewsDaoImpl?implements?NewsDao?{??
  • ????private?QueryRunner?qr?=?new?QueryRunner();??
  • ????public?void?createNews(News?news)?{??
  • ??????????
  • ????????Connection?conn?=?null;??
  • ????????String?sql?=?"insert?into?news(name,detail)?"??
  • ????????????????+?"?values(?,?)";??
  • ????????Object[]?param?=?{?news.getName(),news.getDetail()?};??
  • ????????try?{??
  • ????????????conn?=?ConnectionFactory.getConn();??
  • ????????????qr.update(conn,?sql,?param);??
  • ????????}?catch?(SQLException?e)?{??
  • ????????????e.printStackTrace();??
  • ????????????throw?new?DAOException("新增新聞信息時出現異常",?e);??
  • ????????}?finally?{??
  • ????????????DbUtils.closeQuietly(conn);??
  • ????????}??
  • ??
  • ????}??
  • ??
  • ????public?PageModel<News>?findByPager(int?pageNo,?int?pageSize)?{??
  • ????????PageModel<News>?pm=new?PageModel<News>();??
  • ????????Connection?conn=null;??
  • ????????String?sql="select?*from?news?limit??,?";??
  • ????????Object[]?param={(pageNo-1)*pageSize,pageSize};??
  • ????????List<News>?cates=null;??
  • ????????int?count;??
  • ????????try?{??
  • ????????????conn=ConnectionFactory.getConn();??
  • ????????????cates=(List<News>)qr.query(conn,?sql,?new?BeanListHandler(News.class),?param);??
  • ????????????pm.setDatas(cates);??
  • ????????????pm.setRecordCount(findTotalSize());??
  • ????????}?catch?(SQLException?e)?{????????????
  • ????????????e.printStackTrace();??
  • ????????????throw?new?DAOException("分頁查詢出錯",e);??
  • ????????}finally{??
  • ????????????DbUtils.closeQuietly(conn);??
  • ????????}??
  • ????????return?pm;??
  • ????}??
  • ??
  • ????public?void?delete(int?id)?{??
  • ????????Connection?conn?=?null;??
  • ????????String?sql?=?"delete?from?news?where?id=?";??
  • ????????Object[]?param?=?{?id?};??
  • ????????try?{??
  • ????????????conn?=?ConnectionFactory.getConn();??
  • ????????????qr.update(conn,?sql,?param);??
  • ????????}?catch?(SQLException?e)?{??
  • ????????????e.printStackTrace();??
  • ????????????throw?new?DAOException("刪除新聞信息時出現異常",?e);??
  • ????????}?finally?{??
  • ????????????DbUtils.closeQuietly(conn);??
  • ????????}??
  • ????}??
  • ??
  • ????public?News?findbyId(int?id)?{??
  • ????????News?news=null;??
  • ????????Connection?conn=null;??
  • ????????String?sql="select?*?from?news?where?id=?";??
  • ????????Object[]?param={id};??
  • ????????try?{??
  • ????????????conn=ConnectionFactory.getConn();??
  • ????????????news=(News)qr.query(conn,sql,?new?BeanHandler(News.class),?param);??
  • ????????}?catch?(SQLException?e)?{??
  • ????????????e.printStackTrace();??
  • ????????????throw?new?DAOException("根據ID查詢新聞信息時出現異常",e);??
  • ????????}finally{??
  • ????????????DbUtils.closeQuietly(conn);??
  • ????????}??
  • ????????return?news;??
  • ????}??
  • ??
  • ????public?void?update(News?news)?{??
  • ????????Connection?conn=null;??
  • ????????String?sql="update?news?set?name=?,detail=??where?id=?";??
  • ????????Object[]?param={news.getName(),news.getDetail(),news.getId()};??
  • ????????try?{??
  • ????????????conn=ConnectionFactory.getConn();??
  • ????????????qr.update(conn,?sql,?param);??
  • ??????????????
  • ????????}?catch?(SQLException?e)?{??
  • ????????????e.printStackTrace();??
  • ????????????throw?new?DAOException("更新新聞信息出錯",e);??
  • ????????}finally{??
  • ????????????DbUtils.closeQuietly(conn);??
  • ????????}?????????
  • ????}??
  • ??
  • ????public?int?findTotalSize()?{??
  • ????????Connection?conn=null;??
  • ????????String?sql="select?count(id)?from?news";??
  • ????????int?count=0;??
  • ????????try?{??
  • ????????????conn=ConnectionFactory.getConn();??
  • ????????????count=((Long)qr.query(conn,sql,new?ScalarHandler())).intValue();??
  • ??????????????
  • ????????}?catch?(SQLException?e)?{??
  • ????????????e.printStackTrace();??
  • ????????????throw?new?DAOException("查詢記錄總數出錯",e);??
  • ????????}finally{??
  • ????????????DbUtils.closeQuietly(conn);??
  • ????????}??
  • ????????return?count;??
  • ????}??
  • ??
  • }</span>??
  • ?PageModel.java

    Java代碼??
  • <span?style="font-size:?medium;">package?com.javacrazyer.common;??
  • ??
  • import?java.util.List;??
  • ??
  • /**??
  • ?*?分頁組件(包含當前頁結果數據列表和總記錄數)??
  • ?*?注意,它不是持久化實體類??
  • ?*???
  • ?*/????
  • public?class?PageModel<T>?{????
  • ????private?int?recordCount;????
  • ????private?List<T>?datas;????
  • ????????
  • ????????
  • ????public?int?getRecordCount()?{????
  • ????????return?recordCount;????
  • ????}????
  • ????public?void?setRecordCount(int?recordCount)?{????
  • ????????this.recordCount?=?recordCount;????
  • ????}????
  • ????public?List<T>?getDatas()?{????
  • ????????return?datas;????
  • ????}????
  • ????public?void?setDatas(List<T>?datas)?{????
  • ????????this.datas?=?datas;????
  • ????}????
  • }??</span>??
  • ?數據庫連接工具類

    Java代碼??
  • <span?style="font-size:?medium;">package?com.javacrazyer.common;??
  • ??
  • import?java.io.IOException;??
  • import?java.sql.Connection;??
  • import?java.sql.SQLException;??
  • import?java.util.Properties;??
  • ??
  • import?javax.sql.DataSource;??
  • ??
  • import?org.apache.commons.dbcp.BasicDataSource;??
  • ??
  • /**?
  • ?*??
  • ?*?數據庫連接工廠類?
  • ?*??
  • ?*/??
  • public?class?ConnectionFactory?{??
  • ????private?static?DataSource?dss=null;??
  • ????static{??
  • ????????Properties?pr=new?Properties();??
  • ????????try?{??
  • ????????????pr.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties"));??
  • ????????}?catch?(IOException?e)?{??
  • ????????????e.printStackTrace();??
  • ????????}??
  • ????????BasicDataSource?ds=new?BasicDataSource();??
  • ????????ds.setDriverClassName(pr.getProperty("driver_name"));??
  • ????????ds.setUrl(pr.getProperty("url"));??
  • ????????ds.setUsername(pr.getProperty("username"));??
  • ????????ds.setPassword(pr.getProperty("password"));??
  • ????????dss=ds;??
  • ????}??
  • ????private?ConnectionFactory(){}??
  • ????public?static?Connection?getConn()?throws?SQLException{??
  • ????????return?dss.getConnection();??
  • ????}??
  • ??
  • }</span>??
  • ? 上面代碼用到的config.properties

    Xml代碼??
  • <span?style="font-size:?medium;">#mysql??
  • driver_name=com.mysql.jdbc.Driver??
  • url=jdbc:mysql:///jstl??
  • username=root??
  • password=root</span>??
  • DAO實例工具類,類似于Spring的BeanFactory

    Java代碼??
  • <span?style="font-size:?medium;">package?com.javacrazyer.common;??
  • ??
  • import?java.io.IOException;??
  • import?java.util.Properties;??
  • ??
  • /**?
  • ?*??
  • ?*??
  • ?*??自定義簡單工廠?
  • ?*/??
  • public?class?DAOFactory?{??
  • ????public?static?Properties?pr?=?new?Properties();??
  • ????static?{??
  • ????????try?{??
  • ????????????pr.load(Thread.currentThread().getContextClassLoader()??
  • ????????????????????.getResourceAsStream("daoname.properties"));??
  • ????????}?catch?(IOException?e)?{??
  • ????????????//?TODO?Auto-generated?catch?block??
  • ????????????e.printStackTrace();??
  • ????????}??
  • ????}??
  • ????public?static?Object?newInstance(String?name){??
  • ????????Object?obj=null;??
  • ????????String?daoImplName?=?pr.getProperty(name);??
  • ????????if(null!=daoImplName){??
  • ????????????try?{??
  • ????????????????obj=Class.forName(daoImplName).newInstance();??
  • ????????????}?catch?(InstantiationException?e)?{??
  • ????????????????//?TODO?Auto-generated?catch?block??
  • ????????????????e.printStackTrace();??
  • ????????????}?catch?(IllegalAccessException?e)?{??
  • ????????????????//?TODO?Auto-generated?catch?block??
  • ????????????????e.printStackTrace();??
  • ????????????}?catch?(ClassNotFoundException?e)?{??
  • ????????????????//?TODO?Auto-generated?catch?block??
  • ????????????????e.printStackTrace();??
  • ????????????}??
  • ????????}else{??
  • ????????????throw?new?RuntimeException("指定名稱的DAO類未找到");??
  • ????????}??
  • ????????return?obj;??
  • ????}??
  • }</span>??
  • ? 上面代碼用到的配置daoname.properties

    Xml代碼??
  • <span?style="font-size:?medium;">newsdao=com.javacrazyer.daoimpl.NewsDaoImpl??
  • coursedao=com.javacrazyer.web.tag.CourseDAOImpl??
  • teacherdao=com.javacrazyer.web.tag.TeacherDAOImpl??
  • catedao=com.javacrazyer.web.tag.CategoryDAOImpl??
  • gradao=com.javacrazyer.web.tag.GraduateDAOImpl??
  • accountdao=com.javacrazyer.web.tag.AccountDAOImpl</span>??
  • ?平時開發中常用到的常量存放類

    Java代碼??
  • <span?style="font-size:?medium;">package?com.javacrazyer.common;??
  • ??
  • import?java.util.LinkedHashMap;??
  • import?java.util.Map;??
  • ??
  • /**?
  • ?*?系統常量類?
  • ?*??
  • ?*?@author?tjitcast.com?
  • ?*/??
  • public?class?Constant?{??
  • ??????
  • ??????
  • ????/**?狀態:可用?*/??
  • ????public?static?final?int?STATUS_ACTIVE?=?1;??
  • ????/**?狀態:不可用?*/??
  • ????public?static?final?int?STATUS_INACTIVE?=?0;??
  • ??
  • ????/**?課程類型:全日制?*/??
  • ????public?static?final?int?COURSE_FULL_TIME?=?1;??
  • ????/**?課程類型:業務?*/??
  • ????public?static?final?int?COURSE_SPARE_TIME?=?2;??
  • ????/**?課程類型:免費?*/??
  • ????public?static?final?int?COURSE_FREE_TIME?=?3;??
  • ??
  • ????/**?賬號類型:超級管理員?*/??
  • ????public?static?final?int?ACCOUNT_SUPER?=?100;??
  • ????/**?賬號類型:普通管理員?*/??
  • ????public?static?final?int?ACCOUNT_COMMON?=?50;??
  • ??
  • ????/**?賬號狀態:激活?*/??
  • ????public?static?final?int?ACCOUNT_STATUS_ACTIVE?=?1;??
  • ????/**?賬號狀態:未激活?*/??
  • ????public?static?final?int?ACCOUNT_STATUS_INACTIVE?=?0;??
  • ????/**?賬號狀態:鎖定?*/??
  • ????public?static?final?int?ACCOUNT_STATUS_LOCK?=?-1;??
  • ??
  • ????/**?每頁要顯示的記錄數:10?*/??
  • ????public?static?final?int?PAGE_SIZE?=10;??
  • ??
  • ????private?static?Map<Integer,?String>?statusMap?=?new?LinkedHashMap<Integer,?String>();??
  • ??
  • ????static?{??
  • ????????//?對狀態Map進行初始化??
  • ????????statusMap.put(Integer.valueOf(STATUS_ACTIVE),?"可用");??
  • ????????statusMap.put(Integer.valueOf(STATUS_INACTIVE),?"不可用");??
  • ????}??
  • ??
  • ????public?static?Map<Integer,?String>?getStatusMap()?{??
  • ????????return?statusMap;??
  • ????}??
  • ??
  • }</span>??
  • 開發中常用到的用來判斷空值,類型轉換,集合操作等等的自定義常用工具類

    Java代碼??
  • <span?style="font-size:?medium;">/**?
  • ?*??ClassName:?DataValidateUtil.java?
  • ?*??created?on?Jul?10,?2009?
  • ?*??Copyrights?2009?www.tjicast.com?All?rights?reserved.?
  • ?*??site:?http://www.tjitcast.com?
  • ?*??email:?tjhr@csdn.net?
  • ?*??phone:?022-83726777,89721888?
  • ?*/??
  • package?com.javacrazyer.common;??
  • ??
  • import?java.text.ParseException;??
  • import?java.text.SimpleDateFormat;??
  • import?java.util.Collection;??
  • import?java.util.Date;??
  • import?java.util.Map;??
  • ??
  • /**?
  • ?*?對一些常用數據進行操作的工具類?
  • ?*??
  • ?*/??
  • public?class?DataOptUtil?{??
  • ??????
  • ??????
  • ????/**?日期長格式?*/??
  • ????public?static?final?String?DATE_PATTERN_LONG?=?"yyyy-MM-dd?HH:mm:ss";??
  • ????/**?日期格式?*/??
  • ????public?static?final?String?DATE_PATTERN?=?"yyyy-MM-dd";??
  • ??????
  • ????public?static?boolean?isNotNull(String?str){??
  • ????????if(null?!=?str?&&?!"".equals(str)){??
  • ????????????return?true;??
  • ????????}else{??
  • ????????????return?false;??
  • ????????}??
  • ????}??
  • ??????
  • ????public?static?int?parseInt(String?str){??
  • ????????if(isNotNull(str)){??
  • ????????????return?Integer.parseInt(str);??
  • ????????}else{??
  • ????????????throw?new?RuntimeException("字符串為空,不能轉換成數字");??
  • ????????}??
  • ????}??
  • ??????
  • ????public?static?Date?parseDate(String?str,?String?pattern){??
  • ????????SimpleDateFormat?sdf?=?new?SimpleDateFormat(pattern);??
  • ????????Date?date?=?null;??
  • ????????if(isNotNull(str)){??
  • ????????????try?{??
  • ????????????????date?=?sdf.parse(str);??
  • ????????????}?catch?(ParseException?e)?{??
  • ????????????????e.printStackTrace();??
  • ????????????}??
  • ????????}else{??
  • ????????????throw?new?RuntimeException("字符串為空,不能轉換成日期");??
  • ????????}??
  • ????????return?date;??
  • ????}??
  • ??????
  • ????public?static?Date?parseDate(String?str){??
  • ????????return?parseDate(str,?DataOptUtil.DATE_PATTERN);??
  • ????}??
  • ??????
  • ????public?static?Date?parseLongDate(String?str){??
  • ????????return?parseDate(str,?DataOptUtil.DATE_PATTERN_LONG);??
  • ????}??
  • ??????
  • ????public?static?String?date2String(Date?date,?String?pattern){??
  • ????????SimpleDateFormat?sdf?=?new?SimpleDateFormat(pattern);??
  • ????????return?sdf.format(date);??
  • ????}??
  • ??????
  • ????public?static?String?Date2String(Date?date){??
  • ????????return?date2String(date,?DataOptUtil.DATE_PATTERN);??
  • ????}??
  • ??????
  • ????public?static?String?Date2LongString(Date?date){??
  • ????????return?date2String(date,?DataOptUtil.DATE_PATTERN_LONG);??
  • ????}??
  • ??????
  • ????public?static?int?getSize(Collection<?>?coll){??
  • ????????int?size?=?coll?==?null???0?:?coll.size();??
  • ????????return?size;??
  • ????}??
  • ??????
  • ????public?static?int?getSize(Map<?,?>?map){??
  • ????????int?size?=?map?==?null???0?:?map.size();??
  • ????????return?size;??
  • ????}??
  • ??????
  • ????public?static?int?getLength(Object[]?obj){??
  • ????????int?length?=?0;??
  • ????????length?=?obj?==?null???0?:?obj.length;??
  • ????????return?length;??
  • ????}??
  • }</span>??
  • 還有一個自定義非受檢異常類

    Java代碼??
  • <span?style="font-size:?medium;">package?com.javacrazyer.common;??
  • ??
  • /**?
  • ?*?
  • ?*?自定義的非受檢異常?
  • ?*??
  • ?*/??
  • public?class?DAOException?extends?RuntimeException?{??
  • ??
  • ????private?static?final?long?serialVersionUID?=?1047748781772098415L;??
  • ??
  • ????public?DAOException()?{??
  • ????????super();??
  • ????}??
  • ??
  • ????public?DAOException(String?message,?Throwable?cause)?{??
  • ????????super(message,?cause);??
  • ????}??
  • ??
  • ????public?DAOException(String?message)?{??
  • ????????super(message);??
  • ????}??
  • ??
  • ????public?DAOException(Throwable?cause)?{??
  • ????????super(cause);??
  • ????}??
  • ??????
  • }??
  • </span>??
  • 頁面方面

    index.html

    Java代碼??
  • <span?style="font-size:?medium;"><html>??
  • ????<head>??
  • ?????????<meta?http-equiv="Content-Type"?content="text/html;?charset=UTF-8"?/>???
  • ????????<meta?http-equiv="refresh"?content="0;?url=do.jsp"?/>??
  • ????</head>??
  • </html></span>??
  • do.jsp

    Java代碼??
  • <span?style="font-size:?medium;"><%@?page?language="java"?import="java.util.*"?pageEncoding="UTF-8"%>??
  • <%@page?import="com.javacrazyer.common.DAOFactory"%>??
  • <%@page?import="com.javacrazyer.dao.NewsDao"%>??
  • <%@page?import="com.javacrazyer.common.PageModel"%>??
  • <%@page?import="com.javacrazyer.common.DataOptUtil"%>??
  • <%@page?import="com.javacrazyer.common.Constant"%>??
  • <%@page?import="com.javacrazyer.domain.News"%>??
  • <%??
  • NewsDao?dao=(NewsDao)DAOFactory.newInstance("newsdao");??
  • ??
  • int?pageNo?=?1;??
  • String?temp?=?request.getParameter("pageNo");??
  • if?(DataOptUtil.isNotNull(temp))?{??
  • ????pageNo?=?Integer.parseInt(temp);??
  • }??
  • int?categoryid?=?1;??
  • String?temp1?=?request.getParameter("category_id");??
  • if?(DataOptUtil.isNotNull(temp1))?{??
  • ????categoryid?=?Integer.parseInt(temp1);??
  • }??
  • PageModel<News>?pm=dao.findByPager(pageNo,Constant.PAGE_SIZE);??
  • request.setAttribute("pm",pm);??
  • request.setAttribute("pageNo",?Integer.valueOf(pageNo));??
  • request.setAttribute("pageSize",?Constant.PAGE_SIZE);??
  • request.getRequestDispatcher("/index.jsp").forward(request,response);??
  • %></span>??
  • ?index.jsp

    Java代碼??
  • <span?style="font-size:?medium;"><%@?page?language="java"?import="java.util.*"?pageEncoding="UTF-8"%>??
  • <%@taglib?uri="http://javacrazyer.iteye.com/tags/pager"?prefix="w"%>??
  • <%@taglib?uri="http://java.sun.com/jsp/jstl/core"?prefix="c"?%>??
  • <%??
  • 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>??
  • ????<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>??
  • ???<h3>新聞列表</h3><hr/>??
  • ???<table>??
  • ???<tr><td>新聞編號</td><td>新聞標題</td><td>新聞內容</td></tr>???
  • ???<c:forEach?items="${pm.datas}"?var="news">??
  • ???<tr><td>${news.id}</td><td>${news.name?}</td><td>${news.detail}</td></tr>??
  • ???</c:forEach>??
  • ???</table>??
  • ???<w:pager?pageSize="${pageSize}"?pageNo="${pageNo}"?url="do.jsp"?recordCount="${pm.recordCount}"/>??
  • ??</body>??
  • </html></span>??
  • ?實際運行出來的效果


    雖然自定義標簽使用成功了,但總不可能每次開發項目都寫下這個類和加上TLD文件吧,比較簡潔的方式就是將編譯類編譯好的class文件和tld一起打成jar包,以后直接導入到項目lib中就可以使用了

    具體步驟:將整個目錄com/javacrazyer/web/tag/PagerTag.class放到一個目錄中去,同時將META-INF拷貝到與com目錄相同的目錄下,最后將WEB-INF下的pager.tld拷貝到MET-INF下

    META-INF中的文件

    最后將com文件夾與META-INF文件選中右鍵添加到壓縮文件,選中ZIP壓縮格式


    改名為jar后綴后確定,這樣在同一目錄就會多出一個jar來了

    以后只要在需要的地方導入該分頁JAR包,并且在網頁上

    <%@taglib?uri="http://javacrazyer.iteye.com/tags/pager" prefix="w"%>

    ?<w:pager pageSize="${pageSize}" pageNo="${pageNo}" url="do.jsp"?

    • commons-dbutils-1.2.jar?(38.2 KB)
    • 下載次數: 217
    • JavaCrazyerPager5.0_GA.jar?(4.4 KB)
    • 下載次數: 269
    • JSTL_Pager.rar?(991.6 KB)
    • 描述: 完整分頁標簽項目
    • 下載次數: 542
    • 查看圖片附件

    總結

    以上是生活随笔為你收集整理的自定义分页标签详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国内久久久久 | 久久99精品久久久久久 | 国产在线精品二区 | 狠狠色噜噜狠狠狠狠2022 | 色婷婷国产精品一区在线观看 | 热re99久久精品国产99热 | 日韩精品一区二 | 91精品国产福利在线观看 | 国产在线观看你懂得 | 久久成人综合视频 | 欧美国产日韩在线观看 | 99av国产精品欲麻豆 | 亚洲免费在线播放视频 | 性色av一区二区三区在线观看 | 欧美国产精品久久久久久免费 | 色五月色开心色婷婷色丁香 | 黄色在线免费观看网址 | 久久综合久久综合久久 | 精品在线二区 | 色天天综合久久久久综合片 | 黄色av一区二区三区 | 五月丁婷婷 | 国产一卡二卡在线 | 91视频专区| 中文字幕一区二区三区四区视频 | 91日韩免费| 欧美日韩在线网站 | 最近中文字幕高清字幕免费mv | 免费午夜网站 | 天天干天天弄 | 成人av网页| 久久r精品| 国产 日韩 欧美 自拍 | 欧美日韩aaaa | 69av在线视频| 97电影在线观看 | 国产伦精品一区二区三区免费 | 久久久久在线视频 | 五月宗合网| 欧美在线1区 | 日韩精品一区二区在线观看 | 人人插人人艹 | 美女视频黄免费网站 | 天天综合网国产 | 天天躁天天狠天天透 | 欧美另类美少妇69xxxx | 国产精品毛片一区二区在线看 | 国产午夜影院 | 国产精品av免费在线观看 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 欧美性猛片,| 97视频在线观看视频免费视频 | 91精品国自产在线观看欧美 | 制服丝袜一区二区 | 色婷婷成人 | 美女网站在线观看 | 久久99久久久久久 | 久久久久亚洲精品男人的天堂 | 天天狠狠操 | 99精品视频免费看 | 欧美日比视频 | 日韩精品在线播放 | 国产不卡毛片 | 国产精品3区 | 九九久久婷婷 | 国产精品va在线播放 | 午夜久久福利视频 | 国际精品久久久久 | 国产精品女主播一区二区三区 | 国产精品久久久久久久久久久久久久 | 日韩av免费观看网站 | 亚洲九九精品 | 黄色精品视频 | 奇米影视777四色米奇影院 | 免费网站看v片在线a | 探花视频免费观看高清视频 | 欧美日韩18 | 一级一级一片免费 | 欧美日韩高清在线一区 | 天天天综合 | 国产精品视频免费看 | 看v片 | 麻豆首页 | 国产香蕉久久精品综合网 | 911久久| 日韩在线激情 | 免费碰碰 | 色综合咪咪久久网 | 91av视频免费在线观看 | 日日摸日日碰 | 精品视频在线观看 | 天天干,天天操 | 亚洲国产大片 | 中文字幕在线观看网站 | 丁香花五月 | 999ZYZ玖玖资源站永久 | 中文字幕成人在线观看 | 东方av在 | 91免费网站在线观看 | www.久久久com| 一本大道久久精品懂色aⅴ 五月婷社区 | 国产区av在线| 黄色精品网站 | 国产精品99久久久久人中文网介绍 | 中文字幕在线观看免费高清电影 | 中文字幕在线不卡国产视频 | 1区2区视频 | 国产亚洲精品成人av久久ww | 在线免费观看麻豆视频 | 美女久久久久久 | 黄色小网站在线 | 国产精品videoxxxx | 九九九九九九精品 | 日日操天天操狠狠操 | 亚洲国产精品一区二区尤物区 | 黄色精品一区二区 | 99精品国产99久久久久久97 | 免费91麻豆精品国产自产在线观看 | 日韩大片在线看 | 不卡电影一区二区三区 | 免费在线精品视频 | 狠色狠色综合久久 | av电影不卡在线 | 久久亚洲综合色 | 日韩欧美在线视频一区二区三区 | 国产在线1区 | 色综合综合 | 日韩在线看片 | 91亚洲国产成人久久精品网站 | 久久精品国产亚洲 | 精品一区av | 国产一二三区在线观看 | 99热这里只有精品免费 | 91久久久久久久 | 久久精品综合视频 | 欧美日韩一区二区在线观看 | 91av观看| 久久日韩精品 | 日韩欧美一区二区三区免费观看 | 日本精品一区二区在线观看 | 看片一区二区三区 | 国产在线黄色 | 国产一级片免费播放 | 亚洲一区二区三区四区精品 | 免费av在线网 | 国产一区二区三区在线免费观看 | 欧美三级免费 | 久久久91精品国产一区二区精品 | 免费欧美高清视频 | 中文av一区二区 | 99久久精品国产一区二区成人 | 人人爽人人 | 午夜精品久久久久久久久久久 | 国产大陆亚洲精品国产 | 999在线精品 | 午夜精品久久久久久久99无限制 | 黄色影院在线免费观看 | 婷婷天天色| 蜜桃av观看| 欧美精品国产精品 | 黄色视屏av | 成人超碰97| 国产精品不卡视频 | 日韩精品一区二区三区丰满 | 毛片久久久 | 国产美女免费观看 | 国产精品视频最多的网站 | 精品美女在线视频 | 国产精品 日韩精品 | 超碰在线9 | 国产一级片视频 | 欧美日一级片 | 国产99久久久精品 | www.天天操.com| 精品1区二区 | 欧美日韩视频网站 | 在线观看久 | 日韩精品视频在线观看网址 | 久久99精品波多结衣一区 | 在线看日韩av| 精品视频资源站 | 国产精品久久久久久爽爽爽 | 日日干狠狠操 | 国产精品久久毛片 | 日韩艹 | 国内外成人在线视频 | 亚洲精品国产第一综合99久久 | 97在线视频网站 | 麻豆视频在线播放 | 久久撸在线视频 | 在线免费国产视频 | 久在线观看| 日韩精品中文字幕在线观看 | 日韩精品中文字幕有码 | 亚洲女人av | 在线日韩视频 | 色综合久久88色综合天天人守婷 | 久久久999精品视频 国产美女免费观看 | 美女黄视频免费 | 中文字幕 婷婷 | 天天射天天爱天天干 | 日韩手机视频 | 成人国产精品久久久春色 | 久久亚洲区 | 国产精彩视频一区二区 | 成人免费看片98欧美 | 天天干夜夜夜 | 成人在线视 | 国产精品日韩在线 | 一级黄色片在线免费观看 | 国产高清在线视频 | 成人 亚洲 欧美 | 中文字幕在线乱 | 午夜视频在线观看一区二区三区 | 亚州精品在线视频 | 91看片淫黄大片在线播放 | 亚洲婷婷在线 | 美女在线免费视频 | 天天干天天射天天爽 | 激情 婷婷 | 精品一区久久 | 亚洲欧洲国产日韩精品 | 免费一级片在线观看 | 懂色av懂色av粉嫩av分享吧 | 夜添久久精品亚洲国产精品 | 人人添人人澡人人澡人人人爽 | 夜夜躁日日躁狠狠久久av | 91高清免费 | 欧美成人tv| 狠狠干夜夜操天天爽 | 香蕉视频在线播放 | 亚州精品成人 | 精品专区一区二区 | 欧美日韩在线观看一区二区 | 亚洲精品玖玖玖av在线看 | 日韩欧美在线影院 | 日本在线观看一区二区三区 | 在线 视频 一区二区 | 久草在线国产 | 日本天天操 | 精品国产网址 | 国产成人三级一区二区在线观看一 | 免费看片成年人 | 精品国产伦一区二区三区观看体验 | 24小时日本在线www免费的 | 亚洲一级免费电影 | 国产精品麻豆果冻传媒在线播放 | 日韩中文字幕91 | 国产一卡二卡四卡国 | 国产成人一级 | 天天射综合 | 99热在线观看 | 国产成人在线网站 | 天堂av在线免费 | 深爱激情五月综合 | 色欧美日韩 | 久热色超碰 | 高清av在线免费观看 | 九九免费在线观看视频 | 久久综合色8888| 欧美日韩国产精品一区二区三区 | 久久99久久99精品免视看婷婷 | 麻豆视屏 | 一区二区欧美日韩 | 国产精品美女久久久久久久久久久 | 大片网站久久 | 99超碰在线观看 | 精品日韩视频 | 黄色激情网址 | 久久久久久久久久久久av | 国产精品v欧美精品 | 久久国色夜色精品国产 | 日韩三级精品 | 国产日韩三级 | 久久精品人 | 免费观看91视频大全 | 青草视频免费观看 | 亚洲日韩中文字幕 | 福利av在线 | 亚洲国产福利视频 | 精品国模一区二区 | 免费在线播放视频 | 97网在线观看 | 日批视频在线观看免费 | 国产视频九色蝌蚪 | www好男人 | 日韩视频在线播放 | 久久美女视频 | 人操人| 亚洲国产免费看 | 精品9999| 免费一级特黄毛大片 | 免费看十八岁美女 | 久久99久久99 | 日韩久久精品一区二区三区下载 | 黄色小网站免费看 | 久久99免费观看 | 精品国产伦一区二区三区 | 激情开心站| 波多野结衣在线视频一区 | 青春草国产视频 | 91av短视频 | 黄色片网站av | 天天干天天做天天操 | 中文字幕久久精品亚洲乱码 | 黄色www免费 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 91福利社区在线观看 | 国产91成人在在线播放 | 97视频久久久 | 免费一级片久久 | 成人免费看黄 | 国产精品h在线观看 | 91精品国产欧美一区二区 | 在线日韩中文 | 亚洲精品视频在线 | 91亚洲视频在线观看 | 超碰免费公开 | 久久久久国产精品一区二区 | 国产精品成人av电影 | 四虎成人免费观看 | 九九爱免费视频在线观看 | 成人小视频在线免费观看 | 欧美另类69| 悠悠av资源片 | 五月天丁香视频 | 久久精品99国产国产 | 成人v| 久久国产精品免费一区二区三区 | 国产v在线 | 制服丝袜成人在线 | 三级黄色理论片 | 在线观看精品国产 | 国产成人福利在线 | 国产精品美女 | 永久免费精品视频 | 成人午夜免费福利 | 久久久久久久久久网站 | 久久96国产精品久久99漫画 | 好看的国产精品视频 | 国产精品免费久久久久久 | 人人玩人人爽 | 日韩性xxxx| 天天天综合网 | 久久久精品欧美 | 美女精品 | 久久综合影音 | 久久久99精品免费观看乱色 | 在线观看亚洲电影 | 高清一区二区三区 | 一级特黄aaa大片在线观看 | www久久久久| 999成人| 亚洲视频高清 | 久久亚洲电影 | 女人18毛片a级毛片一区二区 | 五月激情五月激情 | 亚洲国产精品久久久 | 国产精品成人aaaaa网站 | 成人av免费在线播放 | 国产91亚洲精品 | 亚洲精品色视频 | 日韩二区三区在线观看 | 波多野结衣一区二区三区中文字幕 | 婷婷综合网 | 人人爽人人爽av | 亚洲日韩精品欧美一区二区 | 欧美成人一区二区 | 久久免费视屏 | 国产手机在线精品 | 久草视频手机在线 | 免费看的毛片 | 色婷婷六月天 | 亚洲日本在线视频观看 | 久久欧美精品 | 在线看成人| 午夜电影av| 久久一精品 | 中文字幕av日韩 | a在线观看免费视频 | 99日韩精品 | 天天干天天干天天 | 激情综合狠狠 | 欧美视频网址 | 精品欧美日韩 | 久久精品久久综合 | 999在线视频 | 日韩一级成人av | 日韩av影视在线观看 | 伊人黄色网 | 999久久久欧美日韩黑人 | 夜夜躁日日躁 | 91插插插网站 | 国产精品成人一区二区 | 91av蜜桃| 欧美日本高清视频 | 天天操天天干天天 | 伊人久久精品久久亚洲一区 | 又爽又黄又无遮挡网站动态图 | 日日精品 | 啪嗒啪嗒免费观看完整版 | 91免费高清在线观看 | 亚洲成成品网站 | 国产精品情侣视频 | 免费亚洲黄色 | 黄色软件在线看 | 三级视频片 | 夜夜骑日日操 | 97超碰人人干 | 天天干干 | 亚洲精品久久久久久中文传媒 | 国产 在线 高清 精品 | av福利超碰网站 | av在线一二三区 | 国产精品黑丝在线观看 | 波多野结衣电影一区二区 | 91在线操 | 99国产在线观看 | 久久亚洲免费视频 | 91精品办公室少妇高潮对白 | 久久中文网 | 婷色| 欧美爽爽爽 | 在线观看自拍 | 国产亚洲精品久久19p | 日韩欧美精品在线 | 成人av在线播放网站 | av高清一区 | 91麻豆精品国产自产在线 | 天天干天天操天天入 | 久草网视频| 久久久久国产一区二区三区 | 五月天中文字幕 | 91综合久久一区二区 | 黄色成人毛片 | 亚洲一区二区三区在线看 | 91精品啪啪| 亚洲视频综合 | 97精品超碰一区二区三区 | 成人在线视频免费观看 | 狠狠色丁香久久综合网 | 色综合国产 | 99久久久免费视频 | 国产黄色片网站 | 欧美日本啪啪无遮挡网站 | 久草手机视频 | 久久久影视 | 天天曰夜夜爽 | 97人人艹 | 超碰人人国产 | 久久少妇免费视频 | 亚洲欧美成人综合 | 日韩精品免费在线观看 | 99精品国产一区二区三区麻豆 | 日本久草电影 | 97超级碰| 精品久久久久久国产偷窥 | 日本中文字幕视频 | 欧美韩日在线 | 精品毛片在线 | 欧美男男tv网站 | 日本中文字幕电影在线免费观看 | 欧美日韩高清不卡 | 又色又爽又黄高潮的免费视频 | 国产一级不卡毛片 | 蜜桃av观看 | 久久久精品视频成人 | 中文字幕在线一区二区三区 | 成人黄色av免费在线观看 | 久久久久99999| 日韩一区二区三区在线看 | 在线看一区 | 国产精品麻豆免费版 | 91片在线观看| 日韩激情第一页 | 久久亚洲精品电影 | 久久精品日产第一区二区三区乱码 | 久久免费看毛片 | 亚洲欧美日韩精品一区二区 | 日韩久久久久久久 | 亚洲精品中文在线资源 | 亚洲a资源 | 欧洲亚洲激情 | 久久国产电影 | 国产精品刺激对白麻豆99 | 欧美国产一区在线 | 日韩一区二区三区高清免费看看 | 久久99精品久久久久久秒播蜜臀 | 永久免费精品视频网站 | 久久久久伦理电影 | 国产一级h | 人成在线免费视频 | 亚洲精品美女久久久久 | 日韩av一区在线观看 | 日韩手机在线观看 | 亚洲激情精品 | 成人羞羞视频在线观看免费 | 婷婷丁香七月 | 午夜久久福利视频 | 国产免费观看视频 | 日韩高清免费电影 | 在线观看免费一级片 | 婷婷激情综合网 | 国产福利av在线 | 亚洲精品在线观看不卡 | 狠狠躁日日躁狂躁夜夜躁av | 天天操天天操天天爽 | 国产精品毛片一区二区在线 | 黄色av成人在线观看 | 久草网在线 | 激情五月六月婷婷 | 国产一区自拍视频 | 久操久 | 欧美另类z0zx| 美女福利视频 | 久草在线免费资源站 | 色婷婷www | 日韩欧美在线综合网 | 日韩视频中文字幕 | 国产伦理一区二区 | 综合色站导航 | 国产成人久久精品亚洲 | 国产成人亚洲在线电影 | 又粗又长又大又爽又黄少妇毛片 | 久久激情日本aⅴ | 麻豆视频91 | 久久亚洲影视 | 成人免费看视频 | 国产精品ⅴa有声小说 | 日本精品中文字幕 | 欧美一级专区免费大片 | 亚洲波多野结衣 | 国产一级在线免费观看 | 国产99久久久国产精品免费二区 | 国产视频一区二区三区在线 | 麻豆视频免费网站 | www.超碰97.com| 欧美吞精 | 国产美女免费观看 | 日韩中文字幕在线观看 | 激情综合网五月 | 超碰官网| 国产精品美女久久久久久网站 | 99在线精品视频在线观看 | 免费99精品国产自在在线 | 开心激情五月婷婷 | 精品国产一区在线观看 | 99久久精品免费看国产一区二区三区 | 又黄又爽又色无遮挡免费 | 久久高清免费视频 | 97热视频 | 一级片免费在线 | 成人在线免费观看视视频 | 91视频在线国产 | 亚洲少妇激情 | 久久精品视频一 | 久久久久久久国产精品影院 | 一区二区三区电影在线播 | 色片网站在线观看 | 国产视频97 | 99久久99久久精品国产片 | 免费在线观看一级片 | 韩国av在线播放 | 国产成人精品女人久久久 | 欧美日韩国产在线精品 | 欧美一区二区在线刺激视频 | 中文字幕在 | 91精品国产欧美一区二区成人 | www,黄视频 | 亚洲最新av在线网址 | 日韩精品久久久久久久电影竹菊 | 国产免费视频在线 | 国产69精品久久app免费版 | 免费美女久久99 | 日日干精品 | 亚州日韩中文字幕 | 美女在线观看av | 美女网站色 | 久久免费视频7 | 日韩精品最新在线观看 | 亚洲片在线 | 精品一区久久 | 日本韩国中文字幕 | 成人污视频在线观看 | 亚洲婷婷在线视频 | 国产精品久久久久久久久搜平片 | 国产99久久精品一区二区永久免费 | 国产一区二区不卡视频 | 国产在线欧美日韩 | 国产精品久久久av | 国产小视频福利在线 | 成人蜜桃| 美女视频黄色免费 | 亚洲一区二区精品 | 热久久精品在线 | 亚洲成人午夜av | 97在线免费观看视频 | 高清av中文字幕 | 国产在线精品区 | 香蕉在线影院 | 日韩精品一区二区免费 | 日韩欧美国产视频 | 久久久久国产a免费观看rela | 免费a级黄色毛片 | av高清免费在线 | 激情久久综合网 | www在线免费观看 | 伊人资源站 | 国产午夜精品视频 | 亚洲一区二区三区毛片 | 色激情五月 | 久久爱导航 | 91九色视频在线 | 精品久久免费看 | 五月天久久综合 | 中文字幕在线观看网站 | 天天干天天射天天操 | 日韩av午夜在线观看 | 国产999精品久久久久久 | 激情综合中文娱乐网 | 在线观看国产高清视频 | 99精品免费 | 久久一及片 | 国产精品久久久久久久久搜平片 | 日韩一区二区三区免费视频 | 国产精品区一区 | 免费久草视频 | 福利一区二区三区四区 | 91亚洲精品久久久蜜桃借种 | 欧美一级片在线播放 | 综合精品在线 | 欧美另类交人妖 | 亚洲精品国产片 | av中文字幕剧情 | 成年人在线观看免费视频 | 精品美女在线视频 | 色视频在线免费观看 | 亚洲精品在线一区二区 | 日韩夜夜爽 | 操夜夜操| 久精品在线 | 黄色一级影院 | 国产一区二区在线观看免费 | 日韩动态视频 | 五月开心综合 | 香蕉网在线观看 | 黄色在线观看网站 | 免费在线观看国产黄 | 亚洲视频免费 | 国产亚洲va综合人人澡精品 | 久久综合影音 | 97电影在线看视频 | 中文字幕一区av | 99精品国产福利在线观看免费 | 在线观看av小说 | 亚洲一级黄色片 | www.成人精品| 成人av久久| 国产私拍在线 | 正在播放国产精品 | 成人高清在线 | www色com| av播放在线 | 九九免费视频 | 天天草夜夜 | 91精品蜜桃| 成人h在线 | 国产成人精品久 | 免费男女羞羞的视频网站中文字幕 | 亚州成人av在线 | 麻豆94tv免费版 | 在线欧美中文字幕 | 国产91精品一区二区麻豆网站 | 亚洲一区不卡视频 | 久久视频在线观看免费 | 国产精品视频免费观看 | av电影免费观看 | 天天弄天天干 | 在线观看国产日韩欧美 | 国产99久久久久久免费看 | 亚洲精品资源在线 | 免费看黄20分钟 | 亚洲第一伊人 | 天天天综合网 | 亚洲韩国一区二区三区 | 国产高清精 | 在线视频免费观看 | 国产va在线 | 99精品视频免费看 | 亚洲日本国产精品 | 国产欧美精品xxxx另类 | 国产精品国产三级国产专区53 | 全久久久久久久久久久电影 | 中国一 片免费观看 | 天天操天天综合网 | av免费在线看网站 | 精品综合久久久 | 国产日韩欧美在线观看视频 | 在线97| 国产视频在线观看一区 | 久久好看免费视频 | 99视频久| 午夜av在线免费 | 久久草视频 | 四川妇女搡bbbb搡bbbb搡 | 亚洲精品一区二区三区在线观看 | h文在线观看免费 | 亚洲视频在线免费看 | 人人干狠狠操 | 日韩午夜精品 | 国产伦理久久精品久久久久_ | 在线观看黄网站 | 激情久久久久 | 色综合久久综合网 | 国产一级在线观看视频 | 久久一本综合 | 成年人国产精品 | 9999精品免费视频 | 成年美女黄网站色大片免费看 | 久久天天躁狠狠躁亚洲综合公司 | 国产精品一区二区62 | 69精品视频在线观看 | 美女视频黄的免费的 | 欧美日韩后 | 欧美日韩一区二区三区视频 | 黄色在线观看网站 | 97视频免费观看2区 亚洲视屏 | 国产人成一区二区三区影院 | 国产护士在线 | 国产婷婷| 中文字幕a在线 | 97久久精品午夜一区二区 | 婷婷丁香激情综合 | 夜夜高潮夜夜爽国产伦精品 | a在线播放 | 超黄视频网站 | 国产亚洲精品久久久久秋 | a黄色片在线观看 | 婷婷九月丁香 | 96精品高清视频在线观看软件特色 | 精品日韩视频 | 在线观看av国产 | 久草av在线播放 | 久久久久国产精品一区二区 | 国产亚洲综合性久久久影院 | 丝袜制服天堂 | 91成年人视频 | 国产精品私拍 | 国产无遮挡猛进猛出免费软件 | 亚洲三级网 | 99国产视频 | 免费看日韩片 | 久久精精品 | 日韩精品中文字幕在线 | 成人一区二区三区在线观看 | 久久蜜桃av| 五月天久久精品 | av在线进入| 亚洲国产精品影院 | 欧美精品久久久久a | 日韩在线观看视频一区二区三区 | 天天艹天天干天天 | 久草免费色站 | 国产人成精品一区二区三 | 精选久久 | 最近高清中文字幕 | 精品一区二区三区在线播放 | 在线亚洲小视频 | 黄免费在线观看 | 一级片在线 | 欧美 日韩 国产 成人 在线 | 亚洲国产精品激情在线观看 | 99综合久久| 91av色| av免费看av| 欧美日本日韩aⅴ在线视频 插插插色综合 | 亚洲视频在线免费观看 | 国产精品18久久久久久不卡孕妇 | 日本视频久久久 | 人人爽人人香蕉 | 五月综合色婷婷 | 午夜精品久久久久久久99 | 日韩精品一区二区三区不卡 | 国产看片网站 | 日韩av视屏 | 免费91在线观看 | 中文字幕电影在线 | 在线免费观看黄色 | 伊人久在线 | 国产在线色站 | 欧美激情精品久久久久 | 国产婷婷精品av在线 | 免费看十八岁美女 | 久久美女电影 | 国产精品久久久久久久久婷婷 | 国产精品久久久777 成人手机在线视频 | 中文免费在线观看 | 又黄又爽又刺激的视频 | 波多野结衣一区三区 | 在线a人v观看视频 | 日韩黄色av网站 | 香蕉视频在线免费看 | 午夜视频日本 | 伊人狠狠色 | 欧美日韩另类在线 | 91在线蜜桃臀 | 精品久久久久一区二区国产 | 99视频久久 | 国产精品精品久久久 | av看片网| 午夜精品婷婷 | 9999在线视频 | 婷婷在线不卡 | 欧美久久久久久久久中文字幕 | 亚洲精品黄色在线观看 | 亚洲精品免费看 | 久久99久久99精品免视看婷婷 | 精品一区在线看 | 美女视频黄在线观看 | 久久亚洲区 | 在线av资源 | 欧美五月婷婷 | 国产.精品.日韩.另类.中文.在线.播放 | 成人黄色电影免费观看 | 久久久久久久99精品免费观看 | 欧美一区二区三区在线播放 | 亚洲精品久久久蜜臀下载官网 | 一级黄色片在线观看 | 麻豆传媒在线视频 | 国产精品免费在线视频 | 99精品免费久久久久久久久 | 天天操狠狠操 | 久久久久女教师免费一区 | 久久久黄视频 | 欧美日韩在线免费观看视频 | 久久99在线 | 久久有精品| 91九色在线视频 | 不卡日韩av | 五月激情综合婷婷 | 日日夜夜婷婷 | 日本精品久久 | 日韩黄色大片在线观看 | 日韩免费视频线观看 | 黄色网址中文字幕 | 99精品福利视频 | 久久a免费视频 | 国产 日韩 在线 亚洲 字幕 中文 | 天天搞天天干天天色 | 久久a级片 | 五月天综合色 | 77国产精品 | 九九九免费视频 | 视频 天天草 | 麻豆91视频| 成人精品电影 | av免费看在线 | 免费的成人av | 久久精品成人热国产成 | 日本在线中文在线 | av三级在线看 | 一级一片免费观看 | 亚洲不卡在线 | 99久久久国产精品 | 久久99精品热在线观看 | 亚洲电影久久久 | 91一区在线观看 | 久久视频二区 | 麻豆一二三精选视频 | 奇米网网址| 成人小视频在线观看免费 | 超碰在线人人97 | 天天草网站 | 国产视频午夜 | 国产91精品一区二区麻豆亚洲 | 欧美精品久久久久久久久免 | 中文字幕一区二区三区久久 | 日韩在线大片 | 色wwwww| 正在播放国产91 | 亚洲欧美日韩中文在线 | 国产精品久久久久久久久久免费 | 这里有精品在线视频 | 97国产精品一区二区 | 免费亚洲一区二区 | 人成午夜视频 | a成人在线 | 99人成在线观看视频 | 亚洲精品91天天久久人人 | 99精品国产一区二区三区麻豆 | 成人a v视频 | 婷婷五天天在线视频 | 黄污在线观看 | 国产国语在线 | 免费看成人a | 国产三级精品三级在线观看 | www狠狠操 | 在线观看免费版高清版 | 天天操操 | 中文字幕在线看视频 | 二区三区视频 | 婷婷久久丁香 | 在线观看免费黄视频 | 激情视频免费观看 | 一区三区视频在线观看 | 久久人人爽人人人人片 | 91片黄在线观看 | 午夜av网站 | 日韩欧美有码在线 | 国产黄a三级三级三级三级三级 | 美女久久久 | 91中文字幕 | 天天草av| 国产精品毛片久久久久久久久久99999999 | 婷婷久久精品 | 亚洲干视频在线观看 | 婷婷亚洲综合五月天小说 | 视频在线观看一区 | 久久免费影院 | 美女视频久久黄 | 天天操天天插 | 国产视频精品久久 | 国内精品久久久 | 日韩黄视频 | www操操 | 五月开心激情 | 这里只有精品视频在线观看 | 亚洲国产精久久久久久久 | 国产免费一区二区三区最新 | 福利视频导航网址 | 81国产精品久久久久久久久久 | av资源在线看| 在线 日韩 av | 久久综合射 | 国产视频在线观看一区二区 | 国产精品麻豆99久久久久久 | 国产黄网站在线观看 | 国产精华国产精品 | 欧美另类重口 | 久久精品草 | 日韩综合一区二区三区 | 欧美性黄网官网 | 久久久久亚洲国产 | 国产视频一区二区在线 | 在线观看自拍 | 久久婷婷色综合 | 国产精品久久片 | 国产成人99久久亚洲综合精品 | 久久草草影视免费网 | 国产精品美女久久久网av | 国产999精品久久久久久绿帽 | av东方在线| 国内成人精品2018免费看 | 欧美精彩视频 | 国产在线精品一区二区 | 午夜精品久久久久久久99 | 免费色婷婷| 视频一区二区精品 | 亚洲国产日韩精品 | 国产91国语对白在线 | 国产超碰在线观看 | 亚洲国产av精品毛片鲁大师 | 综合色站 | www.午夜视频 | 免费av视屏 | 亚洲精品在线一区二区三区 | 色射色 | 亚洲综合色av | 久久污视频 | 国产精品久久久久久爽爽爽 | 在线观看国产一区二区 | 国产成人一区二区三区免费看 | 制服丝袜一区二区 | 久草网站在线观看 | 国产精品午夜av | 夜添久久精品亚洲国产精品 | 免费日韩 精品中文字幕视频在线 | 日韩视频免费播放 | 欧美日韩国产一区 | 91超国产 | www国产亚洲精品久久麻豆 | 9999精品视频 | 人人爱人人做人人爽 | 久久久免费看视频 | 五月色丁香 | 国内久久久 | 日韩有码欧美 | 在线你懂的视频 | 国产精品一区二区三区在线 | 97综合视频 | 日韩在线免费观看视频 | 久久久福利视频 | 日日色综合 | 99久久精品国产亚洲 | 日本亚洲国产 | 99久久精品免费看 | 国产老熟| 国产亚洲精品久久久久5区 成人h电影在线观看 |