springboot 获取接口请求中的参数(@PathVariable,@RequestParam,@RequestBody)

本文介绍了 Spring Boot 中的三种请求参数注解:@PathVariable, @RequestParam 和 @RequestBody,详细阐述了它们的区别及使用场景。@PathVariable 用于绑定 URL 路径变量,@RequestParam 用于获取请求参数,而 @RequestBody 则用于获取请求体内容。文中通过实例展示了如何在不同的请求类型中使用这些注解,包括 GET、POST、PUT 请求,以及不同类型的请求数据格式。" 111915692,10543681,bind9配置问题:局域网内其他用户无法解析本地域名,"['DNS服务器', '网络配置', '服务器管理', 'Linux系统', '域名解析']
摘要由CSDN通过智能技术生成

一、 访问请求、URI、URL、请求参数 四者的区别

一个完整的请求路径:http://www.test.com/user/031267/view?username=zhangsan&age=20

请求URL (requestURL)= http://www.test.com/user/031267/view
请求URI (requestURI)= /user/031267/view
请求参数(queryString)= username=zhangsan&age=20

二、注解区别

1、@PathVariable: 映射 URL 绑定的占位符, 能使传过来的参数绑定到路由上

@PathVariable 可以将 URL 中 占位符参数 绑定到控制器处理 方法的入参 中:
URL 中的 { xxx } 占位符可以通过 @PathVariable("xxx") 绑定到操作方法的入参中。

请求路径 : http://www.test.com/user/031267/view?username=zhangsan&age=20
请求URL : http://www.test.com/user/031267/view

@RequestMapping(value = "/user/{userid}/view")  //占位符 userid
public String view ( @PathVariable("userid") String userid){
    //@PathVariable 中指定 userid
    System.out.println("userid= "+userid);   //此处可以获取:userid= 031267
    return SUCCESS;
}

2、@RequestParam :获取request请求参数中的值

请求路径:http://www.test.com/user/query?username=zhangsan&age=20
请求参数:username=zhangsan&age=20

@RequestMapping(value = "/user/query")
public String query(@RequestParam(value="username") String username) {
   	
	System.out.println("username = " + username);   //此处打印:username = zhangsan
	return SUCCESS;
}

@RequestParam有三个配置参数:

required

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用Spring Boot和MyBatis搭建一个web项目,并自定义学生表,并运用注解完成增删改查接口。同时,通过拦截器来打印每个接口的用时。 首先,确保你已经配置好了Spring Boot和MyBatis的环境。然后,创建一个名为Student的实体类,包含学生的信息。 ```java public class Student { private Long id; private String name; private Integer age; // 省略getter和setter方法 } ``` 接下来,创建一个名为StudentMapper的接口,用于定义数据库操作的方法。 ```java @Mapper public interface StudentMapper { @Insert("INSERT INTO student(name, age) VALUES(#{name}, #{age})") @Options(useGeneratedKeys = true, keyProperty = "id") int insert(Student student); @Delete("DELETE FROM student WHERE id = #{id}") int deleteById(Long id); @Update("UPDATE student SET name = #{name}, age = #{age} WHERE id = #{id}") int update(Student student); @Select("SELECT * FROM student WHERE id = #{id}") Student findById(Long id); @Select("SELECT * FROM student") List<Student> findAll(); } ``` 然后,创建一个名为StudentController的控制器类,用于处理请求。 ```java @RestController @RequestMapping("/students") public class StudentController { private final StudentMapper studentMapper; public StudentController(StudentMapper studentMapper) { this.studentMapper = studentMapper; } @PostMapping public Long createStudent(@RequestBody Student student) { studentMapper.insert(student); return student.getId(); } @DeleteMapping("/{id}") public void deleteStudent(@PathVariable Long id) { studentMapper.deleteById(id); } @PutMapping("/{id}") public void updateStudent(@PathVariable Long id, @RequestBody Student student) { student.setId(id); studentMapper.update(student); } @GetMapping("/{id}") public Student getStudent(@PathVariable Long id) { return studentMapper.findById(id); } @GetMapping public List<Student> getAllStudents() { return studentMapper.findAll(); } } ``` 接下来,创建一个名为LoggingInterceptor的拦截器类,用于打印每个接口的用时。 ```java @Component public class LoggingInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { request.setAttribute("startTime", System.currentTimeMillis()); return true; } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { long startTime = (long) request.getAttribute("startTime"); long endTime = System.currentTimeMillis(); long elapsedTime = endTime - startTime; String requestURI = request.getRequestURI(); System.out.println(requestURI + " executed in " + elapsedTime + "ms"); } } ``` 最后,配置拦截器和MyBatis动态标签。 ```java @Configuration public class WebConfig implements WebMvcConfigurer { private final LoggingInterceptor loggingInterceptor; public WebConfig(LoggingInterceptor loggingInterceptor) { this.loggingInterceptor = loggingInterceptor; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loggingInterceptor); } } @MapperScan("com.example.mapper") public class MyBatisConfig { } ``` 这样,你就完成了使用Spring Boot和MyBatis搭建web项目,并通过注解完成增删改查接口,并通过拦截器打印每个接口的用时。同时,使用MyBatis的动态标签可以完成判断查询和批量插入并获取自增主键id的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YD_1989

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值