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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

使用Struts2,Hibernate和MySQL BLOB开发个人迷你相册应用程序–第1部分

發布時間:2023/12/3 数据库 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Struts2,Hibernate和MySQL BLOB开发个人迷你相册应用程序–第1部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述:

在本研討會中,我們將開發一個Web應用程序,可用于創建漂亮的照片庫。 您可以將其托管在Web服務器中,也可以在自己的PC中使用以維護和管理照片集。 使用本教程,您將能夠了解與Struts2和Hibernate相關的以下重要內容:

  • 如何將Struts2框架與Hibernate集成
  • 如何在Struts2中上傳照片或文件
  • 如何在MySQL BLOB字段之間動態上傳/下載照片
  • 如何在Struts2中將參數從一個動作動態傳遞給另一個動作

在本教程的第1部分中,我們將開發管理面板。 管理面板將用于創建相冊并將照片上傳到相冊。 在第2部分中,我們將創建前端主Web應用程序,該應用程序將按管理面板中添加的相冊顯示照片。

使用的工具:

  • 面向Web開發人員的Eclipse Indigo Java EE IDE
  • Struts2
  • 休眠3
  • Hibernate Tools Eclipse插件版本3.5.1
  • mysql JDBC jar(mysql-connector-java-5.1.23)
  • 雄貓7
  • 步驟1:為照片庫應用程序準備數據庫MySQL

    我們將使用MySQL數據庫。 Belw是用于您創建數據庫表的腳本。 使用的數據庫名稱是'tctalk_apps_photoalbum'。 但是,您可以創建任何數據庫名稱。 只要記住您需要在Hibernate配置文件中更改數據庫名稱即可。 以下是兩個表Album和phototbl的SQL。

    CREATE TABLE IF NOT EXISTS `album` (`albumid` INT(4) NOT NULL AUTO_INCREMENT,`albumname` VARCHAR(55) NOT NULL,`albumdesc` text NOT NULL,`albumcreatedate` DATE NOT NULL,PRIMARY KEY (`albumid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;CREATE TABLE IF NOT EXISTS `phototbl` (`photoid` INT(4) NOT NULL AUTO_INCREMENT,`albumid` INT(4) NOT NULL,`phototitle` VARCHAR(255) NOT NULL,`photoname` VARCHAR(255) NOT NULL,`imgcontenttype` VARCHAR(255) NOT NULL,`photocreatedate` datetime NOT NULL,`photodata` longblob NOT NULL,PRIMARY KEY (`photoid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    步驟2:在Java源代碼中創建包

    在Eclipse中創建動態Web項目之后,在java src端創建軟件包。 請記住,包com.tctalk.apps.album.db.xxx包含所有Java和其他文件,可在數據庫/休眠端使用,而com.tctalk.apps.album.web.xxx將具有所有使用struts2的表示層的Java文件。框架。

    Businessobject將使所有BO類都與表映射。 Dao將具有DAO類以使用Hibernate調用數據庫。 Hbm將具有* .hbm.xml文件,該文件具有表字段和表Java的映射。 實用程序將具有各種實用程序類。 動作將具有Struts2框架的所有動作類。 委托將把委托類作為UI層和DB層之間的橋梁。 表單將具有與UI字段相對應的POJO(普通Java對象)。 Hibernate.cfg.xml具有hibernate配置文件,以具有數據庫連接信息以連接到數據庫。 Struts.xml具有Struts配置數據。

    步驟3:將jar文件復制到lib文件夾中

    您將需要從Tomcat安裝目錄中獲取的servlet-api.jar文件。 我的Tomcat位于C:\ Java \ Tomcat \ tomcat7文件夾中。

    步驟4:將Struts 2支持添加到我們的應用中

    我們的應用程序中已經具有支持Struts2所需的jar文件。 現在是時候包括Struts2.xml并將引用放在web.xml中,以便讓Tomcat知道這一點。

    Web.xml

    <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" 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 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>PersonalPhotoAlbumApp</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping><filter-name>struts2</filter-name><url-pattern>*.action</url-pattern> </filter-mapping> </web-app>

    Struts.xml

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><constant name="struts.enable.DynamicMethodInvocation" value="false" /><constant name="struts.devMode" value="false" /><package name="default" extends="struts-default" namespace="/"><result-types><result-type name="imageResult" class="com.tctalk.apps.album.web.actions.CustomPhotoResult" /></result-types><default-action-ref name="index" /><action name="index"><result>index.jsp</result></action><action name="admin"><result name="success" type="redirectAction">listAlbumAdmn</result></action><action name="listAlbumAdmn" class="com.tctalk.apps.album.web.actions.PhotoAlbumAdminAction" method="getAllAlbumList" ><result name="success">/WEB-INF/admin/jsp/showalbums.jsp</result></action><action name="addAlbumAdmn" class ="com.tctalk.apps.album.web.actions.PhotoAlbumAdminAction" method="addAlbumToCollection" ><result name="input">listAlbumAdmn</result><result name="success" type="redirectAction">listAlbumAdmn</result></action><action name="delAlbumAdmn" class ="com.tctalk.apps.album.web.actions.PhotoAlbumAdminAction" method="delAlbumFromCollection" ><result name="success" type="redirectAction">listAlbumAdmn</result></action><action name="listPhotosByAlbumAdmn" class="com.tctalk.apps.album.web.actions.PhotoAlbumAdminAction" method="listAllPhotos" ><result name="success">/WEB-INF/admin/jsp/showphotos.jsp</result></action><action name="addPhotoAcion" class ="com.tctalk.apps.album.web.actions.PhotoAlbumAdminAction" method="uploadPhotoToAlbum" ><interceptor-ref name="exception"/><interceptor-ref name="i18n"/><interceptor-ref name="fileUpload"><param name="allowedTypes">image/x-png,image/png,image/gif,image/jpeg,image/pjpeg</param></interceptor-ref> <interceptor-ref name="params"><param name="excludeParams">dojo\..*,^struts\..*</param></interceptor-ref><interceptor-ref name="validation"><param name="excludeMethods">input,back,cancel,browse</param></interceptor-ref><interceptor-ref name="workflow"><param name="excludeMethods">input,back,cancel,browse</param></interceptor-ref><result name="success" type="redirectAction"><param name="actionName">listPhotosByAlbumAdmn</param><param name="albumid">${albumid}</param></result><result name="input">/WEB-INF/admin/jsp/showphotos.jsp</result></action><action name="delPhotoFrmAlbumAdmn" class ="com.tctalk.apps.album.web.actions.PhotoAlbumAdminAction" method="delPhoto" ><result name="success" type="redirectAction"><param name="actionName">listPhotosByAlbumAdmn</param><param name="albumid">${albumid}</param></result></action><action name="showPhotoAction" class="com.tctalk.apps.album.web.actions.PhotoAlbumAdminAction" method="showPhoto"><result name="success" type="imageResult"/></action></package></struts>

    步驟5:將Hibernate支持添加到我們的相冊應用程序

    要使用hibernate,我們已經有一個不錯的分步教程,它顯示了如何在Eclipse中使用Hibernate插件自動生成與數據庫表相對應的hbm和java文件。 查看教程– http://www.techcubetalk.com/2013/04/step-by-step-auto-code-generation-for-pojo-domain-java-classes-and-hbm-files-using-elipse-休眠插件/

  • 使用數據庫連接信息創建hibernate.cfg.xml以連接到數據庫
  • 使用插件創建POJO類,并將其保存在與表相對應的包中。 在我們的應用程序中,我們將使用兩個表相冊和phototbl,因此我們有兩個POJO類。
  • 然后添加與上述步驟中創建的兩個POJO類相對應的hbm文件
  • 接下來,我們將添加HibernateUtils.java,以便在我們的應用程序中輕松處理休眠會話。 同樣在同一個包中,我們保留一個常量文件,以保留我們項目中的所有常量。
  • 現在,我們將添加DAO類,該類將具有與數據庫交互的所有方法。
  • ListgetAllPhotoAlbums()–從數據庫返回所有相冊的列表
  • boolean addAlbum(AlbumBO album)–這會將一個專輯添加到數據庫
  • boolean delAlbum(int albumId)–刪除相冊以及該相冊下的所有照片
  • ListgetAllPhotosFromAlbum(int albumid)–根據相冊ID返回相冊中的所有照片
  • boolean addPhotoToAlbum(PhototblBO photo)–將照片對象添加到相冊
  • boolean delPhotoFromAlbum(int photoid)–從相冊中刪除照片
  • ListgetPhoto(int photoid)–返回要顯示在頁面中的照片對象
  • hibernate.cfg.xml

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration><session-factory><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/tctalk_apps_photoalbum</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password"></property><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="show_sql">true</property><mapping resource="com/tctalk/apps/album/db/hbm/Album.hbm.xml" /><mapping resource="com/tctalk/apps/album/db/hbm/Phototbl.hbm.xml" /></session-factory> </hibernate-configuration>

    相冊BO.java

    package com.tctalk.apps.album.db.businessobjects; // Generated Apr 22, 2013 1:26:39 PM by Hibernate Tools 3.4.0.CR1import java.util.Date;/*** Album generated by hbm2java*/ public class AlbumBO implements java.io.Serializable {private Integer albumid;private String albumname;private String albumdesc;private Date albumcreatedate;public AlbumBO() {}public AlbumBO(String albumname, String albumdesc, Date albumcreatedate) {this.albumname = albumname;this.albumdesc = albumdesc;this.albumcreatedate = albumcreatedate;}public Integer getAlbumid() {return this.albumid;}public void setAlbumid(Integer albumid) {this.albumid = albumid;}public String getAlbumname() {return this.albumname;}public void setAlbumname(String albumname) {this.albumname = albumname;}public String getAlbumdesc() {return this.albumdesc;}public void setAlbumdesc(String albumdesc) {this.albumdesc = albumdesc;}public Date getAlbumcreatedate() {return this.albumcreatedate;}public void setAlbumcreatedate(Date albumcreatedate) {this.albumcreatedate = albumcreatedate;}}

    PhototblBO.java

    package com.tctalk.apps.album.db.businessobjects; // Generated Apr 22, 2013 1:26:39 PM by Hibernate Tools 3.4.0.CR1import java.util.Date;/*** Phototbl generated by hbm2java*/ public class PhototblBO implements java.io.Serializable {private int photoid;private int albumid;private String phototitle;private String photoname;private String imgcontenttype;private Date photocreatedate;private byte[] photodata;public PhototblBO() {}public PhototblBO(int photoid, int albumid, String phototitle,String photoname, String imgcontenttype, Date photocreatedate,byte[] photodata) {this.photoid = photoid;this.albumid = albumid;this.phototitle = phototitle;this.photoname = photoname;this.imgcontenttype = imgcontenttype;this.photocreatedate = photocreatedate;this.photodata = photodata;}public int getPhotoid() {return this.photoid;}public void setPhotoid(int photoid) {this.photoid = photoid;}public int getAlbumid() {return this.albumid;}public void setAlbumid(int albumid) {this.albumid = albumid;}public String getPhototitle() {return this.phototitle;}public void setPhototitle(String phototitle) {this.phototitle = phototitle;}public String getPhotoname() {return this.photoname;}public void setPhotoname(String photoname) {this.photoname = photoname;}public String getImgcontenttype() {return this.imgcontenttype;}public void setImgcontenttype(String imgcontenttype) {this.imgcontenttype = imgcontenttype;}public Date getPhotocreatedate() {return this.photocreatedate;}public void setPhotocreatedate(Date photocreatedate) {this.photocreatedate = photocreatedate;}public byte[] getPhotodata() {return this.photodata;}public void setPhotodata(byte[] photodata) {this.photodata = photodata;}}

    Album.hbm.xml

    <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated Apr 22, 2013 1:26:40 PM by Hibernate Tools 3.4.0.CR1 --> <hibernate-mapping><class name="com.tctalk.apps.album.db.businessobjects.AlbumBO" table="album" catalog="tctalk_apps_photoalbum"><id name="albumid" type="java.lang.Integer"><column name="albumid" /><generator class="identity" /></id><property name="albumname" type="string"><column name="albumname" length="55" not-null="true" /></property><property name="albumdesc" type="string"><column name="albumdesc" length="65535" not-null="true" /></property><property name="albumcreatedate" type="date"><column name="albumcreatedate" length="10" not-null="true" /></property></class> </hibernate-mapping>

    Phototbl.hbm.xml

    <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated Apr 22, 2013 1:26:40 PM by Hibernate Tools 3.4.0.CR1 --> <hibernate-mapping><class name="com.tctalk.apps.album.db.businessobjects.PhototblBO" table="phototbl" catalog="tctalk_apps_photoalbum"><id name="photoid" type="int"><column name="photoid" /><generator class="assigned" /></id><property name="albumid" type="int"><column name="albumid" not-null="true" /></property><property name="phototitle" type="string"><column name="phototitle" not-null="true" /></property><property name="photoname" type="string"><column name="photoname" not-null="true" /></property><property name="imgcontenttype" type="string"><column name="imgcontenttype" not-null="true" /></property><property name="photocreatedate" type="timestamp"><column name="photocreatedate" length="19" not-null="true" /></property><property name="photodata" type="binary"><column name="photodata" not-null="true" /></property></class> </hibernate-mapping>

    HibernateUtils.java

    package com.tctalk.apps.album.utils;import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration;public class HibernateUtils {private static SessionFactory hbmSessionFactory;static {try {Configuration cfg = new Configuration().configure(PhotoAlbumConstant._HIBERNATE_CONFIG_LOCATION);hbmSessionFactory = cfg.buildSessionFactory();} catch (RuntimeException ex) {System.out.println("********* Error occurred while reading config file *********");ex.printStackTrace();}}/*** getSession creates hibernate Session & returns it*/public static Session getSession() {return hbmSessionFactory.openSession();}/*** closeSession closes the session, if it exists*/public static void closeSession(Session inSession) {if (inSession != null) {inSession.close();}} }

    PhotoAlbumConstant.java

    package com.tctalk.apps.album.utils;public interface PhotoAlbumConstant {String _HIBERNATE_CONFIG_LOCATION = "hibernate.cfg.xml";String _HQL_DEL_PHOTOS_ALBUM = "DELETE FROM PhototblBO WHERE albumid= :albumid"; }

    PhotoAlbumAdminDao.java

    package com.tctalk.apps.album.db.dao;import java.util.List;import com.tctalk.apps.album.db.businessobjects.AlbumBO; import com.tctalk.apps.album.db.businessobjects.PhototblBO;public interface PhotoAlbumAdminDao {// Photo Album related operationspublic List<AlbumBO> getAllPhotoAlbums(); public boolean addAlbum(AlbumBO album);public boolean delAlbum(int albumId);//Photo related operationspublic List<PhototblBO> getAllPhotosFromAlbum(int albumid);public boolean addPhotoToAlbum(PhototblBO photo);public boolean delPhotoFromAlbum(int photoid);public List<PhototblBO> getPhoto(int photoid); }

    PhotoAlbumAdminDaoImpl.java

    package com.tctalk.apps.album.db.dao;import java.util.Date; import java.util.List;import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.criterion.Restrictions;import com.tctalk.apps.album.db.businessobjects.AlbumBO; import com.tctalk.apps.album.db.businessobjects.PhototblBO; import com.tctalk.apps.album.utils.HibernateUtils; import com.tctalk.apps.album.utils.PhotoAlbumConstant;public class PhotoAlbumAdminDaoImpl implements PhotoAlbumAdminDao, PhotoAlbumConstant {/*** The below methods will be used for handling the Photo album related* operations* *//*** This function retrieves all the photo albums and send the list to the* front end*/public List<AlbumBO> getAllPhotoAlbums() {List<AlbumBO> albumList = null;Session hbmSession = null;try {hbmSession = HibernateUtils.getSession();Criteria criteria = hbmSession.createCriteria(AlbumBO.class);albumList = criteria.list();} catch (Exception ex) {ex.printStackTrace();} finally {HibernateUtils.closeSession(hbmSession);}return albumList;}/*** This function adds one photo album to the database*/public boolean addAlbum(AlbumBO album) {Session hbmSession = null;boolean STATUS_FLAG = true;try {hbmSession = HibernateUtils.getSession();hbmSession.beginTransaction();// change the creation date to today's date in the album objectalbum.setAlbumcreatedate(new Date());// add the album to the hibernate session to savehbmSession.save(album);hbmSession.getTransaction().commit();} catch (Exception ex) {hbmSession.getTransaction().rollback();ex.printStackTrace();STATUS_FLAG = false;} finally {HibernateUtils.closeSession(hbmSession);}return STATUS_FLAG;}/*** This function deletes the photoalbum based on the album id. It first* check if the album has any photos or not. If the album is not emptry then* it deletes the photos first and then delete the album itself*/public boolean delAlbum(int albumId) {Session hbmSession = null;boolean STATUS_FLAG = true;try {// get the hibernate session to perform delete operationhbmSession = HibernateUtils.getSession();hbmSession.beginTransaction();//delete all photos from the Photo table correspond to the album idQuery query = hbmSession.createQuery(_HQL_DEL_PHOTOS_ALBUM);query.setInteger("albumid", new Integer(albumId));int rowCount = query.executeUpdate();System.out.println("Rows affected: " + rowCount);//now load the album object from Album table and delete it correspond to the album idAlbumBO albumObj = (AlbumBO) hbmSession.load(AlbumBO.class, albumId);hbmSession.delete(albumObj);hbmSession.getTransaction().commit();} catch (Exception ex) {hbmSession.getTransaction().rollback();ex.printStackTrace();STATUS_FLAG = false;} finally {HibernateUtils.closeSession(hbmSession);}return STATUS_FLAG;}/*** The below functions will be helpful to work on the Photos in the photo* album*//*** This function retrieves all the photos and send the list to the front end*/public List<PhototblBO> getAllPhotosFromAlbum(int albumid) {List<PhototblBO> photoList = null;Session hbmSession = null;Criteria criteria = null;try {hbmSession = HibernateUtils.getSession();hbmSession.beginTransaction();// retrieve all photos from photo table correspond to the album Idcriteria = hbmSession.createCriteria(PhototblBO.class).add(Restrictions.eq("albumid", albumid));photoList = criteria.list();} catch (Exception ex) {ex.printStackTrace();} finally {HibernateUtils.closeSession(hbmSession);}return photoList;}/*** This function adds photo to the album*/public boolean addPhotoToAlbum(PhototblBO photoobj) {Session hbmSession = null;boolean STATUS_FLAG = true;try {hbmSession = HibernateUtils.getSession();hbmSession.beginTransaction();hbmSession.save(photoobj);hbmSession.getTransaction().commit();} catch (Exception ex) {hbmSession.getTransaction().rollback();ex.printStackTrace();STATUS_FLAG = false;} finally {HibernateUtils.closeSession(hbmSession);}return STATUS_FLAG;}/*** This function deletes the photo from the album itself*/public boolean delPhotoFromAlbum(int photoid) {Session hbmSession = null;boolean STATUS_FLAG = true;try {// get the hibernate session to perform delete operationhbmSession = HibernateUtils.getSession();hbmSession.beginTransaction();PhototblBO photoobj = (PhototblBO) hbmSession.load(PhototblBO.class, photoid);hbmSession.delete(photoobj);hbmSession.getTransaction().commit();} catch (Exception ex) {hbmSession.getTransaction().rollback();ex.printStackTrace();STATUS_FLAG = false;} finally {HibernateUtils.closeSession(hbmSession);}return STATUS_FLAG;}/*** This function returns the photo object itself*/public List<PhototblBO> getPhoto(int photoid) {List<PhototblBO> photoList = null;Session hbmSession = null;Criteria criteria = null;try {hbmSession = HibernateUtils.getSession();hbmSession.beginTransaction();// retrieve all photos from photo table correspond to the album Idcriteria = hbmSession.createCriteria(PhototblBO.class).add(Restrictions.eq("photoid", photoid));photoList = criteria.list();} catch (Exception ex) {ex.printStackTrace();} finally {HibernateUtils.closeSession(hbmSession);}return photoList;}}

    步驟6:開發UI部分

    創建“ admin”文件夾,以保留所有與管理員相關的UI文件。 盡管我們的應用程序中沒有CSS或JavaScript文件,但我們仍將創建文件夾作為占位符。 我們將添加兩個jsp文件– showalbums.jsp –該文件將用于顯示現有相冊以及用于向數據庫中添加一個相冊的字段

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>TechcubeTalk.com - Let's build apps from scratch series - Personal Photo Album App</title> </head> <body> <h2>:: TechcubeTalk.com - Personal Photo Album Admin Panel ::</h2> <div style="margin-bottom: 25px;"> <s:form action="addAlbumAdmn" method="POST"><s:textfield label="Photo Album Name/Title" name="album.albumname"/><s:textfield label="Optional Brief Description" name="album.albumdesc"/><br/> <s:submit value="Create Photo Album" align="center"/> </s:form> <hr/> </div> <div><table style="border: 1px dotted black;"><tr><th style="background-color:#ABDCFF;" align="center"> Album Id </th><th style="background-color:#ABDCFF;" align="center"> Photo Album Title </th><th style="background-color:#ABDCFF;" align="center"> Brief Description </th><th style="background-color:#ABDCFF;" align="center"> Created On </th><th style="background-color:#ABDCFF;" align="center"> Delete? </th><th style="background-color:#ABDCFF;" align="center"> View Photos in Album </th></tr><s:iterator value="albumList" var="album"><tr><td align="center"><s:property value="albumid"/></td><td align="center"><s:property value="albumname"/></td><td align="center"><s:property value="albumdesc"/></td><td align="center"><s:property value="albumcreatedate"/></td><td align="center"> <a href="delAlbumAdmn.action?albumid=<s:property value="albumid"/>">Delete</a> </td><td align="center"> <a href="listPhotosByAlbumAdmn.action?albumid=<s:property value="albumid"/>">Click to View</a> </td></tr></s:iterator></table> </div> </body> </html>

    showphotos.jsp –此jsp將顯示用戶單擊的相冊下的所有照片。 它還會顯示要在該目錄下上傳照片的字段。

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>TechcubeTalk.com - Let's build apps from scratch series - Personal Music Manager Application</title> </head> <body> <h2>:: TechcubeTalk.com - Personal Photo Album Admin Panel ::</h2> <div style="margin-bottom: 25px;"> <s:form action="addPhotoAcion" namespace="/" method="POST" enctype="multipart/form-data"> <s:textfield label="Photo Title" name="photoTitle"/> <s:file name="fileUpload" label="Select a File to upload" size="40" /> <s:hidden name="albumid" value="%{albumid}" /><s:submit value="Upload Photo to Album" name="submit" /> </s:form></div> <div> <a href="listAlbumAdmn.action"><< Back to Albums</a></div> <div><table style="border: 1px dotted black;"><tr><th style="background-color:#ABDCFF;">Photo Id</th><th style="background-color:#ABDCFF;">Photo Title</th><th style="background-color:#ABDCFF;">Upload Date</th><th style="background-color:#ABDCFF;">View Photo</th><th style="background-color:#ABDCFF;">Delete Photo</th></tr><s:iterator value="photoList" var="photo"><tr><td><s:property value="photoid"/></td><td><s:property value="phototitle"/></td><td><s:property value="photocreatedate"/></td><td><a href="showPhotoAction.action?photoid=<s:property value="photoid"/>" target="_blank">View</a></td><td><a href="delPhotoFrmAlbumAdmn.action?albumid=<s:property value="albumid"/>&photoid=<s:property value="photoid"/>">Delete</a></td></tr></s:iterator></table> </div> </body> </html>

    步驟7:添加動作類和自定義結果類

    PhotoAlbumAdminAction擴展了POJO PhotoAlbumForm.java,以保存UI頁面的提交表單字段和其他值。 我們使用一種自定義結果來顯示照片,方法是從BLOB字段數據庫中將其作為二進制文件獲取。

    PhotoAlbumAdminAction.java

    package com.tctalk.apps.album.web.actions;import java.io.IOException; import java.util.Date; import java.util.List;import org.apache.commons.io.FileUtils;import com.tctalk.apps.album.db.businessobjects.AlbumBO; import com.tctalk.apps.album.db.businessobjects.PhototblBO; import com.tctalk.apps.album.web.delegates.PhotoAlbumAdminDelegate; import com.tctalk.apps.album.web.forms.PhotoAlbumForm;public class PhotoAlbumAdminAction extends PhotoAlbumForm {private static final long serialVersionUID = 9168149105719285096L;private PhotoAlbumAdminDelegate delegate = new PhotoAlbumAdminDelegate();public String getAllAlbumList() {List<AlbumBO> albumList = delegate.getAllPhotoAlbums();String returnString = ERROR;if (albumList != null) {setAlbumList(albumList);returnString = SUCCESS;}return returnString;}public String addAlbumToCollection() {String returnString = ERROR;AlbumBO album = getAlbum();if (delegate.addAlbumToCollection(album)) {returnString = SUCCESS;}return returnString;}public String delAlbumFromCollection() {String returnString = ERROR;int albumId = getAlbumid();if (delegate.delAlbumFromCollection(albumId)) {returnString = SUCCESS;}return returnString;}public String listAllPhotos() {List<PhototblBO> photoList = delegate.getAllPhotos(this.getAlbumid());String returnString = ERROR;if (photoList != null) {this.setPhotoList(photoList);returnString = SUCCESS;}return returnString;}public String uploadPhotoToAlbum() {String returnString = ERROR;PhototblBO photoBO = new PhototblBO();// set the uploaded file meta data to the PhototblBO object before// saving to databasephotoBO.setAlbumid(getAlbumid());photoBO.setPhotocreatedate(new Date());photoBO.setImgcontenttype(getFileUploadContentType());photoBO.setPhotoname(getFileUploadFileName());photoBO.setPhototitle(getPhotoTitle());try {// the uploaded file is in File format so we need to convert to// byte[] array for storing in our database. For this apache //common file utility class is used below.photoBO.setPhotodata(FileUtils.readFileToByteArray(getFileUpload()));} catch (IOException e) {e.printStackTrace();}setPhotobo(photoBO);setAlbumid(photoBO.getAlbumid());if (delegate.addAPhoto(getPhotobo())) {returnString = SUCCESS;}return returnString;}public String delPhoto() {String returnString = ERROR;int photoId = getPhotoid();if (delegate.delPhoto(photoId)) {returnString = SUCCESS;}return returnString;}public String showPhoto() {String returnString = ERROR;List<PhototblBO> photoList = delegate.getPhoto(this.getPhotoid());if (photoList != null) {PhototblBO photoBO = (PhototblBO)photoList.get(0);if(photoBO != null){setPhotobo(photoBO);returnString = SUCCESS;}}return returnString;}}

    PhotoAlbumForm.java

    package com.tctalk.apps.album.web.forms;import java.io.File; import java.util.List;import com.opensymphony.xwork2.ActionSupport; import com.tctalk.apps.album.db.businessobjects.AlbumBO; import com.tctalk.apps.album.db.businessobjects.PhototblBO;public class PhotoAlbumForm extends ActionSupport{private static final long serialVersionUID = 706337856877546963L;private List<AlbumBO> albumList = null;private List<PhototblBO> photoList = null;private AlbumBO album = null;private PhototblBO photobo = null;private File fileUpload;private String fileUploadContentType;private String fileUploadFileName;private String photoTitle;private int photoid;private int albumid;public String getFileUploadContentType() {return fileUploadContentType;}public void setFileUploadContentType(String fileUploadContentType) {this.fileUploadContentType = fileUploadContentType;}public String getFileUploadFileName() {return fileUploadFileName;}public void setFileUploadFileName(String fileUploadFileName) {this.fileUploadFileName = fileUploadFileName;}public File getFileUpload() {return fileUpload;}public void setFileUpload(File fileUpload) {this.fileUpload = fileUpload;}public String getPhotoTitle() {return photoTitle;}public void setPhotoTitle(String photoTitle) {this.photoTitle = photoTitle;}public List<AlbumBO> getAlbumList() {return albumList;}public void setAlbumList(List<AlbumBO> albumList) {this.albumList = albumList;}public List<PhototblBO> getPhotoList() {return photoList;}public void setPhotoList(List<PhototblBO> photoList) {this.photoList = photoList;}public AlbumBO getAlbum() {return album;}public void setAlbum(AlbumBO album) {this.album = album;}public PhototblBO getPhotobo() {return photobo;}public void setPhotobo(PhototblBO photobo) {this.photobo = photobo;}public int getPhotoid() {return photoid;}public void setPhotoid(int photoid) {this.photoid = photoid;}public int getAlbumid() {return albumid;}public void setAlbumid(int albumid) {this.albumid = albumid;} }

    CustomPhotoResult.java

    package com.tctalk.apps.album.web.actions;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.Result;public class CustomPhotoResult implements Result {private static final long serialVersionUID = 1L;public void execute(ActionInvocation invocation) throws Exception {PhotoAlbumAdminAction action = (PhotoAlbumAdminAction) invocation.getAction();HttpServletResponse response = ServletActionContext.getResponse();response.setContentType(action.getPhotobo().getImgcontenttype());response.setHeader("Content-Disposition", "inline; filename=\"" + action.getPhotobo().getPhotoname() + "\"");response.setHeader("cache-control", "no-cache");response.getOutputStream().write(action.getPhotobo().getPhotodata());response.getOutputStream().flush();response.getOutputStream().close();} }

    步驟8:添加委托類

    委托類充當Struts2表示層和使用Hibernate開發的業務層之間的橋梁。

    PhotoAlbumAdminDelegate.java

    package com.tctalk.apps.album.web.delegates;import java.util.List;import com.tctalk.apps.album.db.businessobjects.AlbumBO; import com.tctalk.apps.album.db.businessobjects.PhototblBO; import com.tctalk.apps.album.db.dao.PhotoAlbumAdminDao; import com.tctalk.apps.album.db.dao.PhotoAlbumAdminDaoImpl;public class PhotoAlbumAdminDelegate {PhotoAlbumAdminDao admindao = (PhotoAlbumAdminDao) new PhotoAlbumAdminDaoImpl();// Photo Album related functionspublic List<AlbumBO> getAllPhotoAlbums() {return admindao.getAllPhotoAlbums();}public boolean addAlbumToCollection(AlbumBO album) {return admindao.addAlbum(album);}public boolean delAlbumFromCollection(int albumId) {return admindao.delAlbum(albumId);}//Only Photo related functionspublic List<PhototblBO> getAllPhotos(int albumId) {return admindao.getAllPhotosFromAlbum(albumId);}public boolean addAPhoto(PhototblBO photo) {return admindao.addPhotoToAlbum(photo);}public boolean delPhoto(int photoid) {return admindao.delPhotoFromAlbum(photoid);}public List<PhototblBO> getPhoto(int photoid) {return admindao.getPhoto(photoid);} }

    步驟9:最終整合

    整個項目結構將類似于以下內容:

    在struts.xml文件中,當我們從一個動作重定向到另一個動作時,我們需要傳遞相冊ID。 例如,將照片上傳到數據庫后,您需要重定向回到該相冊下的所有照片列表。 因此,添加照片后,我們還需要發回相冊。 為此,我們在struts.xml中使用$ {albumid}來傳遞POJO表單中的相冊。

    項目完成后,從eclipse生成WAR文件。 為此,請右鍵單擊項目,然后選擇導出-> WAR文件以創建WAR文件并在Tomcat中進行部署。

    如果您的部署成功,并且Tomcat控制臺中沒有錯誤消息(忽略任何警告,例如LOG4J等),則啟動瀏覽器并輸入URL – http:// localhost:8080 / PersonalPhotoAlbumApp / admin.action

    這將調用管理面板,并且將顯示類別列表(第一次將不會顯示結果,因此繼續添加一個相冊)。

    選擇“單擊以查看”進入“照片”頁面,您可以在該頁面中上傳照片或查看上傳的照片。

    今天就這些。 在第二部分中,我將開發前端面板,該面板將使用jQuery,Struts2和Hibernate顯示相冊以及該相冊中的照片。

    下載源文件:

    我已經在上述步驟中提供了所有源代碼。 eclipse項目(帶有jar)和WAR文件上傳到GitHub存儲庫中。

    參考: 使用Struts2,Hibernate和MySQL BLOB開發個人迷你照片庫應用程序–來自我們JCG合作伙伴 Suvoraj Biswas的第1部分 ,在TechCubeTalk博客上。

    翻譯自: https://www.javacodegeeks.com/2013/10/developing-a-personal-mini-photo-gallery-application-using-struts2-hibernate-and-mysql-blob-part-1.html

    總結

    以上是生活随笔為你收集整理的使用Struts2,Hibernate和MySQL BLOB开发个人迷你相册应用程序–第1部分的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    国产黄在线看 | 日韩成人中文字幕 | japanesexxxhd奶水 91在线精品一区二区 | 国产精品久久久久av福利动漫 | 成人免费在线观看电影 | 美女精品在线 | 久久免费电影网 | 九九热在线视频 | 免费黄色在线网站 | 在线视频一二区 | 国产中文字幕视频在线 | 国产一级片视频 | 成年人免费av网站 | 日韩精品最新在线观看 | 你操综合 | 国产精品黑丝在线观看 | 中文字幕二区在线观看 | 国产精品成人久久久久 | www.人人干 | 国产精品久久久久久久久久久久久 | 国产精品久久久久久久久久不蜜月 | 亚洲 欧洲av | 手机看片99 | 成年人免费在线观看网站 | 国产精品a级| 国产+日韩欧美 | 1024在线看片 | av在线免费观看网站 | 亚洲精品国内 | 久久免费黄色大片 | 午夜天使| 中文字幕乱在线伦视频中文字幕乱码在线 | 天天操天天草 | 亚洲国内精品在线 | 精品久久久久一区二区国产 | 精品久久一区二区 | 在线影视 一区 二区 三区 | 亚洲欧洲国产日韩精品 | 奇米影视8888在线观看大全免费 | 一区电影 | 欧美精品二区 | 免费看黄色毛片 | 欧美91精品| 欧美精品少妇xxxxx喷水 | 五月天亚洲激情 | 日韩在线字幕 | 亚洲美女免费精品视频在线观看 | 91精品国产综合久久福利 | 成人小视频在线观看免费 | 日日干天天爽 | 国产91在线免费视频 | 亚洲免费公开视频 | 中文字幕欧美日韩va免费视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 国内99视频| 999成人| 国产视频观看 | 91精品久久久久久久久久入口 | 伊人狠狠色 | 国产精品一区二区三区久久久 | 99热在线观看 | 在线欧美中文字幕 | 天天射天天射天天射 | 婷婷五情天综123 | 欧美福利网址 | 国产香蕉视频在线观看 | 婷婷丁香激情五月 | av免费片 | 久草视频免费播放 | 国产视频 亚洲精品 | 麻豆精品在线视频 | 狠狠色丁香婷婷综合视频 | 91爱爱网址 | 国产高清视频在线观看 | 久久精品视频播放 | 天天操天天干天天玩 | 久久久男人的天堂 | 91成人看片 | 日韩视频免费看 | 久久艹国产 | 97福利视频 | 伊人官网| 美女很黄免费网站 | 亚洲一级电影在线观看 | 亚洲精品国产综合99久久夜夜嗨 | 伊色综合久久之综合久久 | 久久理论片 | 午夜婷婷在线播放 | 成 人 黄 色 视频 免费观看 | 在线免费视 | 又黄又爽又刺激视频 | 久久与婷婷 | 国产一区二区在线精品 | 96亚洲精品久久 | 91桃色国产在线播放 | 免费在线观看黄网站 | 国产日韩中文在线 | 亚洲 中文 在线 精品 | 亚洲国产中文字幕 | 亚洲精品乱码久久久一二三 | 奇米网在线观看 | 婷婷丁香av | 国产高清av免费在线观看 | 五月婷婷香蕉 | 久久精品免费电影 | 亚洲视频在线观看免费 | 99精品久久久 | 亚洲国产一区二区精品专区 | 在线高清| 国产精品久久久久四虎 | 国产一区二区免费在线观看 | www视频在线观看 | 久久黄页 | 在线播放国产精品 | 国内毛片毛片 | 色搞搞| 亚洲狠狠丁香婷婷综合久久久 | av在线免费播放 | 中文字幕在线观看第二页 | 亚洲在线视频播放 | 激情综合一区 | 五月情婷婷 | 欧美老人xxxx18 | 久久久久久久久久电影 | 免费看av片网站 | 黄色免费网战 | 曰韩在线| 综合久久久久久久 | 欧美精品小视频 | 国产成年免费视频 | 伊人久久精品久久亚洲一区 | 国产色视频网站 | 欧美日韩午夜在线 | 成人久久国产 | 日韩免费一区 | 九九久久久 | 国产精品毛片一区视频播不卡 | 四虎永久免费网站 | 麻豆一级视频 | 激情五月视频 | 欧美精品做受xxx性少妇 | 午夜精品一区二区三区在线 | 亚洲日本国产精品 | 高清av在线免费观看 | 久久久久久久久亚洲精品 | 中文字幕在线观看国产 | 亚洲精品毛片一级91精品 | 久久免费国产视频 | av3级在线| 久久久国产精品一区二区中文 | 国产日韩精品一区二区三区 | 欧美精品久久久久久久久久久 | 在线观看精品视频 | 久久精品视频中文字幕 | 毛片1000部免费看 | 一二三精品视频 | 久久色网站 | 亚洲丝袜一区二区 | 一区二区三区久久 | 日韩精品不卡在线观看 | 免费观看的av | 久香蕉| 精品视频资源站 | 四虎影视成人精品 | 天天在线操 | 国精产品999国精产品视频 | 91久久精品一区二区三区 | 欧美精品国产综合久久 | 久久综合九色综合97婷婷女人 | 91成品人影院 | 黄色亚洲在线 | 国产三级午夜理伦三级 | 免费影视大全推荐 | www狠狠操| 亚洲影院天堂 | 又黄又爽又无遮挡的视频 | 亚洲成人精品在线 | 免费看成人av| 免费的黄色av | 久久超碰免费 | 国产男女无遮挡猛进猛出在线观看 | 亚洲精品国产拍在线 | 97超视频在线观看 | 国产成人一区二区精品非洲 | 国产一区私人高清影院 | 99久久久国产精品免费观看 | 中日韩欧美精彩视频 | 菠萝菠萝蜜在线播放 | 久久看视频 | 欧美一区二区三区免费观看 | 999国内精品永久免费视频 | 美女网站视频免费黄 | 在线免费观看欧美日韩 | 六月丁香在线观看 | 亚洲一区二区麻豆 | 一区二区视频电影在线观看 | 成人在线播放免费观看 | 国产不卡在线观看视频 | 福利电影一区二区 | 人人插人人草 | 国产欧美最新羞羞视频在线观看 | 奇米网8888 | 亚洲精品乱码久久久久久蜜桃不爽 | 五月婷婷综合在线视频 | 日韩精品久久久久久久电影竹菊 | 日韩在线观看一区二区三区 | 最新av电影网址 | 91九色蝌蚪视频在线 | 久久女同性恋中文字幕 | 国产欧美精品一区二区三区 | 91精品国产92久久久久 | 婷婷国产一区二区三区 | 国产精品女视频 | 91在线成人 | 亚洲精品影院在线观看 | 色在线视频 | 免费色网站 | 亚洲免费精彩视频 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 欧美日韩在线播放一区 | www久久com| 在线观看久久久久久 | 91视频啪| 国产成人三级三级三级97 | 天天干,狠狠干 | 一区二区毛片 | 国产精品videoxxxx | 三上悠亚一区二区在线观看 | 涩涩在线| 免费在线看v | 国产综合精品一区二区三区 | 久久成人国产精品一区二区 | 精品国产视频在线观看 | 激情网在线视频 | 正在播放五月婷婷狠狠干 | 九九av | 五月天综合 | 国产亚洲婷婷 | 日韩精品一区二区三区水蜜桃 | 亚洲精品美女久久17c | 国产96av| 能在线观看的日韩av | 国产成人精品a | 天天色棕合合合合合合 | 国产亚洲婷婷免费 | 手机成人免费视频 | 亚洲3级| 国产一级黄色电影 | 亚洲精选视频在线 | 国产伦理久久精品久久久久_ | 91亚洲网站| 蜜臀一区二区三区精品免费视频 | 国产精品国产三级在线专区 | 亚洲最新在线 | 中文字幕在线资源 | 少妇性aaaaaaaaa视频 | 亚洲黄色激情小说 | 一区二区三区在线影院 | 国产黄色视 | 婷婷亚洲五月 | 久久久精品综合 | 亚洲高清视频一区二区三区 | 99热只有精品在线观看 | 国产电影黄色av | 成人av久久 | 精品视频在线观看 | 91试看 | 91成人精品一区在线播放69 | 国产视频在线一区二区 | 久久久国产电影 | 国产亚洲精品久久久久久网站 | 国产在线观看网站 | 国产精品久久久久久久久软件 | 特黄一级毛片 | 久草在线资源视频 | 草久热 | 国产又粗又猛又色 | 中字幕视频在线永久在线观看免费 | 97操操| 91精品国产92久久久久 | 成人a免费 | 欧美日韩激情视频8区 | 欧美日韩免费在线观看视频 | 激情图片区 | 香蕉在线观看视频 | 久久黄色免费视频 | 色婷婷 亚洲 | 中文字幕在线观看一区二区三区 | 91在线观看高清 | 国产精品久久久久久av | 中文字幕在线观看一区二区 | 中文字幕韩在线第一页 | 免费看在线看www777 | 最近最新mv字幕免费观看 | 国产系列 在线观看 | 日韩久久精品一区二区三区 | 亚洲丝袜一区二区 | 亚洲蜜桃在线 | 成人资源站| 亚洲黄色在线 | 国产成人精品日本亚洲999 | 色婷在线| 米奇影视7777 | 国产成人99久久亚洲综合精品 | 亚洲h视频在线 | 91九色视频在线观看 | 亚洲在线网址 | 日韩电影在线观看中文字幕 | 天天干天天操天天拍 | 国产亚洲精品久久久久久大师 | 国产黄色片在线免费观看 | 超碰999 | 久久不卡国产精品一区二区 | 日本爱爱片 | 国产97碰免费视频 | 久久亚洲精品电影 | 精品国产一区二区在线 | 久久97久久97精品免视看 | 亚洲狠狠干 | 91爱看片 | 91大神精品视频在线观看 | 国产黄色精品在线 | 免费看av在线 | 天天干天天干天天射 | 亚洲www天堂com | 在线中文字幕一区二区 | 最近久乱中文字幕 | 亚洲专区一二三 | 久久久久久久久久久福利 | 欧美性猛片 | 香蕉影院在线播放 | 天天爱天天射天天干天天 | 伊人成人激情 | 欧美韩日在线 | 久久草在线免费 | 久久手机精品视频 | 中文字幕一区二区三区久久蜜桃 | 九九免费在线观看视频 | 超碰成人免费电影 | 色综合天天射 | 欧美激情视频一区二区三区 | 黄色成年网站 | 成年人电影免费看 | 色九九影院 | 五月婷婷六月丁香 | 国产黄色片久久久 | 国产亚洲在线视频 | 中文av字幕在线观看 | 高清有码中文字幕 | 久久久www成人免费毛片麻豆 | 青青草国产精品 | 欧美日韩中文字幕在线视频 | 日韩视频1 | 久久黄色成人 | 成人在线视频网 | 在线看黄色的网站 | 国产经典三级 | 99在线热播精品免费 | 免费午夜视频在线观看 | 91一区在线观看 | 欧美三级免费 | se视频网址 | 中文字幕一区二区三区四区视频 | 99综合视频 | 色综合久久66 | 国产精品久久久久久久午夜片 | 四虎影视成人精品国库在线观看 | 日韩在线观看视频一区二区三区 | 在线观看一区 | 98超碰在线 | 日本精品久久久久中文字幕5 | 中文字幕有码在线观看 | 日韩精品一区二区三区在线播放 | av高清网站在线观看 | 午夜久久福利视频 | 国产精品久久久久久一区二区 | 日韩大陆欧美高清视频区 | 视频在线99re | 国产 一区二区三区 在线 | 一级欧美一级日韩 | 久久免费av电影 | av网站免费在线 | 成人av直播| av在线一| 国产精品a成v人在线播放 | 最新日韩视频 | 久草视频视频在线播放 | 亚洲国产一区二区精品专区 | 国产中文字幕在线观看 | 久久精品香蕉 | 99超碰在线观看 | 国产精品精品久久久久久 | 一区二区三区在线免费播放 | 亚洲 欧美日韩 国产 中文 | 欧美 激情 国产 91 在线 | 久草精品视频在线看网站免费 | 久久久私人影院 | 狠狠操影视 | 黄色免费大全 | 91麻豆精品国产自产在线游戏 | 中文字幕在线日亚洲9 | 免费人成在线观看网站 | 亚洲在线高清 | 日韩综合第一页 | 亚洲成人影音 | 久久综合九色九九 | 一级国产视频 | 天天插一插 | 久热久草| 亚洲欧美日韩精品久久久 | 亚洲一区二区三区毛片 | 91九色最新地址 | www.久久色.com | 久草在线观 | 黄色片毛片 | 久久久久久久毛片 | 在线观看视频在线 | 欧美一区日韩精品 | 欧美一级免费高清 | 中文字幕亚洲不卡 | 国产精品美女999 | 婷婷www| 久久中文欧美 | 久久久久久久久久影视 | 午夜在线免费视频 | 欧美日韩网站 | 国产亚洲精品中文字幕 | 日精品 | 国产小视频91 | 九九视频这里只有精品 | a极黄色片 | 超碰免费久久 | 激情综合网色播五月 | 99在线播放 | 国产韩国日本高清视频 | 日本少妇高清做爰视频 | 日韩和的一区二在线 | 免费亚洲视频在线观看 | 久久久久久久久久电影 | 500部大龄熟乱视频 欧美日本三级 | 人人要人人澡人人爽人人dvd | 91欧美精品 | 高清中文字幕av | 在线观看av免费 | 日本成人免费在线观看 | 九色精品免费永久在线 | 三级av免费看 | 亚洲va在线va天堂 | 正在播放 久久 | 高清视频一区二区三区 | 最新一区二区三区 | 99精品视频在线观看免费 | 国产精品久久久久久久免费观看 | 日韩av电影中文字幕 | 91视频久久 | 亚洲电影免费 | 黄色aa久久 | 狠狠色狠狠综合久久 | 麻豆国产在线播放 | 91女子私密保健养生少妇 | 天天干天天在线 | 91av手机在线 | 天天爽天天爽 | 亚洲精品在线免费观看视频 | 久久综合天天 | 在线观看久草 | 黄色精品视频 | 97视频免费播放 | 久久av免费| 欧美伦理一区二区三区 | 成人av影视观看 | 日韩欧美视频一区二区 | 国产资源免费在线观看 | 久久人人爽人人爽人人片av软件 | 国产精品一区在线观看你懂的 | 久久电影国产免费久久电影 | 日韩精品一卡 | 久久激情精品 | 国产91精品一区二区绿帽 | 久久久国产一区二区 | 91在线免费播放视频 | 午夜在线观看一区 | 亚洲综合色av | 久久 地址| 久久国产精品一区二区 | 国内精品久久久久影院优 | 国产在线观看免费 | 日韩黄色免费电影 | 成人天堂网 | 日韩黄色免费电影 | 国产在线欧美日韩 | 久久综合天天 | 国产成人一区二区三区免费看 | 91大神精品视频在线观看 | 欧美大香线蕉线伊人久久 | 丁香在线视频 | www在线观看视频 | 久章操 | 午夜国产一区 | 欧美精品乱码99久久影院 | 国产精品视频免费 | 少妇精品久久久一区二区免费 | 岛国精品一区二区 | 精品亚洲成人 | 久久久亚洲麻豆日韩精品一区三区 | 99精品视频在线播放免费 | 又黄又爽免费视频 | 欧美精品亚洲精品日韩精品 | 99热这里只有精品1 av中文字幕日韩 | 中文字幕精品久久 | 91亚洲欧美 | 免费在线观看av电影 | 激情综合色播五月 | 国产黄a三级三级三级三级三级 | www色片 | 热热热热热色 | 91成人免费观看视频 | 午夜视频色 | 韩国一区在线 | 国产亚洲精品久久19p | 超碰999| 国产免费亚洲高清 | 99热这里只有精品1 av中文字幕日韩 | 中文字幕中文中文字幕 | 久久有精品 | 81精品国产乱码久久久久久 | 久久婷婷网 | 亚洲国产日韩av | 人人干人人添 | 日韩精品 在线视频 | 夜夜干夜夜 | 夜夜看av | 免费观看一级视频 | 黄色成人av网址 | 久草免费资源 | 亚洲第一中文字幕 | 亚洲国产欧洲综合997久久, | 久久久久久蜜av免费网站 | 亚洲免费在线观看视频 | 国产美女视频 | 国产资源网站 | 午夜国产在线观看 | av在线免费网站 | 天天干天天干天天干天天干天天干天天干 | 一区二区三区国产欧美 | 中文字幕久久精品亚洲乱码 | 成人免费电影 | 国内99视频 | 国产精品麻豆一区二区三区 | 精品一区二区亚洲 | 人人看97| 亚洲2019精品| 国产日产精品一区二区三区四区 | 日日干av| 日日干天夜夜 | 91麻豆精品一区二区三区 | 日韩一区在线播放 | 国产成人在线综合 | 特级西西444www大胆高清无视频 | 日韩成人免费在线 | 国色天香永久免费 | 国产福利一区在线观看 | 一区在线观看 | 免费在线观看日韩 | 国产精选视频 | 色在线免费观看 | 欧美一区二区三区免费看 | 成人亚洲网 | 国产免费资源 | 国产黄色免费在线观看 | 久久男人视频 | 日韩v欧美v日本v亚洲v国产v | 欧美日韩视频一区二区 | 黄污网| 国产一级片不卡 | 久久久私人影院 | 亚洲精品在线看 | 欧美日韩另类在线 | 午夜美女福利 | 国产91精品一区二区 | 中文字幕在线不卡国产视频 | 深爱开心激情 | 91九色在线视频观看 | 亚洲综合色婷婷 | 亚洲综合色激情五月 | 色播五月婷婷 | 97视频久久久 | 在线观看中文字幕视频 | 亚洲精品国产精品99久久 | 免费一级日韩欧美性大片 | 日日夜夜av| 又大又硬又黄又爽视频在线观看 | 久久av观看| 久久久香蕉视频 | 天天综合网久久 | 国产精久久久久久久 | 狠色在线 | 99精品视频免费 | 国内成人av | 国产精品嫩草影院123 | 在线观看黄色小视频 | 丁香久久久 | 国产专区第一页 | 91爱看片 | 天天插天天狠 | 国产成人一区二区啪在线观看 | 国内外激情视频 | 国产视频一区二区三区在线 | 成人黄色免费在线观看 | 亚洲一级影院 | 国产亚洲一区二区三区 | 麻豆视频在线看 | 特片网久久 | 亚洲欧洲精品一区二区 | 国产亚洲精品久久久久久久久久 | 一本一本久久a久久精品综合妖精 | 国产精品少妇 | 国产精品资源 | 欧美激情综合五月色丁香 | 亚洲欧美经典 | 国产精品国产三级国产不产一地 | 欧美作爱视频 | 久久免费视频在线 | 日韩女同一区二区三区在线观看 | 在线观看亚洲国产 | 黄色小说免费观看 | 国产99一区视频免费 | 99视频99| 国产成人99av超碰超爽 | 国产精品免费看久久久8精臀av | 国产在线一线 | 日韩电影在线观看中文字幕 | 国产91在线免费视频 | 欧美性色综合网 | 亚洲最新av网址 | 夜夜高潮夜夜爽国产伦精品 | 久久久久成 | 五月婷在线 | 韩国精品在线 | 久久视频二区 | 最近高清中文在线字幕在线观看 | 亚洲干视频在线观看 | 亚洲三级黄色 | 国产福利一区二区三区在线观看 | 国产一区二区高清 | 国产精品国产三级在线专区 | 亚洲国产丝袜在线观看 | 日日干日日色 | 久久国产福利 | 国产在线观看不卡 | 中文字幕在线观看完整 | 国产精品久久久久久久久久三级 | 亚洲乱码一区 | 久久综合久久综合久久 | 精品国产免费看 | 91麻豆精品国产自产在线 | 欧美乱淫视频 | 韩国一区二区在线观看 | 精品国产激情 | 在线播放国产一区二区三区 | 缴情综合网五月天 | 日韩精品欧美专区 | 国产精品 国产精品 | 日韩女同一区二区三区在线观看 | 中文字幕专区高清在线观看 | 天天天天综合 | 国产精品成人国产乱一区 | 国产破处视频在线播放 | 日韩电影在线观看一区 | 久久黄视频| 五月天激情综合 | 久久99国产视频 | 国产成人av网址 | 最近中文字幕国语免费av | 中文不卡视频 | 久久精品中文字幕少妇 | 国产精品男女视频 | 在线视频一区二区 | 国内精品久久天天躁人人爽 | 奇米网在线观看 | 国内精品视频一区二区三区八戒 | 99一区二区三区 | 激情视频一区二区三区 | 久久99精品久久久久久秒播蜜臀 | 色福利网站 | 成年人在线观看免费视频 | av手机版 | 亚洲专区一二三 | 91在线精品播放 | 香蕉视频导航 | 国产精品第52页 | 91精品国产乱码 | 成人午夜av电影 | 国产福利91精品一区二区三区 | 欧美男男tv网站 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 天天操天天干天天爽 | 午夜久久视频 | 涩涩爱夜夜爱 | 天天躁日日躁狠狠躁av中文 | 中文字幕日韩高清 | 日韩免费成人 | 99久久精品午夜一区二区小说 | 激情九九| 激情综合国产 | 亚洲精品一区二区18漫画 | 久久系列 | 99精品免费久久久久久久久 | 欧美专区亚洲专区 | 亚洲成人软件 | 国产成人三级一区二区在线观看一 | 国产婷婷一区二区 | 久久视频99| 日韩精品一区二区三区水蜜桃 | 99 国产精品| 国产一区二区电影在线观看 | 久久精品视频3 | 97视频在线观看免费 | 在线一区二区三区 | 午夜精品一区二区三区在线观看 | 欧美激情第八页 | 日韩亚洲欧美中文字幕 | 不卡视频一区二区三区 | 在线国产精品一区 | 中文字幕在线免费97 | 久草视频手机在线 | 精品播放 | 久久免费毛片视频 | 在线 精品 国产 | 中文字幕在线免费看 | 日韩精品视频网站 | 中国黄色一级大片 | 国产v在线播放 | 久久婷婷一区 | 欧美精品久久久久久久久老牛影院 | 色网av | 99这里都是精品 | 国产伦精品一区二区三区照片91 | 最近日本韩国中文字幕 | 天天色播 | 国产乱对白刺激视频不卡 | 午夜精品av| 婷婷丁香色综合狠狠色 | 国产手机精品视频 | 最新超碰在线 | 狠狠婷婷 | 国产高清视频在线观看 | 蜜臀久久99精品久久久久久网站 | 国产成人精品一区二区三区网站观看 | 欧美色图东方 | 在线视频 亚洲 | 免费三级网 | 久久午夜电影院 | 国产69久久| 日韩影视在线观看 | 96超碰在线 | 成人精品视频 | 亚洲 精品在线视频 | 欧美色一色 | 日日成人网 | 九九九九九九精品任你躁 | 九九免费精品视频在线观看 | 66av99精品福利视频在线 | 久久久综合精品 | 精品黄色在线 | 精品a视频 | 黄色三级免费看 | 国产一二区免费视频 | 黄色成人av | 成人av网页 | 激情网五月天 | 色丁香婷婷 | 日韩经典一区二区三区 | 成人av.com | 国产黄色美女 | 久久不射网站 | 国产在线看 | 久草在线视频国产 | 欧美成亚洲 | 在线视频欧美日韩 | 96av麻豆蜜桃一区二区 | 国产亚洲在线视频 | 国产色综合天天综合网 | 国模一二三区 | 亚洲高清在线观看视频 | 人人澡超碰碰97碰碰碰软件 | 欧美日韩性生活 | 国产福利一区二区三区在线观看 | 丝袜美女视频网站 | av成人免费在线看 | 日韩欧美91| 色综合天天色综合 | 国产成人综合在线观看 | 国产亚洲精品久 | 欧美视频网址 | 狠色在线| 色婷婷免费视频 | 国产成人区| 日韩三级视频在线观看 | 91在线看片 | 欧美日韩在线观看一区 | 国产精品va在线 | 日本在线观看一区二区三区 | 日韩亚洲在线 | 五月婷婷六月丁香 | 99久久久国产精品免费99 | 亚洲综合成人专区片 | 国产韩国精品一区二区三区 | 国产精品国产三级在线专区 | 中文字幕人成一区 | 久久蜜臀一区二区三区av | 毛片www| 欧美日本日韩aⅴ在线视频 插插插色综合 | 久久成人毛片 | 色99之美女主播在线视频 | 久久久久久久久久久国产精品 | 精品亚洲va在线va天堂资源站 | 亚洲综合色视频 | 视频福利在线观看 | 天天摸天天操天天舔 | 麻豆免费观看视频 | 精品久久精品 | 色永久免费视频 | 精品久久国产 | 久久黄色免费视频 | 国产精品理论片在线播放 | 欧美三级在线播放 | 久久在线精品 | 网站在线观看日韩 | 玖玖精品在线 | 欧美日韩国产综合网 | 色婷婷综合视频在线观看 | 欧洲不卡av| 国产精品久久久久久久久蜜臀 | 伊人天堂网 | 免费的黄色的网站 | 成人四虎 | 欧美一区成人 | 日韩av中文字幕在线免费观看 | 黄色毛片在线观看 | 亚洲黄色片一级 | 国产精品久久久久久久久久ktv | 婷婷草 | 久久久久久高潮国产精品视 | 久久99精品热在线观看 | 日韩有码第一页 | 91精品国产91久久久久久三级 | 色吊丝在线永久观看最新版本 | 日本aaaa级毛片在线看 | 97国产精品 | 97成人精品视频在线观看 | 国产精品福利久久久 | 色综合五月 | 天天av天天| 日韩国产精品一区 | 91色国产在线 | 久久毛片网站 | 久久99久久久久久 | 国产亚洲人成网站在线观看 | 亚洲一区二区三区miaa149 | 男女精品久久 | 不卡av在线免费观看 | 国产成人在线观看免费 | 国产短视频在线播放 | 日韩av一区二区在线影视 | 精产嫩模国品一二三区 | 成人黄色av免费在线观看 | 麻豆影视在线播放 | 国产精品无av码在线观看 | 久久成人精品电影 | 天天色天天综合网 | 国产精品岛国久久久久久久久红粉 | 天天拍天天爽 | 夜夜夜精品 | av中文字幕不卡 | 中文字幕你懂的 | 黄色国产区 | 五月婷婷天堂 | 国产伦精品一区二区三区四区视频 | 亚洲日本在线一区 | av电影免费在线看 | 精品中文字幕在线 | 综合婷婷丁香 | 久久久官网 | 日韩| 手机看片 | 美女国产精品 | 久久久久 免费视频 | 丁香花在线观看视频在线 | 久久久 精品 | 国产精品美女久久久久久久久久久 | 日日夜夜av | 亚洲91在线 | 国产午夜精品一区二区三区四区 | 99久国产| 97精品国产97久久久久久久久久久久 | 亚洲成人黄色在线 | 91亚洲国产成人久久精品网站 | 天天干天天操天天操 | av电影一区二区三区 | 久久久久97国产 | 91视频一8mav| 91精品老司机久久一区啪 | 中文字幕在线观看免费高清电影 | 91精品国产自产在线观看永久 | 成人a毛片| 中国一级片免费看 | 欧美日韩国产色综合一二三四 | www.亚洲黄 | 国产一区二区三区免费视频 | 91精品国产99久久久久 | www.com在线观看 | 亚洲欧洲精品久久 | 国产视频 亚洲视频 | av先锋中文字幕 | 超级碰碰免费视频 | 亚洲精品久 | 九九免费精品视频 | 人人狠| 一区二区三区免费在线播放 | 国内揄拍国内精品 | 国产综合婷婷 | 99精品国产免费久久久久久下载 | 国产一区精品在线 | 亚洲欧美婷婷六月色综合 | 亚洲最大成人网4388xx | 成人久久 | 91精品福利在线 | 又湿又紧又大又爽a视频国产 | 亚洲 欧美 另类人妖 | 久久久久久国产精品 | 91精品国产一区二区在线观看 | 在线中文字母电影观看 | av看片在线观看 | av网站在线观看免费 | 中文字幕在线观看播放 | 天天操夜夜逼 | 日韩精品短视频 | 国产资源精品在线观看 | 一区中文字幕 | 亚洲永久在线 | 久久久香蕉视频 | www.xxxx欧美| 国产精品欧美日韩 | 国内精品久久久久久久97牛牛 | 黄色成年 | 最新中文字幕在线观看视频 | 不卡国产在线 | 狠狠干天天操 | 超碰成人免费电影 | 免费视频久久久久 | 天天天天干 | 麻豆精品在线视频 | 国产三级午夜理伦三级 | 成人在线观看免费视频 | 日韩视频免费 | 成人影片免费 | 97精品国产91久久久久久 | 一区二区不卡在线观看 | 天天综合中文 | 在线观看日韩精品 | 91网在线 | 亚洲精品国久久99热 | 伊甸园av在线 | 在线观看中文字幕一区 | 国产亚洲综合精品 | 伊人天堂网 | 久久综合九色综合97_ 久久久 | 久精品一区 | 日韩欧美一区二区三区视频 | 丁香av | 日韩久久激情 | 91免费视频网站在线观看 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 国产精品va最新国产精品视频 | 三级黄色欧美 | 91精品系列 | 四虎欧美| 狠狠伊人 | 六月色| 麻豆传媒精品 | 天天射天天搞 | 正在播放五月婷婷狠狠干 | 色婷婷精品大在线视频 | 成人播放器 | 日韩在线观看视频在线 | 国产精品99在线播放 | 国产原创在线 | 亚洲激情校园春色 | 久久精品中文字幕免费mv | 亚洲电影久久久 | 色婷婷激情电影 | 欧美日韩免费一区二区 | 国产成人精品在线观看 | 国产91精品在线播放 | 色婷婷一区 | 黄av免费 | 91手机电影 |