我们来详细讲解一下 Spring Boot 获取前台参数的六种方式以及统一响应方案。
获取前台参数的六种方式
1. RequestParam 方式
RequestParam 方式是通过 HttpServletRequest 的 getParameter() 方法来获取前台请求传来的参数值的方式。使用 @RequestParam 注解即可实现。
@RequestMapping("/test")
public ResultBean<String> test(@RequestParam("name") String name,
@RequestParam(value = "age", required = false, defaultValue = "18") Integer age) {
// 处理业务逻辑
return new ResultBean<>("Hello, " + name + ",you are " + age + " years old.");
}
2. PathVariable 方式
PathVariable 方式是通过 URL 中的占位符来获取参数值的方式。使用 @PathVariable 注解即可实现。
@RequestMapping("/test/{name}/{age}")
public ResultBean<String> test(@PathVariable("name") String name,
@PathVariable(value = "age", required = false, defaultValue = "18") Integer age) {
// 处理业务逻辑
return new ResultBean<>("Hello, " + name + ",you are " + age + " years old.");
}
3. RequestBody 方式
RequestBody 方式是直接将前台传来的数据转换为 Java 对象来获取参数值的方式。使用 @RequestBody 注解即可实现。
@RequestMapping("/test")
public ResultBean<String> test(@RequestBody User user) {
// 处理业务逻辑
return new ResultBean<>("Hello, " + user.getName() + ",you are " + user.getAge() + " years old.");
}
4. RequestParameterMap 方式
RequestParameterMap 方式是通过 HttpServletRequest 的 getParameterMap() 方法来获取参数值的方式。
@RequestMapping("/test")
public ResultBean<String> test(HttpServletRequest request) {
Map<String, String[]> paramMap = request.getParameterMap();
// 处理业务逻辑
return new ResultBean<>("Hello, " + paramMap.get("name")[0] + ",you are " + paramMap.get("age")[0] + " years old.");
}
5. RequestAttribute 方式
RequestAttribute 方式是通过 HttpServletRequest 的 getAttribute() 方法来获取请求属性的值的方式。使用 @ModelAttribute 注解即可实现。
@RequestMapping("/test")
public ResultBean<String> test(@ModelAttribute("name") String name,
@ModelAttribute(value = "age", binding = false) Integer age,
HttpServletRequest request) {
// 处理业务逻辑
return new ResultBean<>("Hello, " + name + ",you are " + age + " years old.");
}
6. Servlet API 方式
Servlet API 方式是通过 HttpServletRequest 的 getParameter() 和 getAttribute() 方法来获取请求参数和请求属性的值的方式。
@RequestMapping("/test")
public ResultBean<String> test(HttpServletRequest request) {
String name = request.getParameter("name");
Integer age = (Integer) request.getAttribute("age");
// 处理业务逻辑
return new ResultBean<>("Hello, " + name + ",you are " + age + " years old.");
}
统一响应方案
在编写 Web 应用时,我们一般需要对返回结果进行统一处理,例如将返回结果格式化为 JSON 格式。我们可以使用 Spring Boot 自带的 @ControllerAdvice 注解和 @ExceptionHandler 注解来实现。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody
public ResultBean<String> handleException(Exception e) {
return new ResultBean<>(ResultCode.FAILURE.getCode(), e.getMessage());
}
@ExceptionHandler(MyException.class)
@ResponseBody
public ResultBean<String> handleMyException(MyException e) {
return new ResultBean<>(e.getErrorCode(), e.getMessage());
}
}
其中,@ControllerAdvice 注解表示我们定义了一个全局异常处理类,@ExceptionHandler 注解表示我们定义了一个异常处理方法。在上面的代码中,我们定义了两个异常处理方法,分别处理 Exception 和 MyException 类型的异常并将它们转换为 ResultBean 类型的响应结果,其中 ResultBean 是我们自定义的一个通用响应类,包含了状态码和响应数据。
示例代码如下:
@GetMapping("/test")
@ResponseBody
public ResultBean<String> test() throws Exception {
// 抛出异常
throw new MyException(ResultCode.FORBIDDEN, "测试异常");
}
以上就是 Spring Boot 获取前台参数的六种方式以及统一响应的完整攻略。希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot获取前台参数的六种方式以及统一响应 - Python技术站