基于SPB的文件上传下载(随手笔记)

Based on Course"基于SpringBoot和Mybatis企业级文件上传下载项目实战"

引用的Maven包

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.mariadb.jdbc</groupId>
            <artifactId>mariadb-java-client</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <scope>runtime</scope>
            <version>1.2</version>
        </dependency>

        <!-- slf4j -->
        <dependency>
            <groupId> org.apache.cassandra</groupId>
            <artifactId>cassandra-all</artifactId>
            <version>0.8.1</version>

            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>

        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.19</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>
    </dependencies>

关于跳转

redirect型

return "redirect:/File/ViewAll";

这种可以实现页面跳转,地址跳转,并且通过session信息传递Msg。

直接跳转型

return "ViewAll.html";

这种可以实现页面跳转,但是地址不跳转,并且可通过Model model.addAttribute形式传递Msg。

关于SPB项目类、接口的创建顺序

1、先设计数据库表;

2、根据数据库表创建对象 Entity;

3、根据对象创建EntityDAO接口;注意在MainApplication中添加@MapperScan注解

Field xxxMapper in com.xxx.service.impl.xxxServiceImpl required a bean of type : 添加 @MapperScan("com.example.demo.dao")

4、根据EntityDAO进行EntityDAOMapper实现;

<select id="方法名" parameterType="入参对象类型" resultType="出参对象类型">
    ……
</select>

5、业务层实现 EntityService及EntityServiceImpl;

·EntityService写方法;
·EntityServiceImpl去实现对应Service的方法(@Override),
    (1) 需要@Service和@Transactional注解;
    (2) EntityServiceImpl中需要注入EntityDAO;

6、Controller层实现

注入EntityService对象去实现功能

Thymeleaf 模板引擎相关

相关引用

1、声明
<html xmlns:th="http://www.thymeleaf.org">
2、引用

(1)、Model对象,Session对象引用

<span th:text="${modelName}"/>

(2)对象遍历

<tr th:each="obj,objStat:${Obj(List)}">
    <td><span th:text="obj"/></td>
</tr>

th:each属性用于迭代循环,语法:th:each="obj,iterStat:${objList}"

迭代对象可以是Java.util.List,java.util.Map,数组等;

iterStat称作状态变量,属性有:

  index:当前迭代对象的index(从0开始计算)

  count: 当前迭代对象的index(从1开始计算)

  size:被迭代对象的大小

  current:当前迭代变量

  even/odd:布尔值,当前循环是否是偶数/奇数(从0开始计算)

  first:布尔值,当前循环是否是第一个

  last:布尔值,当前循环是否是最后一个

(3)、判断

<div th:if="${#lists.isEmpty(orders)}"> 
     NO ORDERS.
</div>

(4)、格式化输出

· 时间

<span th:text="${#dates.format(user.date, 'yyyy-MM-dd')}" />

SPB相关

获取路径

(1)、获取Resources目录

//classpath获取到的就是resources目录的绝对路径,如需获取子目录,自行拼接路径即可
String resourcesPath = ResourceUtils.getURL("classpath").getPath();
文件操作
//文件存储
File f = new File(destFileName);
f.transferTo(new File(destFolderPath,destFileName));
substring

image

□FINISH

posted @ 2021-10-07 20:53  ZaMonopaper  阅读(136)  评论(0)    收藏  举报