亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

基于jsp+servlet實現的簡單博客系統實例(附源碼)

2024-09-05 00:22:21
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了基于jsp+servlet實現的簡單博客系統,以完整實例形式分析了基于jsp+servlet簡單博客系統的原理與相關技巧,并附帶了完整源碼供讀者下載學習,需要的朋友可以參考下

本文實例講述了基于jsp+servlet實現的簡單博客系統。分享給大家供大家參考。具體如下:

沒有用框架寫的 小博客, 代碼大量重復。

個人感覺重復代碼對于新手還是有好處的,我也是新手,見諒。

完整實例代碼點擊此處本站下載。

1. servlet

 

 
  1. /* 
  2. * To change this template, choose Tools | Templates 
  3. * and open the template in the editor. 
  4. */ 
  5. package Servlet; 
  6. import blog.BlogBean; 
  7. import blog.BlogRepositoryJDBC; 
  8. import blog.PagerUtil; 
  9. import java.io.IOException; 
  10. import java.io.PrintWriter; 
  11. import java.net.URLDecoder; 
  12. import java.util.List; 
  13. import javax.enterprise.context.RequestScoped; 
  14. import javax.enterprise.context.SessionScoped; 
  15. import javax.inject.Inject; 
  16. import javax.inject.Named; 
  17. import javax.servlet.ServletException; 
  18. import javax.servlet.annotation.WebServlet; 
  19. import javax.servlet.http.HttpServlet; 
  20. import javax.servlet.http.HttpServletRequest; 
  21. import javax.servlet.http.HttpServletResponse; 
  22. @WebServlet(name = "PageListServlet", urlPatterns = {"/page/*"""}) 
  23. public class ListAllServlet extends HttpServlet { 
  24. @Inject 
  25. private BlogRepositoryJDBC blogdao; 
  26. @Inject 
  27. private PagerUtil pagerUtil; 
  28. protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
  29. throws ServletException, IOException { 
  30. int pg; 
  31. String s = request.getRequestURI(); 
  32. String searchContent = request.getParameter("search"); 
  33. if (s.matches(request.getContextPath() + "/page/" + "//d")) { 
  34. String pgnum = s.replaceAll(request.getContextPath() + "/page/"""); 
  35. pg = Integer.parseInt(pgnum); 
  36. else if (s.matches(request.getContextPath() + "/")) { 
  37. pg = 1; 
  38. else { 
  39. getServletContext().getRequestDispatcher("/errorpage.jsp").forward(request, response); 
  40. return
  41. List<BlogBean> bloglist; 
  42. boolean isNullRequest = (searchContent == null || "".equals(searchContent)); 
  43. if (isNullRequest) { 
  44. bloglist = blogdao.getBloglist(); 
  45. else { 
  46. bloglist = blogdao.listBlogByKey(searchContent); 
  47. if (!pagerUtil.isValidPg(bloglist, pg)) { 
  48. getServletContext().getRequestDispatcher("/errorpage.jsp").forward(request, response); 
  49. return
  50. pagerUtil.fillValue(bloglist, pg); 
  51. String pageURLBase = getServletContext().getContextPath(); 
  52. String pageURLparam = isNullRequest ? "" : "?search=" + searchContent; 
  53. request.setAttribute("pageURLBase", pageURLBase); 
  54. request.setAttribute("pageURLparam", pageURLparam); 
  55. request.setAttribute("bloglist", bloglist); 
  56. getServletContext().getRequestDispatcher("/blog.jsp").forward(request, response); 
  57. @Override 
  58. protected void doGet(HttpServletRequest request, HttpServletResponse response) 
  59. throws ServletException, IOException { 
  60. processRequest(request, response); 
  61. @Override 
  62. protected void doPost(HttpServletRequest request, HttpServletResponse response) 
  63. throws ServletException, IOException { 
  64. processRequest(request, response); 
  65. @Override 
  66. public String getServletInfo() { 
  67. return "Short description"
  68. }// </editor-fold> 

2. dao

 

 
  1. package blog; 
  2. import java.sql.Connection; 
  3. import java.sql.PreparedStatement; 
  4. import java.sql.ResultSet; 
  5. import java.sql.SQLException; 
  6. import java.sql.Statement; 
  7. import java.util.ArrayList; 
  8. import java.util.Arrays; 
  9. import java.util.Date; 
  10. import java.util.HashMap; 
  11. import java.util.HashSet; 
  12. import java.util.List; 
  13. import java.util.Map; 
  14. import java.util.Set; 
  15. import java.util.logging.Level; 
  16. import java.util.logging.Logger; 
  17. import javax.annotation.PostConstruct; 
  18. import javax.annotation.Resource; 
  19. import javax.enterprise.context.ApplicationScoped; 
  20. import javax.inject.Inject; 
  21. import javax.inject.Named; 
  22. import javax.sql.DataSource; 
  23. @ApplicationScoped 
  24. @Named 
  25. public class BlogRepositoryJDBC implements BlogRepository { 
  26. @Resource(lookup = "jdbc/sample"
  27. private DataSource ds; 
  28. private ArrayList<BlogBean> bloglist; 
  29. private Set<String> tagSet; 
  30. private Set<String> categorySet; 
  31. private Map<String,Integer> dateMap; 
  32. @PostConstruct 
  33. private void init() { 
  34. refreshCache(); 
  35. @Override 
  36. public int addBlog(BlogBean blogi) { 
  37. String sql = "INSERT INTO POSTS VALUES (?,?,?,?,?)"
  38. Connection conn = null
  39. PreparedStatement ps = null
  40. int out = 0; 
  41. try { 
  42. conn = ds.getConnection(); 
  43. ps = conn.prepareStatement(sql); 
  44. ps.setString(1, blogi.getBlogTitle()); 
  45. ps.setString(2, blogi.getCategory()); 
  46. ps.setString(3, blogi.getTag()); 
  47. ps.setDate(4, new java.sql.Date(blogi.getPostDate().getTime())); 
  48. ps.setString(5, blogi.getContent()); 
  49. out = ps.executeUpdate(); 
  50. catch (SQLException ex) { 
  51. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  52. finally { 
  53. closeEverything(conn, ps, null); 
  54. refreshCache(); 
  55. return out; 
  56. @Override 
  57. public int deleteBlog(String blogName) { 
  58. String sql = "DELETE FROM POSTS WHERE HEAD = ?"
  59. Connection conn = null
  60. PreparedStatement ps = null
  61. int out = 0; 
  62. try { 
  63. conn = ds.getConnection(); 
  64. ps = conn.prepareStatement(sql); 
  65. ps.setString(1, blogName); 
  66. out = ps.executeUpdate(); 
  67. catch (SQLException ex) { 
  68. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  69. finally { 
  70. closeEverything(conn, ps, null); 
  71. refreshCache(); 
  72. return out; 
  73. @Override 
  74. public int updateBlog(BlogBean blog, String oldhead) { 
  75. String sql = "UPDATE POSTS SET HEAD=?,CATEGORY=?,TAG=?,POSTDATE=?,CONTENT=? WHERE HEAD=?"
  76. PreparedStatement ps = null
  77. Connection conn = null
  78. int out = 0; 
  79. try { 
  80. conn = ds.getConnection(); 
  81. ps = conn.prepareStatement(sql); 
  82. ps.setString(1, blog.getBlogTitle()); 
  83. ps.setString(2, blog.getCategory()); 
  84. ps.setString(3, blog.getTag()); 
  85. ps.setDate(4, new java.sql.Date(blog.getPostDate().getTime())); 
  86. ps.setString(5, blog.getContent()); 
  87. ps.setString(6, oldhead); 
  88. out = ps.executeUpdate(); 
  89. catch (SQLException ex) { 
  90. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  91. finally { 
  92. closeEverything(conn, ps, null); 
  93. refreshCache(); 
  94. return out; 
  95. @Override 
  96. public List<BlogBean> ListAllBlog() { 
  97. bloglist = new ArrayList<BlogBean>(); 
  98. BlogBean blog; 
  99. String sql = "SELECT * FROM POSTS ORDER BY POSTDATE DESC"
  100. Connection conn = null
  101. Statement ss = null
  102. ResultSet rs = null
  103. int out = 0; 
  104. try { 
  105. conn = ds.getConnection(); 
  106. ss = conn.createStatement(); 
  107. rs = ss.executeQuery(sql); 
  108. while (rs.next()) { 
  109. blog = new BlogBean(); 
  110. blog.setBlogTitle(rs.getString(1)); 
  111. blog.setCategory(rs.getString(2)); 
  112. blog.setTag(rs.getString(3)); 
  113. blog.setPostDate(rs.getDate(4)); 
  114. blog.setContent(rs.getString(5)); 
  115. bloglist.add(blog); 
  116. catch (SQLException ex) { 
  117. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  118. finally { 
  119. closeEverything(conn, ss, rs); 
  120. return bloglist; 
  121. @Override 
  122. public List listBlogByKey(String keyword) { 
  123. List<BlogBean> list = new ArrayList<BlogBean>(); 
  124. BlogBean blog; 
  125. String sql = "SELECT * FROM POSTS WHERE HEAD LIKE ? ORDER BY POSTDATE DESC"
  126. Connection conn = null
  127. PreparedStatement ps = null
  128. ResultSet rs = null
  129. int out = 0; 
  130. try { 
  131. conn = ds.getConnection(); 
  132. ps = conn.prepareStatement(sql); 
  133. ps.setString(1, "%" + keyword + "%"); 
  134. rs = ps.executeQuery(); 
  135. while (rs.next()) { 
  136. blog = new BlogBean(); 
  137. blog.setBlogTitle(rs.getString(1)); 
  138. blog.setCategory(rs.getString(2)); 
  139. blog.setTag(rs.getString(3)); 
  140. blog.setPostDate(rs.getDate(4)); 
  141. blog.setContent(rs.getString(5)); 
  142. list.add(blog); 
  143. catch (SQLException ex) { 
  144. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  145. finally { 
  146. closeEverything(conn, ps, rs); 
  147. return list; 
  148. @Override 
  149. public List listBlogByContent(String keyword) { 
  150. List<BlogBean> list = new ArrayList<BlogBean>(); 
  151. BlogBean blog; 
  152. String sql = "SELECT * FROM POSTS WHERE CONTENT LIKE ? ORDER BY POSTDATE DESC"
  153. PreparedStatement ps = null
  154. ResultSet rs = null
  155. Connection conn = null
  156. int out = 0; 
  157. try { 
  158. conn = ds.getConnection(); 
  159. ps = conn.prepareStatement(sql); 
  160. ps.setString(1, "%" + keyword + "%"); 
  161. rs = ps.executeQuery(); 
  162. while (rs.next()) { 
  163. blog = new BlogBean(); 
  164. blog.setBlogTitle(rs.getString(1)); 
  165. blog.setCategory(rs.getString(2)); 
  166. blog.setTag(rs.getString(3)); 
  167. blog.setPostDate(rs.getDate(4)); 
  168. blog.setContent(rs.getString(5)); 
  169. list.add(blog); 
  170. catch (SQLException ex) { 
  171. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  172. finally { 
  173. closeEverything(conn, ps, rs); 
  174. return list; 
  175. public Set listAllTags() { 
  176. tagSet = new HashSet<String>(); 
  177. String sql = "SELECT TAG FROM POSTS "
  178. Connection conn = null
  179. Statement ss = null
  180. ResultSet rs = null
  181. try { 
  182. conn = ds.getConnection(); 
  183. ss = conn.createStatement(); 
  184. rs = ss.executeQuery(sql); 
  185. while (rs.next()) { 
  186. String tags = rs.getString(1); 
  187. String[] Arraytags = tags.split(","); 
  188. tagSet.addAll(Arrays.asList(Arraytags)); 
  189. catch (SQLException ex) { 
  190. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  191. finally { 
  192. closeEverything(conn, ss, rs); 
  193. return tagSet; 
  194. public List listBlogByTag(String keyword) { 
  195. List<BlogBean> list = new ArrayList<BlogBean>(); 
  196. BlogBean blog; 
  197. String sql = "SELECT * FROM POSTS WHERE TAG LIKE ? ORDER BY POSTDATE DESC"
  198. Connection conn = null
  199. PreparedStatement ps = null
  200. ResultSet rs = null
  201. int out = 0; 
  202. try { 
  203. conn = ds.getConnection(); 
  204. ps = conn.prepareStatement(sql); 
  205. ps.setString(1, "%" + keyword + "%"); 
  206. rs = ps.executeQuery(); 
  207. while (rs.next()) { 
  208. blog = new BlogBean(); 
  209. blog.setBlogTitle(rs.getString(1)); 
  210. blog.setCategory(rs.getString(2)); 
  211. blog.setTag(rs.getString(3)); 
  212. blog.setPostDate(rs.getDate(4)); 
  213. blog.setContent(rs.getString(5)); 
  214. list.add(blog); 
  215. catch (SQLException ex) { 
  216. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  217. finally { 
  218. closeEverything(conn, ps, rs); 
  219. return list; 
  220. public List listBlogByDate(String keyword) { 
  221. List<BlogBean> list = new ArrayList<BlogBean>(); 
  222. BlogBean blog; 
  223. String sql = "SELECT * FROM POSTS WHERE POSTDATE = ? ORDER BY POSTDATE DESC"
  224. Connection conn = null
  225. PreparedStatement ps = null
  226. ResultSet rs = null
  227. int out = 0; 
  228. try { 
  229. conn = ds.getConnection(); 
  230. ps = conn.prepareStatement(sql); 
  231. ps.setString(1, keyword ); 
  232. rs = ps.executeQuery(); 
  233. while (rs.next()) { 
  234. blog = new BlogBean(); 
  235. blog.setBlogTitle(rs.getString(1)); 
  236. blog.setCategory(rs.getString(2)); 
  237. blog.setTag(rs.getString(3)); 
  238. blog.setPostDate(rs.getDate(4)); 
  239. blog.setContent(rs.getString(5)); 
  240. list.add(blog); 
  241. catch (SQLException ex) { 
  242. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  243. finally { 
  244. closeEverything(conn, ps, rs); 
  245. return list; 
  246. public Set listAllCategory() { 
  247. categorySet = new HashSet<String>(); 
  248. String sql = "SELECT CATEGORY FROM POSTS"
  249. Connection conn = null
  250. Statement ss = null
  251. ResultSet rs = null
  252. try { 
  253. conn = ds.getConnection(); 
  254. ss = conn.createStatement(); 
  255. rs = ss.executeQuery(sql); 
  256. while (rs.next()) { 
  257. String category = rs.getString(1); 
  258. categorySet.add(category); 
  259. catch (SQLException ex) { 
  260. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  261. finally { 
  262. closeEverything(conn, ss, rs); 
  263. return categorySet; 
  264. public List listBlogByCategory(String keyword) { 
  265. List<BlogBean> list = new ArrayList<BlogBean>(); 
  266. BlogBean blog; 
  267. String sql = "SELECT * FROM POSTS WHERE CATEGORY LIKE ?"
  268. Connection conn = null
  269. PreparedStatement ps = null
  270. ResultSet rs = null
  271. int out = 0; 
  272. try { 
  273. conn = ds.getConnection(); 
  274. ps = conn.prepareStatement(sql); 
  275. ps.setString(1, "%" + keyword + "%"); 
  276. rs = ps.executeQuery(); 
  277. while (rs.next()) { 
  278. blog = new BlogBean(); 
  279. blog.setBlogTitle(rs.getString(1)); 
  280. blog.setCategory(rs.getString(2)); 
  281. blog.setTag(rs.getString(3)); 
  282. blog.setPostDate(rs.getDate(4)); 
  283. blog.setContent(rs.getString(5)); 
  284. list.add(blog); 
  285. catch (SQLException ex) { 
  286. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  287. finally { 
  288. closeEverything(conn, ps, rs); 
  289. return list; 
  290. private void fillDateMap(){ 
  291. String sql = "SELECT POSTDATE,COUNT(POSTDATE) FROM POSTS GROUP BY POSTDATE"
  292. Connection conn = null
  293. Statement ss = null
  294. ResultSet rs = null
  295. dateMap = new HashMap<String,Integer>(); 
  296. try { 
  297. conn = ds.getConnection(); 
  298. ss = conn.createStatement(); 
  299. rs=ss.executeQuery(sql);  
  300. while (rs.next()) { 
  301. dateMap.put(rs.getString(1), rs.getInt(2)); 
  302. catch (SQLException ex) { 
  303. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  304. finally { 
  305. closeEverything(conn, ss, rs); 
  306. public void test(){ 
  307. for(Map.Entry<String,Integer> dd: dateMap.entrySet()){ 
  308. dd.getKey(); 
  309. dd.getValue(); 
  310. public void refreshCache() { 
  311. ListAllBlog(); 
  312. listAllTags(); 
  313. listAllCategory(); 
  314. fillDateMap(); 
  315. public ArrayList<BlogBean> getBloglist() { 
  316. return bloglist; 
  317. public Set<String> getTagSet() { 
  318. return tagSet; 
  319. public Set<String> getCategorySet() { 
  320. return categorySet; 
  321. public Map<String, Integer> getDateMap() { 
  322. return dateMap; 
  323. private void closeEverything(Connection conn, Statement ps, ResultSet rs) { 
  324. if (rs != null) { 
  325. try { 
  326. rs.close(); 
  327. catch (SQLException ex) { 
  328. if (ps != null) { 
  329. try { 
  330. ps.close(); 
  331. catch (SQLException ex) { 
  332. if (conn != null) { 
  333. try { 
  334. conn.close(); 
  335. catch (SQLException ex) { 

3. 運行效果截圖:

基于jsp+servlet實現的簡單博客系統實例(附源碼)

希望本文所述對大家的JSP程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av一区在线| 九九热最新视频//这里只有精品| 668精品在线视频| 亚洲国产精品网站| 国产+成+人+亚洲欧洲| 亚洲国产精品电影在线观看| 亚洲国产精品悠悠久久琪琪| 欧美日韩国产综合视频在线观看中文| 97精品久久久| 欧美一区二区三区艳史| 国产精品高潮呻吟久久av黑人| 欧美一区二区大胆人体摄影专业网站| 久久在线视频在线| 日韩av在线天堂网| 懂色av一区二区三区| 欧美性猛交xxxx乱大交蜜桃| 国产欧美日韩综合精品| 国产美女主播一区| 日韩成人在线视频观看| 精品成人国产在线观看男人呻吟| 亚洲综合视频1区| 久久免费视频网站| 日韩福利视频在线观看| 亚洲香蕉av在线一区二区三区| 国产女人18毛片水18精品| 姬川优奈aav一区二区| 欧美日韩激情小视频| 国产精品中文字幕在线| 日韩一区二区在线视频| 亚洲自拍偷拍在线| 久热精品在线视频| 欧美做受高潮电影o| 日韩电影中文字幕在线观看| 亚洲国产精品久久久久| 国产精品亚洲美女av网站| 日本欧美一级片| 欧美激情欧美激情在线五月| 日韩成人在线播放| 久久久免费高清电视剧观看| 国产午夜精品一区理论片飘花| 精品一区二区三区四区| 98精品国产自产在线观看| 色一区av在线| 97视频在线观看视频免费视频| 久久久影视精品| 国产色婷婷国产综合在线理论片a| 久久久免费av| 国产成人高潮免费观看精品| 亚洲国产成人精品一区二区| 国产精品户外野外| 亚洲精品第一页| 青青草一区二区| 性色av一区二区三区| 91精品综合久久久久久五月天| 成人有码视频在线播放| 亚洲日本中文字幕| 亚洲国产精品资源| 久久人人爽国产| 亚洲精品一区二区久| 国产性猛交xxxx免费看久久| 日本精品一区二区三区在线| 日韩中文字在线| 久久深夜福利免费观看| 久久久久久久av| 伊人伊成久久人综合网小说| 日韩av在线看| 国产精品久久77777| 日韩欧美中文字幕在线观看| 色哟哟亚洲精品一区二区| 国产97免费视| 91精品久久久久久久久中文字幕| 欧美日韩在线视频一区二区| 亚洲国产高潮在线观看| 亚州国产精品久久久| xxav国产精品美女主播| 欧美午夜激情在线| 亚洲欧美国内爽妇网| 国产精品自拍小视频| 亚洲男人的天堂网站| 亚洲国产精品悠悠久久琪琪| 日韩黄色在线免费观看| 亚洲美女又黄又爽在线观看| www.99久久热国产日韩欧美.com| 日日噜噜噜夜夜爽亚洲精品| 亚洲成人av在线播放| 最近的2019中文字幕免费一页| 亚洲风情亚aⅴ在线发布| 中日韩美女免费视频网址在线观看| 日韩欧美中文第一页| 91亚洲精品久久久久久久久久久久| 亚洲综合日韩中文字幕v在线| 国产97免费视| 欧美成人激情视频免费观看| 欧美日韩成人在线播放| 国产精品一区二区三区成人| 国产欧美婷婷中文| 中文字幕亚洲第一| 亚洲欧美一区二区精品久久久| 欧美三级xxx| 欧美老女人在线视频| 国产乱肥老妇国产一区二| 欧美日韩人人澡狠狠躁视频| 91久热免费在线视频| 国产91精品久久久久久| 日韩av在线免费播放| 97精品免费视频| 中文字幕亚洲一区二区三区| 国产精品久久久久久久久久久久久| 成人激情视频网| 欧美精品videos性欧美| 国产一区二区三区直播精品电影| 日韩欧美国产一区二区| 国内精品伊人久久| 国产午夜精品理论片a级探花| 国产精品27p| 久久精品国产亚洲精品| 91国语精品自产拍在线观看性色| 亚洲天堂网在线观看| 亚洲欧洲高清在线| 欧美综合在线第二页| 国产视频久久久久| 日韩av影院在线观看| 中文字幕久久亚洲| 成人字幕网zmw| 日韩福利视频在线观看| 国产精品亚洲片夜色在线| 91久久在线视频| 成人字幕网zmw| 国产97免费视| 国产精品视频最多的网站| 日韩av高清不卡| 欧美极品少妇xxxxⅹ免费视频| 久久成人这里只有精品| 欧美精品免费播放| 国产精品久久在线观看| 97色在线视频观看| 色偷偷亚洲男人天堂| 久久影视电视剧免费网站| 亚洲激情 国产| 欧美电影院免费观看| 国产日韩精品在线| 亚洲一区久久久| 国产午夜精品久久久| 日韩精品免费电影| 欧美大片免费观看| 久久久久久亚洲精品不卡| 亚洲欧美中文另类| 精品少妇一区二区30p| 精品久久久999| 欧美大肥婆大肥bbbbb| 黑人精品xxx一区一二区| 国产乱人伦真实精品视频| 亚洲日本成人女熟在线观看| 国产日韩av在线播放| 久久精品国产精品| 粉嫩av一区二区三区免费野| 久久99精品久久久久久琪琪| 91精品国产一区| 欧美日韩成人免费| 欧美激情视频播放| 在线看日韩欧美| 亚洲国产91色在线| 国产精品中文字幕久久久| 国产成人久久久|