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

首頁 > 編程 > JSP > 正文

Jsp+Servlet實現文件上傳下載 文件列表展示(二)

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

接著上一篇講:
Jsp+Servlet實現文件上傳下載(一)--文件上傳

本章來實現一下上傳文件列表展示,同時優(yōu)化了一下第一章中的代碼。

廢話少說,上代碼

mysql創(chuàng)建附件表

DROP TABLE tbl_accessory;  CREATE TABLE tbl_accessory (  id INT AUTO_INCREMENT PRIMARY KEY,  file_name VARCHAR(500),  file_size DOUBLE(10,2),  file_ext_name VARCHAR(100),  file_path VARCHAR(2000) ) ;  SELECT * FROM tbl_accessory;  DELETE FROM tbl_accessory; 

創(chuàng)建附件實體類

package entity.upload;  /**  * 附件實體類  *  * @author xusucheng  * @create 2017-12-29  **/ public class EntityAccessory {  private int id;  private String fileName;  private double fileSize;  private String file_ext_name;  private String filePath;   public int getId() {   return id;  }   public void setId(int id) {   this.id = id;  }   public String getFileName() {   return fileName;  }   public void setFileName(String fileName) {   this.fileName = fileName;  }   public double getFileSize() {   return fileSize;  }   public void setFileSize(double fileSize) {   this.fileSize = fileSize;  }   public String getFile_ext_name() {   return file_ext_name;  }   public void setFile_ext_name(String file_ext_name) {   this.file_ext_name = file_ext_name;  }   public String getFilePath() {   return filePath;  }   public void setFilePath(String filePath) {   this.filePath = filePath;  } } 

創(chuàng)建DBUtil工具類

