关键词

基于spring+hibernate+JQuery开发之电子相册(附源码下载)

本文介绍了基于Spring、Hibernate和JQuery技术栈来开发电子相册的完整攻略。电子相册是一种可以在Web端展示相片的应用程序。

1. 环境要求

  • JDK:1.8+
  • Eclipse IDE:4.7+(Photon/2018年版)
  • Maven:3+
  • Tomcat:8+
  • MySQL:5.6+
  • Spring Framework:5.0+
  • Hibernate:5.2+

2. 开始开发

2.1 创建Maven项目

新建一个Maven项目并从Maven中央仓库中下载所需的依赖。在Maven的pom.xml文件中加入以下配置:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>${spring.data.jpa}</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${hibernate.version}</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${javax.servlet.version}</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>log4j-over-slf4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>${hibernate.validator.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring.security.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring.security.version}</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>
</dependencies>

2.2 创建数据库

在MySQL中创建一个名为photo_album的数据库,并添加以下数据表:

  • album
  • photo
  • sequence

其中,album表包含相册的名称、创建者等信息。photo表则包含相片的URL、描述等信息。sequence表是一个自动递增的序列表,用于生成ID值。

2.3 配置Hibernate

在src/main/resources目录下创建hibernate.properties配置文件,并添加以下内容:

hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost/photo_album?useSSL=false&serverTimezone=GMT
hibernate.connection.username=root
hibernate.connection.password=123456

hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.hbm2ddl.auto=create

hibernate.show_sql=true
hibernate.format_sql=true
hibernate.use_sql_comments=true

2.4 创建实体类

新建Album、Photo和Sequence实体类,并为其添加Getter和Setter方法。这些实体类与数据库中的表对应。

2.5 创建DAO接口和实现类

  • AlbumDao和AlbumDaoImpl类
  • PhotoDao与PhotoDaoImpl类

2.6 配置Spring

在src/main/resources目录下创建spring-context.xml文件,并添加以下内容:

<context:component-scan base-package="com.xiao.album"/>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>
    <property name="persistenceUnitName" value="mysql"/>
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true"/>
            <property name="generateDdl" value="true"/>
            <property name="database" value="MYSQL"/>
        </bean>
    </property>
</bean>

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
    <property name="dataSource" ref="dataSource"/>
</bean>

<tx:annotation-driven/>

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>

<bean id="sequenceDao" class="com.xiao.album.dao.SequenceDaoImpl"/>

<bean id="photoDao" class="com.xiao.album.dao.PhotoDaoImpl">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

<bean id="albumDao" class="com.xiao.album.dao.AlbumDaoImpl">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

2.7 创建Servlet

在src/main/java目录下创建一个名为com.xiao.album.controller的包,新建IndexServlet和UploadServlet两个Servlet。

IndexServlet用于显示电子相册的界面,UploadServlet用于上传相片。

并在web.xml文件中添加以下内容:

<web-app>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-context.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>indexServlet</servlet-name>
        <servlet-class>com.xiao.album.controller.IndexServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>uploadServlet</servlet-name>
        <servlet-class>com.xiao.album.controller.UploadServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>indexServlet</servlet-name>
        <url-pattern>/index</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>uploadServlet</servlet-name>
        <url-pattern>/upload</url-pattern>
    </servlet-mapping>
</web-app>

2.8 创建前端UI

基于JQuery和Bootstrap来开发Web应用程序的前端UI。

示例1:添加相册

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Photo Album</title>
    <link rel="stylesheet"
      href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
      integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
      crossorigin="anonymous"/>
</head>
<body>
    <div class="container">
        <h1>Create a New Album</h1>
        <form action="/album/create" method="post">
            <div class="form-group">
                <label for="albumName">Album Name</label>
                <input type="text" class="form-control" name="albumName" id="albumName" required/>
            </div>
            <div class="form-group">
                <label for="description">Description (Optional)</label>
                <textarea class="form-control" rows="3" name="description" id="description"></textarea>
            </div>
            <button type="submit" class="btn btn-primary">Create</button>
        </form>
    </div>
    <script
      src="https://code.jquery.com/jquery-3.2.1.min.js"
      integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
      crossorigin="anonymous"></script>
</body>
</html>

示例2:上传照片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Photo Album</title>
    <link rel="stylesheet"
      href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
      integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
      crossorigin="anonymous"/>
</head>
<body>
    <div class="container">
        <h1>Upload a Photo</h1>
        <form action="/photo/upload" method="post" enctype="multipart/form-data">
            <div class="form-group">
                <label for="albumId">Album ID</label>
                <input type="text" class="form-control" name="albumId" id="albumId" required/>
            </div>
            <div class="form-group">
                <label for="photoFile">Photo File</label>
                <input type="file" name="photoFile" id="photoFile" accept=".jpg,.png,.bmp" required/>
            </div>
            <div class="form-group">
                <label for="description">Description (Optional)</label>
                <textarea class="form-control" rows="3" name="description" id="description"></textarea>
            </div>
            <button type="submit" class="btn btn-primary">Upload</button>
        </form>
    </div>
    <script
      src="https://code.jquery.com/jquery-3.2.1.min.js"
      integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
      crossorigin="anonymous"></script>
</body>
</html>

3. 总结

本文介绍了基于Spring、Hibernate和JQuery技术栈来开发电子相册的完整攻略。其中,包括创建Maven项目、创建数据库、配置Hibernate、创建实体类、创建DAO接口和实现类、配置Spring、创建Servlet和创建前端UI。通过以上步骤,我们可以快速开发出一个可用性较高的电子相册应用程序。

本文链接:http://task.lmcjl.com/news/15819.html

展开阅读全文