基于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

□FINISH

浙公网安备 33010602011771号