Day10.SpringBootWeb案例 8.2+8.4
- 环境搭建
1.创建一个SpringBoot工程,选择引入对应的起步依赖(web、mybatis、mysql驱动、lombok) 2.准备数据库表(mysql),及对应的实体类(pojo) 3.在application.properties中引入数据库连接信息 4.准备对应的Mapper接口、Service(...Service/...ServiceImpl)、Controller的基础代码 |
- 开发规范
REST风格 Get:查询 Post:新增 Put:修改 Delete:删除 统一响应结果 Result (pojo类) |
3.开发一个功能需要经历哪些流程?
1)查询页面原型明确需求 (前端传给服务器的信息格式)
2)阅读接口文档(已提供,接口怎么定义的,请求参数,请求路径,请求方法,请求响应,接口描述)
3)思路分析 (怎么写代码)
4)接口开发:开发后台的业务功能,一个业务功能,我们称为一个接口。
5)接口测试:通过Postman进行接口测试,测试通过后,和前端进行联调测试。
6)前后端联调测试:和前端开发人员开发好的前端工程一起测试。
- 开发
Controller层 2.定义方法和形参 (方法名与service层对应) 3.用Service对象的方法 4.返回值return Result... |
Service层
|
Mapper层(dao层) 定义方法(返回值类型,可以没有,根据实际) 用注解或映射去实现对sql的数据处理 |
返回值没有相应的类型,(可以定义pojo/bean) |
分页插件(PageHelper)
依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.2</version> </dependency> |
@Override public PageBean page(Integer page, Integer pageSize) { PageHelper.startPage(page, pageSize); // 设置分页参数 List<Emp> empList = empMapper.list(name,gender,begin,end); // 执行分页查询 Page<Emp> p = (Page<Emp>) empList; // 获取分页结果 PageBean pageBean = new PageBean(p.getTotal(), p.getResult()); //封装PageBean return pageBean; } |
文件上传
前端代码 在resources文件夹中创建一个fileupload.html网页文件,如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件上传</title> </head> <body> <form action="/upload" method="post" enctype="multipart/form-data"> 姓名: <input type="text" name="name"/><br/> 年龄: <input type="text" name="age"/></br> 图片: <input type="file" name="image"/><br/><br/> <input type="submit" value="提交"/> </form> </body> </html> 上传文件的原始form表单,要求表单必须具备以下三点(上传文件页面三要素):
|
后段代码(Controller层)
@RestController public class UploadController { @PostMapping("/upload") public Result upload(MultipartFile image) throws IOException { System.out.println(image.getName) return Result.success(); }} |
SpringBoot中的上传文件大小
#配置单个文件的最大上传大小 spring.servlet.multipart.max-file-size=10MB #配置单个请求最大上传大小(一次请求可以上传多个文件) spring.servlet.multipart.max-request-size=100MB |
阿里云OSS
依赖 <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.15.0</version> </dependency> 工具类 @Component public class AliOSSUtils {
private String endpoint = "换成自己bucket的地址"; private String accessKeyId = "替代为自己的accessKeyId"; private String accessKeySecret = "替代为自己的accessKeySecret"; private String bucketName = "替代为自己的bucketName"; /** * 实现上传图片到OSS */ public String upload(MultipartFile multipartFile) throws IOException { // 获取上传的文件的输入流 InputStream inputStream = multipartFile.getInputStream(); // 避免文件覆盖 String fileName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss")) + multipartFile.getOriginalFilename(); //上传文件到 OSS OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); ossClient.putObject(bucketName, fileName, inputStream); //文件访问路径 String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
// 关闭ossClient ossClient.shutdown(); return url;// 把上传到oss的路径返回 } } Controller层 @RestController public class UploadController { @Autowired private AliOSSUtils aliOSSUtils; @PostMapping("/upload") public Result upload(MultipartFile image) throws IOException { String url = aliOSSUtils.upload(image); return Result.success(url); } } |
配置文件value 在配置文件中
配置文件中写键=值 @Value(“${键}”) 对应类中变量上 |
Yml
|