Spring MCV-文件下载
在 springmvc 应用程序中下载文件有几种方法:
HttpServletRespone: 使用 HttpServletResponse 将文件直接写入 ServletOutputStream
ResponseEntity<InputStreamResource>: 返回包装在 ResponseEntity 中的 InputStreamResource 文件
ResponseEntity<ByteArrayResource>: 可以返回包装在 ResponseEntity 中的 ByteArrayResource 文件
HttpServletRespone
@GetMapping("/download")
public void downl...
shell 重启 Spring Boot
# 通过端口号获取旧线程的 pid
pid=`lsof -i:8080 | grep -v COMMAND | awk '{print $2}'`
# 结束旧线程
echo "旧应用进程id:$pid"
if [ -n "$pid" ]
then
kill -9 $pid
fi
# 启动新线程
nohup java -jar /path/service-1.0-SNAPSHOT.jar &
# 查询新线程的 pid
npid=`lsof -i:8080 | grep -v COMMAND | awk '{print $2}'`
echo "新的进程 $npid"
echo "启动成功_"
sleep 2
# 显示 log
tail -f /path/logs/serv...
thymeleaf替换回车为br标签
项目中使用 thymeleaf 生成邮件信息,当数据中有换行符时,邮件内容无法正常显示换行(特别是使用 Outlook)
尝试通过设置style="white-space: pre-wrap;word-wrap: break-word;"让其显示换行
邮箱查看邮件内容,换行符生效,Outlook 查看邮件内容,换行符无效
通过搜索得知<br>可以正常显示换行,故需要将数据中的换行替换为<br>
可以通过代码将换行字符串替换为<br>,后 thymeleaf 中将th:text替换为th:utext即可,如下:
<dir th:utext="${content}"></dir>
或者使用 thymeleaf 的语法将换行符...
Spring MVC 路径参数和路径冲突
SpringMVC可以对 @RequestMapping 中的URL进行匹配, 转发到相应的Controller方法
也可以获取 URL 中的值作为参数
例如
@GetMapping(value = "/test/{pathValue}")
public String test(@PathVariable("pathValue") String aa) {
return "PathVariable Value: " + aa;
}
@GetMapping(value = "/test/aa")
public String test1() {
return "Path: /aa";
}
当访问 /test/aa 时, 返回 Path: /aa
当访问 /te...
Spring-Boot 整合 DBUnit 单元测试
Spring-Boot 整合 DBUnit 对 Dao 层进行单元测试
Dao 层查询方法的单元测试相对简单,将数据查询出来,再在代码中用 assert 方法进行测试即可
但是 Dao 层的插入/更新/删除 方法的单元测试相对难写
可以借助 DBUnit 辅助编写单元测试
DBUnit 的测试流程是
开启事务
将数据库中的数据更新为期望的初始状态
执行测试代码
将数据库中的数据与预期结果(xml/csv/excel等文件)进行比对,与预期不符则测试失败
事务回滚
对于不同的 @Test 测试方法,需要不同的初始状态及预期结果,DBUnit 提供了 @DatabaseSetup @ExpectedDatabase @DatabaseTearDown
等注解,作...
Spring MVC-单元测试示例
记录 Spring Boot 中 Spring MVC 的单体测试样例, 方便以后写单体测试直接复制粘贴
包括:
GET 请求
GET 请求文件下载
POST 请求
POST 请求文件上传
环境准备(Prerequisite)
JDK 1.8
Maven 3.5.4
设置(Configuration)
Maven 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${s...
数据库表备份
CREATE TABLE ... AS ... 语法可以备份表结构和数据
INSERT INTO ... SELECT ... 语法可以备份表数据
将表 t_table 的表结构及数据备份到 t_table_bk
CREATE TABLE t_table
AS
SELECT * FROM t_table_bk
将表 t_table 的表结构备份到 t_table_bk
CREATE TABLE t_table
AS
SELECT * FROM t_table_bk
WHERE 1=2
注意:备份的表没有原表的主键信息, 所以不能直接改表名当作原表使用
将插入备份表
INSERT INTO t_table_bk
SELECT * FROM t_table
[WHERE fi...
共计 49 篇文章,7 页。