欢迎访问宙启技术站
智能推送

基于SSM框架之个人相册示例代码

发布时间:2023-05-18 08:20:11

SSM框架是一种基于SpringMVC、Spring和MyBatis三个框架的整合开发模式,它可以简化开发人员开发过程中的许多重复工作。在本文中,我们将介绍如何基于SSM框架开发一个简单的个人相册示例。

1. 建立数据库

首先,我们需要在MySQL数据库中建立一个用于存储相册信息的数据库。可以通过以下SQL语句实现:

CREATE DATABASE photoalbum;

USE photoalbum;

CREATE TABLE photo (
    id INT(11) PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(50),
    path VARCHAR(100),
    create_time TIMESTAMP
);

这个数据库有一个名为“photo”的表,它包括四个字段:ID、标题、路径和创建时间。

2. 新建项目

在Eclipse中创建一个Web项目,选择Maven项目类型并选中相关依赖项,如下所示:

![1.jpg](https://i.loli.net/2021/12/18/k2qzQW9vrATLdEb.jpg)

3. 配置Spring框架

创建Spring配置文件(applicationContext.xml),将MyBatis和数据库连接池集成到Spring中,具体内容如下所示:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/photoalbum" />
    <property name="username" value="root" />
    <property name="password" value="admin" />
</bean>

<!-- MyBatis SQLSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
    <property name="mapperLocations" value="classpath:mybatis/mapper/*.xml" />
</bean>

<!-- MyBatis MapperScannerConfigurer -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="cn.edu.zucc.photoalbum.dao" />
</bean>

这里使用了阿里巴巴的Druid数据库连接池。

4. 配置MyBatis框架

创建MyBatis配置文件(mybatis-config.xml),用于配置MyBatis框架的基本信息,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 开启驼峰映射 -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>

    <!-- 映射文件所在的包 -->
    <mappers>
        <package name="cn.edu.zucc.photoalbum.dao" />
    </mappers>
</configuration>

在这个配置文件中,我们使用“<setting>”标签开启了MyBatis框架的驼峰命名规则,并使用“<mappers>”标签指定了Mapper映射文件所在的包。

5. 配置SpringMVC框架

创建SpringMVC配置文件(springmvc-servlet.xml),用于配置SpringMVC框架的基本信息,如下所示:

<!-- 开启SpringMVC注解扫描 -->
<mvc:annotation-driven />

<!-- 允许访问静态资源 -->
<mvc:default-servlet-handler />

<!-- 配置JSP视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

<!-- 静态资源映射 -->
<mvc:resources mapping="/static/**" location="/static/" />

在这个配置文件中,我们使用了“<mvc:annotation-driven>”标签开启了SpringMVC的注解扫描,并使用了“<mvc:default-servlet-handler>”标签开启了静态资源访问。同时,我们配置了JSP视图解析器,并使用“<mvc:resources>”标签实现了静态资源与URL的映射关系。

6. 创建控制器

创建控制器类(PhotoAlbumController.java),用于处理来自浏览器的请求,这个类中的方法会调用Service服务类中的方法,具体内容如下所示:

@Controller
@RequestMapping("/")
public class PhotoAlbumController {
    @Autowired
    private PhotoAlbumService photoAlbumService;

    @RequestMapping("")
    public String index(Model model) {
        List<Photo> photos = photoAlbumService.getAllPhotos();
        model.addAttribute("photos", photos);
        return "index";
    }
}

在这个控制器类中,我们使用了“<Controller>”注解标识这个类是一个控制器,并使用“<RequestMapping>”注解指定这个控制器的映射路径。然后声明了一个PhotoAlbumService类的Bean对象,并在@RequestMapping中的方法中调用了该Service类中的方法。

7. 创建服务层

创建服务层类(PhotoAlbumService.java),用于处理业务逻辑,具体内容如下所示:

@Service
@Transactional
public class PhotoAlbumService {
    @Autowired
    private PhotoAlbumDao photoAlbumDao;

    public List<Photo> getAllPhotos() {
        return photoAlbumDao.getAllPhotos();
    }
}

这个服务层类中,我们使用了“<Service>”注解标识这个类是一个服务层类,并使用了“<Transactional>”注解开启了事务处理。声明了一个PhotoAlbumDao类的Bean对象,并在getAllPhotos()方法中调用了该Dao类中的方法。

8. 创建数据访问层

创建数据访问层类(PhotoAlbumDao.java),用于访问数据库,具体内容如下所示:

public interface PhotoAlbumDao {
    List<Photo> getAllPhotos();
}

这个Dao接口中只有一个方法getAllPhotos(),用于查询所有的相册信息。

然后,我们创建这个Dao接口的实现类(PhotoAlbumDaoImpl.java),具体内容如下所示:

@Repository
public class PhotoAlbumDaoImpl implements PhotoAlbumDao {
    @Autowired
    private SqlSession sqlSession;

    @Override
    public List<Photo> getAllPhotos() {
        return sqlSession.selectList("cn.edu.zucc.photoalbum.dao.PhotoAlbumDao.getAllPhotos");
    }
}

这个Dao实现类中,我们使用了“<Repository>”注解标识这个类是一个Repository类,并声明了一个SqlSession类的Bean对象。在getAllPhotos()方法中,我们使用了MyBatis的Mapper文件中的SQL语句查询了所有的相册信息。

9. 创建页面视图

最后,我们创建相应的JSP页面视图,用户可以在浏览器中访问这些页面,查看相册信息。具体代码如下所示:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>我的相册</title>
    <link href="${pageContext.request.contextPath}/static/css/bootstrap.min.css" rel="stylesheet">
    <link href="${pageContext.request.contextPath}/static/css/style.css" rel="stylesheet">
</head>
<body>
<div class="container">
    <h3 class="text-center">我的相册</h3>
    <% for (Photo photo : photos) { %>
        <div class="col-md-3">
            <div class="thumbnail">
                <a href="#"><img src="${pageContext.request.contextPath}/${photo.path}" alt="${photo.title}"></a>
                <div class="caption">
                    <h4>${photo.title}</h4>
                    <p>${photo.create_time}</p>
                </div>
            </div>
        </div>
    <% } %>
</div>
</body>
</html>

在这个JSP页面中,我们使用了Bootstrap框架和自定义的CSS样式,实现了相册图片的展示效果。

10. 运行测试

最后,在浏览器中输入URL(http://localhost:8080/),就可以看到刚刚