赞
踩
重点是关注Controller,它主要进行接收请求,设置响应
对HTTP协议操作进行封装,简化web程序开发
部署web项目,对外提供网上信息浏览服务
轻量级web服务器,支持servlet,jsp等少量javaEE规范
也被称为web容器,servlet容器
Springboot有内置Tomcat
nginx并发比tomcat好一点但是tomcat是为java量身定做,nginx是为web做方向代理多点
3.0以上的springboot用JDK17
-starter都是起步依赖
在启动springboot会自动启动内嵌Tomcat,并占用端口号8080
专门存放实体类
pojo=>Plain Ordinary Java Object 就是普通java类,这是j2ee时代的名字和复杂j2ee对象做区分
请求参数名与形参一致,就可自动接收
参数对应不上,就要借助于注解@RequestParam
当请求参数过多,不如将参数封装到实体类中。
要求就是:请求参数名与形参属性名相同,定义POJO接受即可
服务端接收形式:数组、集合
请求POST,json数据需要通过请求体携带到后端。
JSON键名与形参对象属性名相同,定义POJO类型形参即可接收是参数,需要使用
@RequestBody
注解将json数据封装到实体对象中
服务端一般通过实体对象来接收
通过URL直接传递参数,即请求参数是请求路径的一部分
需要使用@PathVariable
获取路径参数
@RestController
=@ReponseBody
+@Controller
【也就是说这个@RestController已经包括了】
@ReponseBody
加了这个注解,当前类下所有方法的返回值都能作为相应数据,集合啥的都转换为JSON作为返回值
响应的格式:响应行+响应头+响应体
这个博客讲的很详细且有例子 SpringBoot常用的50个注解
1.@ResponseBody
的作用其实是将java对象转为json格式的数据,然后直接写入HTTP response 的body中;
@RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。
2.@RestController
=@ReponseBody
+@Controller
在类上用@RestController,其内的所有方法都会默认加上@ResponseBody,也就是默认返回JSON格式。将控制器方法的返回值转换为JSON格式,并以HTTP响应的方式返回给客户端。
@RestController和@Controller
的共同点是都用来表示Spring某个类是否可以接收HTTP请求,二者区别: @RestController无法返回指定页面,而@Controller可以;前者可以直接返回数据,后者需要@ResponseBody辅助。
3.@RequestBody
是作用在形参列表上,用于将前台发送过来固定格式的数据【xml格式 或者 json等】封装为对应的 JavaBean 对象,封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。
就是将JSON格式的数据封装到实体类中
4.@Transactional
是Spring框架中用于声明式事务管理的关键注解。通过使用@Transactional注解,我们可以更加方便地管理事务,保障数据的一致性和可靠性。用于声明式事务管理**,保证方法或类中的操作在同一个事务中执行**。
5.@RequestMapping
映射请求URL和处理方法。跳转路径
6.@GetMapping
用于映射HTTP GET请求。
7.@PostMapping
用于映射HTTP POST请求。
8.@RequestParam
用于获取请求参数的值。
9.@ConfigurationProperties
注解代表当前类是一个配置属性类,作用是:封装配置文件中的一些配置项。
原理就是:通过配置属性类,将配置文件中的配置项,封装成一个类,然后通过@Autowired注解注入到要使用的地方。
10.取的是路径参数,加注解@PathVariable
,如果和路径参数不同名,就要加括号双引号指明取的是哪个路径参数@PathVariable("status")
;如果同名,就不用加。
@PostMapping("/status/{status}")
@ApiOperation("启用禁用员工账号")
public Result startOrStop(@PathVariable Integer status,Long id){
log.info("启用禁用员工账号:{},{}",status,id);
employeeService.startOrStop(status,id);
return Result.success();
}
11.@Target(ElementType.METHOD)/
/指定注解只能加载方法上,@Retention(RetentionPolicy.RUNTIME)
运行时
创建自定义注解
annotation.AutoFill.java
Target注解指定加上什么上面,Retention注解指定什么时候用,
@Target(ElementType.METHOD)//指定注解只能加载方法上
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoFill {
//通过枚举-指定当前属性OperationType
//数据库操作类型OperationType:就两种 Update 和 Insert
OperationType value();
}
12.Swagger使用注解
@Api(tags = “员工相关接口”)
@RestController
@RequestMapping("/admin/employee")
@Slf4j
@Api(tags = "员工相关接口")//tags用来描述类的作用
public class EmployeeController {
@ApiOperation(“员工登录”)
@PostMapping("/login")
@ApiOperation("员工登录")
public Result<EmployeeLoginVO> login(@RequestBody EmployeeLoginDTO employeeLoginDTO) {
@ApiModel(description = “员工登录时传递的数据模型”)
@ApiModelProperty(“用户名”)
@Data
@ApiModel(description = "员工登录时传递的数据模型")
public class EmployeeLoginDTO implements Serializable {
@ApiModelProperty("用户名")
private String username;
@ApiModelProperty("密码")
private String password;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。