@Componentpublic classBannerHandler {
@AutowiredprivateBannerService bannerService;public MonogetList(ServerRequest request) {//获取请求参数
String page = request.queryParam("page").orElse("1");
String size= request.queryParam("rows").orElse("5");
DataGridVO result =bannerService.getList(Integer.valueOf(page), Integer.valueOf(size));returnServerResponse.ok().body(BodyInserters.fromObject(result));
}public Monoupdate(ServerRequest request) {//参数序列化为实体类进行更新
return request.bodyToMono(Banner.class).flatMap(banner ->{returnServerResponse.ok().contentType(MediaType.APPLICATION_JSON_UTF8)
.body(BodyInserters.fromObject(bannerService.update(banner)));
});
}public Monodeletes(ServerRequest request) {//获取路径中的参数作用等同于 @PathVariable
String ids = request.pathVariable("ids");
Assert.hasText(ids,"ids不能为空");return ServerResponse.ok().body(BodyInserters.fromObject(bannerService.deletes(ids.split(","))));
}public Monoinit(ServerRequest request) {
Map map = new HashMap<>();
map.put("name", "aqiu");
map.put("time", newDate());
List list = new ArrayList();
list.add("param1");
list.add("param2");
list.add("param3");
map.put("list", list);//返回thymeleaf模版页面
return ServerResponse.ok().render("index", map);
}public Monoupload(ServerRequest request) {//获取文件参数 并进行存储
return request.multipartData().flatMap(map ->{
map.forEach((k, v)->{
v.forEach(i->{
FilePart f=(FilePart) i;
f.transferTo(new File("/tmp/" +f.filename()));
});
});returnServerResponse.ok().contentType(MediaType.APPLICATION_JSON_UTF8)
.body(BodyInserters.fromObject(map.size()));
});
}public Monodownload(ServerRequest request) {//读取文件并包装为DataBuffer返回,spring-webflux会自动写入response
File file = new File("/tmp/test.jpeg");return ServerResponse.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=test.jpeg")
.contentType(MediaType.IMAGE_JPEG).contentLength(file.length())
.body(BodyInserters.fromDataBuffers(Mono.create(r->{
DataBuffer buf= newDefaultDataBufferFactory().wrap(FileIOUtil.syncRead(file));
r.success(buf);return;
})));
}
}