web后端开发(javaweb第十天)

发布于:2025-07-18 ⋅ 阅读:(18) ⋅ 点赞:(0)

开发规范-Restful

表述性状态转移,他是一种软件架构风格
描述模块功能通常用复数(加s),表示此类资源

HTTP 方法 含义 RESTful 表现 示例 URI
GET 查询资源 获取某个资源或资源列表 /users(用户列表),/users/1(ID为1的用户)
POST 创建资源 新增一个资源 /users(创建新用户)
PUT 更新资源 更新整个资源(幂等) /users/1(更新用户1信息)
PATCH 局部更新 更新部分字段 /users/1(只改名等)
DELETE 删除资源 删除某个资源 /users/1(删除用户1)
操作 方法 URI 描述
获取用户列表 GET /users 获取所有用户
获取指定用户 GET /users/1 获取ID为1的用户
创建新用户 POST /users 创建用户(请求体中传 JSON)
更新用户信息 PUT /users/1 更新用户1的全部字段
局部更新 PATCH /users/1 更新用户1的部分字段
删除用户 DELETE /users/1 删除用户1

人话:动作不写在url里面,由http响应类型决定

前后端统一响应结果(Result)

字段 类型 含义
code int 状态码,如 200 成功,400 参数错误
message String 对应状态的消息提示
data 任意类型 返回的真实业务数据,如对象、列表、分页结果等

开发流程

明确需求
接口文档
思路分析
接口开发

接口调试

postman测试
前后端联调

日志技巧

直接使用 @Slf4j标签

公共的路径可以抽取在@RequestMapping(“/depts”)

设置请求参数默认值

@RequestParam(defaultValue=“1”)

PageHelper分页插件

引入依赖

<!--        分页查询依赖-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.7</version>
        </dependency>

使用:

 //1、设置分页参数
        PageHelper.startPage(page,pageSize);
        //2、执行查询
        List<Emp> empList=empMapper.list();
        Page<Emp> p=(Page<Emp>) empList;
        //3、封装pageBean对象
        PageBean pageBean=new PageBean((int) p.getTotal(),p.getResult());

注意:在编写SQL语句时不要在后面加;,因为PageHelper会自动在后面加上limit限制和;

感想

请求参数:参考前面博客

使用参数:
单个参数、对象参数可以直接用属性名
多个参数需要用@param绑定或者配置保留形参名配置

MySQL返回结果给对象
需要保障对象名对应
不对应需要别名一样,或者绑定,或者开启驼峰与下划线名字映射配置

文件上传

将本地数据上传到服务器,供其他用户浏览下载

前端页面三要素:
表单项type=“file”
表单提交方式:post
表单的entrytype属性:multipart/form-data

服务端接收文件:MultipartFile image(形参)
接收的是临时文件,请求结束自动删除

转化为字符串的方法以及细节

场景 推荐用法
把任何对象转成字符串(调试、日志) String.valueOf(obj) ✅ 安全、null 也不会错
对象已经是 String 类型,想强转 (String) obj ✅ 仅限确切类型已知
可能是 null 的对象想要字符串 String.valueOf(obj) ✅ 推荐方式

文件存储

本地存储

将文件存储在本地服务器磁盘中

image.transferTo(new File(pathname));

防止上传的文件名重复导致覆盖
使用uuid(通用唯一识别码)解决
UUID.randomUUID.toString()

文件存储:

@Slf4j
@RestController
public class UploadController {
    @PostMapping("/upload")
    public Result upload(MultipartFile image) throws Exception {
        String originalFilename=image.getOriginalFilename();

        String newFilename= UUID.randomUUID().toString()+originalFilename.substring(originalFilename.lastIndexOf("."));

        image.transferTo(new File("D:/tmp/"+newFilename));
        return Result.success();
    }
}

注意:spring中上传文件大小默认为1M,大文件需进行如下配置

本地存储现在不怎么用了
因为:浏览器无法直接访问、服务器磁盘有限、磁盘坏了

方法:
1、自己搭建存储集群(FastDFS、MinIO)
2、使用云服务

第三方服务-通用思路

准备->参考SDK(软件开发工具包)->集成使用

配饰文件

问题:用到不同技术配置信息放在java类中不便于集中管理

@value:外部配置的属性注入
用法:@value(“${配置文件中的key}”)

   @Value("${Aliyun.oss.endpoint}")
    private String endpoint;
    @Value("${Aliyun.oss.bucketName}")
    private String bucketName;
    @Value("${Aliyun.oss.region}")
    private String region;


Aliyun.oss.endpoint=https://oss-cn-beijing.aliyuncs.com

Aliyun.oss.bucketName=web-tlias-lhx

Aliyun.oss.region =cn-beijing

配置文件类型(yml)

XML:结构好但是臃肿
properties:层级结构不清晰
yml:结构清晰,简洁

yml基础语法:

大小写敏感

数字左边必须有空格,作为分隔符

使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格(idea自动转换)

缩进的空格数目不重要,只要相同层级的元素左对齐即可

#表示注释,从这个字符一直到行尾,都会被解析器忽略

#定义对象/Map集合
user:
  name: Tom
  age: 20
  address: beijing

#定义数组/List/Set集合
hobby:
  - java
  - c
  - game
  - sport

@ConfigurationPeoperties注解(设置前缀)
@Value标签比较繁琐,用以代替

使用的前提:
key值需要与字段名形同
设置get、set方法(@Data标签)

@ConfigurationPeoperties批量将外部属性配置注入到bean对象属性中
(属性多,想复用时用)
@Value一个一个进行外部属性注入(属性少时候用)


网站公告

今日签到

点亮在社区的每一天
去签到