package util;  import java.sql.*; import java.io.InputStream; import java.util.Properties;  /**  * 數據庫工具類  *  * @author xusucheng  * @create 2017-11-18  **/ public class DBUtil {  //定義鏈接所需要的變量  private static Connection con = null;  private static PreparedStatement ps = null;  private static ResultSet rs = null;   //定義鏈接數據庫所需要的參數  private static String url = "";  private static String username = "";  private static String driver="";  private static String password="";   //定義讀取配置文件所需要的變量  private static Properties pp = null;  private static InputStream fis = null;   /**   * 加載驅動   */  static {   try {    //從dbinfo.properties配置文件中讀取配置信息    pp = new Properties();    fis = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");     pp.load(fis);    url = pp.getProperty("url");    username = pp.getProperty("username");    driver=pp.getProperty("driver");    password=pp.getProperty("password");     //加載驅動    Class.forName(driver);    } catch (Exception e) {    System.out.println("驅動加載失敗!");    e.printStackTrace();   } finally {    try {     fis.close();    } catch (Exception e) {     e.printStackTrace();    }     fis = null; //垃圾回收自動處理   }   }   /**   * 得到Connection鏈接   * @return Connection   */  public static Connection getConnection() {    try {    //建立連接    con = DriverManager.getConnection(url, username, password);    } catch (Exception e) {    System.out.println("數據庫鏈接失??!");    e.printStackTrace();   }    return con;  }   /*public DBUtil(String sql){   try {    ps = getConnection().prepareStatement(sql);//準備執(zhí)行語句   } catch (Exception e) {    e.printStackTrace();   }  }   public void close() {   try {    con.close();    ps.close();   } catch (SQLException e) {    e.printStackTrace();   }  }*/   /**   * 統(tǒng)一的資源關閉函數   * @param rs   * @param ps   * @param con   */  public static void close(ResultSet rs,Statement ps, Connection con){    if(rs != null) {    try {     rs.close();    } catch (Exception e) {     e.printStackTrace();    }   }   if(ps != null) {    try {     ps.close();    } catch (Exception e) {     e.printStackTrace();    }   }   if(con != null) {    try {     con.close();    } catch (Exception e) {     e.printStackTrace();    }   }  }  } 

創(chuàng)建附件實體DAO類

package dao.upload;  import entity.upload.EntityAccessory; import util.DBUtil;  import java.math.BigDecimal; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;  /**  * 附件上傳DAO  *  * @author xusucheng  * @create 2017-12-29  **/ public class AccessoryDao {  public static void add(EntityAccessory entity) {   Connection conn = DBUtil.getConnection();   String sql = "insert into tbl_accessory(file_name,file_size,file_ext_name,file_path) values(?,?,?,?)";   try {    PreparedStatement ps = conn.prepareStatement(sql);    ps.setString(1, entity.getFileName());    ps.setDouble(2, entity.getFileSize());    ps.setString(3, entity.getFile_ext_name());    ps.setString(4, entity.getFilePath());    ps.execute();    //conn.commit();     DBUtil.close(null, ps, conn);   } catch (SQLException e) {    e.printStackTrace();   }  }   public static List<EntityAccessory> list() {   Connection conn = DBUtil.getConnection();   String sql = "select id,file_name,file_size,file_ext_name,file_path from tbl_accessory";   List<EntityAccessory> accessoryList = new ArrayList<>();   try {    PreparedStatement ps = conn.prepareStatement(sql);    ResultSet rs = ps.executeQuery();     while (rs.next()) {     EntityAccessory entity = new EntityAccessory();     entity.setId(rs.getInt("id"));     entity.setFileName(rs.getString("file_name"));     entity.setFileSize(new BigDecimal(rs.getDouble("file_size") / 1024).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());     entity.setFile_ext_name(rs.getString("file_ext_name"));     entity.setFilePath(rs.getString("file_path"));     accessoryList.add(entity);    }     DBUtil.close(rs, ps, conn);   } catch (SQLException e) {    e.printStackTrace();   }    return accessoryList;   }   public static void remove(int id) {   Connection conn = DBUtil.getConnection();   String sql = "delete from tbl_accessory where id=?";   try {    PreparedStatement ps = conn.prepareStatement(sql);    ps.setInt(1,id);    ps.execute();    //conn.commit(); mysql默認開啟了autocommit     DBUtil.close(null,ps,conn);   } catch (SQLException e) {    e.printStackTrace();   }  } } 

創(chuàng)建list.jsp列表頁面

<html> <head>  <title>上傳文件列表</title> </head> <body>  <h3>文件列表</h3> <table class="acclist_tab" border="1" bordercolor="#000000" cellspacing="0" cellpadding="2" style="border-collapse:collapse;">  <tr>   <th>文件名</th>   <th>文件大小(KB)</th>   <th>操作</th>  </tr>  <c:if test="${not empty accessoryList}">   <c:forEach items="${accessoryList}" var="acc">    <tr>     <td>${acc.fileName}</td>     <td>${acc.fileSize}</td>     <td><a href="">刪除</a></td>    </tr>   </c:forEach>  </c:if> </table> </body> </html> 

創(chuàng)建展示列表Servlet:listUploadedFilesServlet

package servlet.upload;  import dao.upload.AccessoryDao; import entity.upload.EntityAccessory;  import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List;  /**  * 返回已上傳文件列表  *  * @author xusucheng  * @create 2017-12-29  **/  @WebServlet("/listUploadedFiles") public class listUploadedFilesServlet extends HttpServlet {  @Override  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   //獲取文件列表   List<EntityAccessory> accessoryList = AccessoryDao.list();   request.setAttribute("accessoryList", accessoryList);    request.getRequestDispatcher("pages/upload/list.jsp").forward(request, response);  }   @Override  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   doPost(request, response);  } } 

增加error.jsp顯示上傳失敗信息

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head>  <title>上傳錯誤頁面</title> </head> <body>  <h3>上傳失?。?lt;/h3> <c:if test="${not empty errorMessage}">  <%--<input type="text" id="errorMessage" value="${errorMessage}" style="color:red;" disabled="disabled">--%>  <h4 style="color: red;">${errorMessage}</h4> </c:if>   </body> </html> 

優(yōu)化了第一章中的上傳控制器

package servlet.upload;  import dao.upload.AccessoryDao; import entity.upload.EntityAccessory; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadBase; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.ProgressListener; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload;  import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Calendar; import java.util.Iterator; import java.util.List; import java.util.UUID;  /**  * 處理文件上傳  *  * @author xusucheng  * @create 2017-12-27  **/ @WebServlet("/UploadServlet") public class UploadServlet extends HttpServlet {  @Override  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   //設置文件上傳基本路徑   String savePath = this.getServletContext().getRealPath("/WEB-INF/uploadFiles");   //設置臨時文件路徑   String tempPath = this.getServletContext().getRealPath("/WEB-INF/tempFiles");   File tempFile = new File(tempPath);   if (!tempFile.exists()) {    tempFile.mkdir();   }    //定義異常消息   String errorMessage = "";   //創(chuàng)建file items工廠   DiskFileItemFactory factory = new DiskFileItemFactory();   //設置緩沖區(qū)大小   factory.setSizeThreshold(1024 * 100);   //設置臨時文件路徑   factory.setRepository(tempFile);   //創(chuàng)建文件上傳處理器   ServletFileUpload upload = new ServletFileUpload(factory);   //監(jiān)聽文件上傳進度   ProgressListener progressListener = new ProgressListener() {    public void update(long pBytesRead, long pContentLength, int pItems) {     System.out.println("正在讀取文件: " + pItems);     if (pContentLength == -1) {      System.out.println("已讀?。?" + pBytesRead + " 剩余0");     } else {      System.out.println("文件總大?。?quot; + pContentLength + " 已讀取:" + pBytesRead);     }    }   };   upload.setProgressListener(progressListener);    //解決上傳文件名的中文亂碼   upload.setHeaderEncoding("UTF-8");   //判斷提交上來的數據是否是上傳表單的數據   if (!ServletFileUpload.isMultipartContent(request)) {    //按照傳統(tǒng)方式獲取數據    return;   }    //設置上傳單個文件的大小的最大值,目前是設置為1024*1024字節(jié),也就是1MB   //upload.setFileSizeMax(1024 * 1024);   //設置上傳文件總量的最大值,最大值=同時上傳的多個文件的大小的最大值的和,目前設置為10MB   upload.setSizeMax(1024 * 1024 * 10);    try {    //使用ServletFileUpload解析器解析上傳數據,解析結果返回的是一個List<FileItem>集合,每一個FileItem對應一個Form表單的輸入項    List<FileItem> items = upload.parseRequest(request);    Iterator<FileItem> iterator = items.iterator();    while (iterator.hasNext()) {     FileItem item = iterator.next();      //判斷jsp提交過來的是不是文件     if (item.isFormField()) {      errorMessage = "請?zhí)峤晃募?quot;;      break;     } else {      //文件名      String fileName = item.getName();      if (fileName == null || fileName.trim() == "") {       System.out.println("文件名為空!");      }      //處理不同瀏覽器提交的文件名帶路徑問題      fileName = fileName.substring(fileName.lastIndexOf("//") + 1);      //文件大小      Long fileSize = item.getSize();      //文件擴展名      String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1);      //判斷擴展名是否合法      if (!validExtension(fileExtension)) {       errorMessage = "上傳文件非法!";       item.delete();       break;      }      //獲得文件輸入流      InputStream in = item.getInputStream();      //得到保存文件的名稱      String saveFileName = createFileName(fileName);      //得到文件保存路徑      String realFilePath = createRealFilePath(savePath, saveFileName);      //創(chuàng)建文件輸出流      FileOutputStream out = new FileOutputStream(realFilePath);      //創(chuàng)建緩沖區(qū)      byte buffer[] = new byte[1024];      int len = 0;      while ((len = in.read(buffer)) > 0) {       //寫文件       out.write(buffer, 0, len);      }      //關閉輸入流      in.close();      //關閉輸出流      out.close();      //刪除臨時文件      item.delete();      <span style="color:#FF0000;">//將上傳文件信息保存到附件表中      EntityAccessory entity = new EntityAccessory();      entity.setFileName(fileName);      entity.setFileSize(fileSize);      entity.setFile_ext_name(fileExtension);      entity.setFilePath(realFilePath);      AccessoryDao.add(entity);</span>     }     }    } catch (FileUploadBase.FileSizeLimitExceededException e) {    e.printStackTrace();    errorMessage = "單個文件超出最大值?。。?quot;;   } catch (FileUploadBase.SizeLimitExceededException e) {    e.printStackTrace();    errorMessage = "上傳文件的總的大小超出限制的最大值?。?!";   } catch (FileUploadException e) {    e.printStackTrace();    errorMessage = "文件上傳失?。。?!";   } finally {    <span style="color:#FF0000;">if (!"".equals(errorMessage)) {     request.setAttribute("errorMessage", errorMessage);     request.getRequestDispatcher("pages/upload/error.jsp").forward(request, response);    } else {     response.sendRedirect("listUploadedFiles");    }</span>    }   }   @Override  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   doGet(request, response);  }   private boolean validExtension(String fileExtension) {   String[] exts = {"jpg", "txt", "doc", "pdf"};   for (int i = 0; i < exts.length; i++) {    if (fileExtension.equals(exts[i])) {     return true;    }    }    return false;  }   private String createFileName(String fileName) {   return UUID.randomUUID().toString() + "_" + fileName;  }   /**   * 根據基本路徑和文件名稱生成真實文件路徑,基本路徑//年//月//fileName   *   * @param basePath   * @param fileName   * @return   */  private String createRealFilePath(String basePath, String fileName) {   Calendar today = Calendar.getInstance();   String year = String.valueOf(today.get(Calendar.YEAR));   String month = String.valueOf(today.get(Calendar.MONTH) + 1);     String upPath = basePath + File.separator + year + File.separator + month + File.separator;   File uploadFolder = new File(upPath);   if (!uploadFolder.exists()) {    uploadFolder.mkdirs();   }    String realFilePath = upPath + fileName;    return realFilePath;  } } 

測試效果截圖 

Jsp,Servlet,文件上傳,文件下載

Jsp,Servlet,文件上傳,文件下載

 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JSP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
免费一级a毛片| 福利网址在线观看| 日韩av最新在线观看| 成人在线视频一区二区| 亚洲av无码专区在线播放中文| 国产成人无吗| 亚洲天堂国产精品| 九九视频精品在线| 精品久久国产一区| 黄色片视频在线免费观看| 完美搭档在线观看| 久久精品视频免费观看| 国产馆精品极品| 成人a在线观看| www红色一片_亚洲成a人片在线观看_| 精品处破女学生| 在线观看色视频| 欧美成人精品一区二区免费看片| 一起操在线视频| 欧美/亚洲一区| 综合久久2023| 国产亚洲欧美精品久久久久久| 日韩免费一二三区| 国产成人鲁色资源国产91色综| 永久www成人看片| 中文字幕中文字幕| 久久国产人妖系列| 亚洲欧美高清| 99视频高清| 激情综合五月天| 国产精品xxx在线观看| 日韩视频免费观看| aaa在线观看| 91ts人妖另类精品系列| 亚洲 欧美 日韩系列| 亚洲国产另类av| 亚洲成人av在线电影| 国产日韩欧美日韩大片| 91精品国产精品| 欧美交a欧美精品喷水| 日韩大尺度黄色| 亚洲精品国产精| 成人18视频日本| 97人妻精品一区二区三区动漫| 亚洲综合极品香蕉久久网| 欧美一区二区在线| 亚洲天堂久久久| 日韩欧美在线综合| 欧洲成人一区| 精品国产一区二区三区久久久| 精品久久久久久一区| 国内外成人激情免费视频| 能看av的网址| 97精品久久久午夜一区二区三区| 国产精品一区在线观看你懂的| 女性隐私黄www网站视频| 午夜看片在线免费| chinese偷拍一区二区三区| 综合精品久久| 亚洲精品国产偷自在线观看| 久久久久久久久免费| 国产一区二区三区久久久久久久久| 日韩精品一区二区三区视频在线观看| 99re6这里有精品热视频| 超碰97免费在线| 粉嫩av一区二区三区粉嫩| 清纯唯美一区二区三区| 亚洲av综合色区无码一区爱av| 国产主播一区二区三区| 羞羞视频在线观看一区二区| 国产精品久久一区主播| 日本一区二区视频| 免费在线观看成人| 夜夜爽视频导航| 日韩欧美在线观看一区二区| 最新国产精品精品视频| 亚洲精品18在线观看| 国产高清大尺度一区二区不卡| 欧美日韩精品一区二区视频| 激情无码人妻又粗又大| 国精产品一区一区三区mba下载| 少妇视频在线观看| 残酷重口调教一区二区| 日韩一级免费视频| 99精品视频在线免费播放| 国产又大又长又粗又黄| 在线观看视频你懂得| 嫩草伊人久久精品少妇av杨幂| 992tv成人免费视频| 久久精品人妻一区二区三区| 中文字幕线观看| 国产精品久久久久久久天堂| 精品国产一区二区三区忘忧草| 亚洲三区在线观看| 国产精品-色哟哟| 97视频在线观看免费高清完整版在线观看| 一卡二卡在线观看| 日韩美女视频网站| 精品国产制服丝袜高跟| 国产成人精品免高潮在线观看| 影音先锋男人资源站在线观看| 激情欧美日韩一区二区| 中文字幕久热精品在线视频| 青青草免费观看视频| 国产综合一区二区| 天堂av中文在线观看| 中文字幕桃花岛| 骚虎黄色影院| 18+视频在线观看| 成人51免费| 国产原创popny丨九色| 国产精品无码专区av在线播放| 精品综合久久久久久97| 日韩欧美成人免费视频| 欧美精品欧美极品欧美激情| 国产不卡的av| 色黄久久久久久| 亚欧精品一区二区三区| 久久久亚洲精华液精华液精华液| 日本亚洲欧美在线| 777777777亚洲妇女| 麻豆传媒在线观看| 亚洲综合精品一区二区| 成人黄色大片在线免费观看| 欧美日韩中文精品| 日本欧美高清| 东方欧美亚洲色图在线| 亚洲一区中文字幕永久在线| 91人成在线| 羞羞在线观看网站| 日韩极品视频在线观看| 一二三四在线观看免费高清中文在线观看| 欧美精品日韩在线| 玖玖综合伊人| 乱中年女人av三区中文字幕| 美女高潮久久久| 中文字幕网站在线观看| 最新一区二区三区| 日韩一区二区福利| 成人黄色免费短视频| 精品深夜福利视频| 欧美日韩你懂的| 羞羞视频在线观看| 亚洲国产精品久久人人爱蜜臀| 免费大片黄在线观看| 国产二区在线播放| 日韩欧美激情四射| 特黄特黄一级片| 丁香婷婷激情网| 亚洲free性xxxx护士白浆| 国产一级生活片| 97人妻精品一区二区三区视频| 精品国模一区二区三区欧美| 日韩网站中文字幕| 91欧美精品午夜性色福利在线| 香蕉成人在线| 久久99久久久精品欧美| 精品久久久久久久中文字幕| 能看av的网址| 激情久久av一区av二区av三区| 潘金莲激情呻吟欲求不满视频| 国产精品欧美性爱| 伊人久久大香线蕉av超碰| 国产成人无码一区二区三区在线| 国产调教视频在线观看| 欧美日韩精品在线一区| 久久精品视频2| 亚洲欧美电影| 亚洲狠狠丁香婷婷综合久久久| 精品国产成人亚洲午夜福利| 影音先锋人妻啪啪av资源网站| 三级黄色片网站| 韩国中文字幕在线| 亚洲欧洲日韩女同| 欧美亚洲成人精品| 国产又粗又猛又色又| 精品人伦一区二区三区蜜桃免费| 日产国产欧美视频一区精品| 55av亚洲| 午夜激情福利电影| 色婷婷av一区二区三| 日本在线视频不卡| www污污在线| 国产精品嫩草影院一区二区| 国产一二三区在线播放| 天天色天天综合网| 在线精品在线| 亚洲第一视频网站| 成人性视频网站| 欧美另类z0zx974| 国内精品伊人久久久久av影院| 天涯成人国产亚洲精品一区av| 国产成人亚洲综合a∨婷婷| 91精品一区二区三区久久久久久| 青青草国产精品视频| 亚洲精品一区二区三区四区五区| 55av亚洲| 粉嫩13p一区二区三区| 久久久午夜影院| 欧美第一视频| 国产亚洲一区二区手机在线观看| 免费久久久一本精品久久区| 久久综合中文字幕| 九色porny视频在线观看| 一级片视频免费| 亚洲一区二区中文在线| 国产麻豆精品高清在线播放| 精品产国自在拍| 欧美精品自拍偷拍| 91网页在线看| 尤物视频在线免费观看| 蜜臀av国产精品久久久久| 91在线国内视频| 亚洲一区二区三区精品中文字幕| 欧美xx视频| 欧美日在线观看| 日韩理论片网站| 中文在线永久免费观看| 高清欧美性猛交xxxx黑人猛交| 中文字幕乱码日本亚洲一区二区| 91wwwcom在线观看| 欧美高清一区| 国产小视频在线观看免费| 精品在线你懂的| 99久久久久| 亚洲18在线看污www麻豆| 正在播放一区二区三区| 色综合伊人色综合网站| 欧美另类videosbest视频| 欧美日韩视频在线第一区| 亚洲自拍偷拍网站| 99精品国产福利在线观看免费| 成人福利小视频| 日本蜜桃在线观看视频| 亚洲国产成人va在线观看麻豆| 91一区二区三区| 影音先锋中文字幕第一页| 国产精品视频区| 婷婷婷国产在线视频| 亚洲人成网站精品片在线观看| 久久国产夜色精品鲁鲁99| 亚洲精品视频在线观看网站| 黄色片视频网站| 国产免费高清视频| 韩国精品一区二区三区六区色诱| 国产精品不卡av| 91精品久久久久| 最新天堂在线视频| 国模大尺度视频| 欧美精品一区二区在线播放| 日本毛片在线观看| 纪美影视在线观看电视版使用方法| 少妇精品一区二区| 久久综合九色欧美综合狠狠| 中文字幕人成高清视频| 久草在线免费福利资源| 欧美xxxxxxxxx| 特大黑人巨人吊xxxx| 伊人精品成人久久综合软件| 国产一区二区三区| 亚洲精品v欧美精品v日韩精品| 91香蕉视频在线| av在线网址观看| 亚洲精品一区二区三区四区五区| 国产精品久久久久国产精品日日| 伊人成综合网伊人222| 久久久精品日本| 精品国产一区二区三区四区在线观看| 国产99久久久久| 欧美一级视频免费| 亚洲日本天堂| 国内精品不卡一区二区三区| 亚洲少妇久久久| 手机看片1024久久| 亚洲一区国产视频| 日韩在线播放一区二区| www在线播放| 2022国产麻豆剧果冻传媒剧情| 久久久国产精品x99av| h短视频大全在线观看| 国产精品中文字幕制服诱惑| 亚洲午夜在线观看视频在线| 成人影院www在线观看| 在线精品视频一区二区| 亚洲欧美视频在线播放| 草草在线视频| 久久久综合免费视频| 粉嫩欧美一区二区三区高清影视| 国产+成+人+亚洲欧洲自线| 欧美xxxx18性欧美| 久久亚洲精品大全| 免费看成人片| 欧美亚洲另类视频| 色琪琪综合男人的天堂aⅴ视频| 99久久99久久精品免费| 91高清国产视频| 日韩在线电影| 无码av免费一区二区三区试看| 一区二区在线免费观看视频| 青草伊人久久| 欧洲一区二区在线观看| 日本高清在线观看视频| 免费一级欧美在线大片| 在线91免费看| 亚洲精品自产拍在线观看| 麻豆精品国产免费| 欧美色图影院| 日韩一区二区免费视频| 欧美女同网站| 欧洲猛交xxxx乱大交3| 骚视频在线观看| 欧美xxxxx在线视频| 国产免费久久精品| 色综合久久久久久久久| 91免费版在线看| 91豆麻精品91久久久久久| 色中色综合成人| 男人添女荫道口女人有什么感觉| 国产人妻人伦精品| 欧美一区二区三区爽爽爽| 国产一区清纯| 亚洲成人av免费在线观看| 韩日欧美一区| 国产成人1区| 国产亚洲精品资源在线26u| 色av中文字幕一区| av资源中文在线| 国产精品亚洲视频|