国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > 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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
免费av在线| 伊人中文在线| www.操操操.com| av在线网页| 欧美一级久久久久久久久大| 亚洲成人在线播放| 午夜在线观看91| 久久这里精品| 国产精品日日爱| 99福利在线| 黄色国产网站在线观看| 午夜国产在线| 国产美女被遭强高潮免费网站| 日本视频在线观看一区二区三区| 免费视频中文字幕| 中文字幕第一页av| 伊人网在线免费观看| 国产有码在线| 国产黄色免费看| 国产中文字幕在线播放| 国产一级片在线| 亚洲成人av在线影院| 国产小视频在线| 国产在线麻豆精品| 亚洲免费网站在线观看| 自拍av在线| 亚洲精品手机在线| 国产真实伦在线观看| 国产一区二区三区四区尤物| 999在线视频| 国内a∨免费播放| 在线免费看黄| 国产日本在线观看| 国产原创av在线| www.91在线播放| av片在线观看永久免费| 国产福利微拍精品一区二区| 青娱乐在线视频观看| 在线免费观看黄色片| 国产www网站| 国产伦精品一区二区三区高清版禁 | 中文字幕日本在线观看| 日本不卡1区2区3区| 先锋av资源网| av免费在线观看网站| 精品电影在线| 精品国内自产拍在线视频| 国产私人尤物无码不卡| 中文字幕第一页在线| 国产精品视频流白浆免费视频| 狠狠综合久久久综合| 激情五月色综合亚洲小说| 全网国产福利在线播放| 久久香蕉一区| 黄色毛片在线看| 国产精品自产拍在线观看2019| 波多野结衣中文字幕久久| 麻豆精品传媒视频观看| 天天操天天艹| 国产黄色片中文字幕| 9999在线视频| 人人干人人插| 国产黄色在线| yjizz视频网站在线播放| 成人免费一区二区三区牛牛 | 开心婷婷激情| 免费a级人成a大片在线观看| а√最新版在线天堂| 五月综合激情在线| 精品女厕厕露p撒尿| 亚洲综合在线不卡| 成人av小说网| 99久热re在线精彩视频| 久久国产综合视频| 国产激情自拍视频| 成年网在线观看免费观看网址| 国产羞羞视频在线观看| 午夜亚洲成人| 国产精品视频流白浆免费视频| 三级小说一区| 国产三级视频| 国产69精品久久久久孕妇国产69久久 | 国产高清视频免费最新在线| 四虎成人精品在永久免费| 中文字幕不卡免费视频| 久久精品免视着国产成人| 992tv在线观看在线播放| 在线91av| 亚洲xxxxxx| 91这里只有精品| 99热最新网址| 久久精品国产亚洲a∨麻豆| 99re在线视频| 国产福利在线免费观看| 最近最好的中文字幕2019免费| 日本不卡1区2区3区| 四虎a级欧美在线观看| 91欧美在线视频| 国产精品入口麻豆免费看| 国产在线拍揄自揄拍视频| www在线视频| 青青久在线视频免费观看| 日韩在线天堂| 亚洲综合色视频在线观看| av中文在线资源| www.91在线播放| 九九热免费在线视频| 国产男女无套在线播放| 国产尤物视频在线| 国产一区二区三区不卡在线| 国产日本在线观看| 在线视频三区| 欧美韩日国产| 国产永久av在线| 国产福利免费在线观看| 在线亚洲精品自拍| www.蜜桃av| 五月婷婷丁香激情| 国产三区四区在线观看| 亚洲综合激情六月婷婷在线观看| 男人天堂亚洲| 中文字幕高清av| 中文字幕av高清| 九九热视频在线观看| 国产黄色在线观看| www.狠狠色.com| 国产日韩欧美第一页| 色吊丝av中文字幕| 午夜视频在线看| 天天草天天操| 午夜国产在线| www.91在线播放| 国产福利微拍精品一区二区| 亚洲图区综合| 国产精品伦一区二区三区视频| 日本一级理论片在线大全| 国产欧美日韩专区| 久久精品国产亚洲a∨麻豆| 国产区在线看| 久草视频国产| 亚洲欧美精品中文第三| 中文字幕免费中文| 欧美高清视频| 亚洲成人国产综合| 精品999视频| 999福利在线视频| √天堂8资源中文在线| 另类专区欧美| 在线观看国产福利视频| 四虎成人欧美精品在永久在线| 成av人免费青青久| 9色在线视频网站| 国产香蕉在线| 国产午夜电影| 精品一二三区视频| 国产精品视频福利一区二区| 久久久久久国产视频| 男人操女人免费网站| 亚洲欧美精品日韩欧美 | 在线三级av| 综合激情丁香| 中文字幕麻豆| 国产色婷婷在线| 国产私人尤物无码不卡| 中文字幕视频免费在线观看| 国产一级片麻豆| 国产精品黄页网站在线播放免费| 国产秀色在线www免费观看| 国产视频中文字幕在线观看| 中文字幕日本在线| 中文字幕视频在线观看| 国产秀色在线www免费观看| 国产视频精选在线| 国产黄色片在线观看| 99综合精品久久| 精品国产一区二区三区四区阿崩| 精精国产xxxx视频在线中文版| 亚洲一本大道| 久久综合第一页| 最新亚洲精品国自产在线观看| 国产视频97| 亚洲人成电影| 国产精品一区二区三区高清在线 | 亚洲国产精华液| 久久精品国产亚洲777| 久热免费在线视频| 久久亚洲天堂| 国产视频精选在线| jizz性欧美| 国产一级视频| 日本一二三区视频免费高清| 青青草视频在线观看| 国产乱码在线| 亚洲精品自拍区在线观看| 国产美女一区视频| 97视频在线| 天堂资源在线中文| 亚洲成人在线播放| 国产区在线观看| 国产女王在线**视频 |