Spring 获取请求参数

这篇博客介绍了在Spring MVC中如何处理GET和POST请求。对于GET请求,展示了两种不同的方法,一种通过`@PathVariable`注解,另一种通过`@RequestParam`注解。而对于POST请求,分别演示了接收表单数据、直接参数和JSON数据的方法。这些方法有助于理解Spring MVC框架中HTTP请求的处理方式。

GET请求

  • 一般方法
	// 访问方式http://localhost:8082/api/admin/555555
    @RequestMapping(value = "/admin/{id}", method = RequestMethod.GET)
    public Admin getAccountById(@PathVariable("id") String id) {
        return adminService.findAdminById(id);
    }
    // 访问方式 http://localhost:8082/api/admin/?id=555555
    @GetMapping("/admin")
    public Admin getAccountById(@RequestParam("id") String id) {
        return adminService.findAdminById(id);
    }

POST请求

  • 一般方法
package net.cyb.demo.controller;

import net.cyb.demo.domain.User;
import net.cyb.demo.utils.JsonData;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1/pub/user")
public class UserController {
    /**
     * 接收from表单
     * @param pwd
     * @param username
     * @return
     */
    @PostMapping("login")
    public JsonData login(String  pwd,String username){
        System.out.println("pwd:"+pwd+"username:"+username);
        return  JsonData.buildSuccess("");
    }

    /**
     * 接收from表单
     * @param user
     * @return
     */
    @PostMapping("login")
    public JsonData login(User user){
        System.out.println("user"+user.toString());
        return  JsonData.buildSuccess("");
    }

    /**
     * 接收JSON数据
     * @param user
     * @return
     */
    @PostMapping("login")
    public JsonData login(@RequestBody User user){
        System.out.println("user"+user.toString());
        return  JsonData.buildSuccess("");
    }
}
Spring 的 `@ExceptionHandler` 注解方法中,可以通过特定的参数类型来获取请求中的参数信息。例如,可以使用 `HttpServletRequest` 或 `WebRequest` 来访问请求对象,并从中提取请求参数。以下是一些常见的使用方法: ### 使用 `HttpServletRequest` 获取请求参数 通过将 `HttpServletRequest` 作为方法参数,可以直接从请求对象中获取请求参数。例如: ```java @ExceptionHandler(NumberFormatException.class) public String handleNumberFormatException(Exception ex, HttpServletRequest request) { String paramValue = request.getParameter("paramName"); System.out.println("请求参数 paramName 的值为: " + paramValue); String resultStr = "异常:NumberFormatException,请求参数: " + paramValue; return resultStr; } ``` 在上述示例中,`request.getParameter("paramName")` 用于获取名为 `paramName` 的请求参数值。这种方法适用于需要直接访问请求参数的场景[^2]。 ### 使用 `WebRequest` 获取请求参数 `WebRequest` 是 Spring 提供的一个通用接口,用于封装请求上下文信息。它也可以用来获取请求参数: ```java @ExceptionHandler(RuntimeException.class) public ResponseEntity<String> handleRuntimeException(RuntimeException ex, WebRequest request) { String paramValue = request.getParameter("paramName"); String resultMsg = "发生异常: " + ex.getMessage() + ",请求参数 paramName 的值为: " + paramValue; return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMsg); } ``` 与 `HttpServletRequest` 类似,`WebRequest` 提供了 `getParameter` 方法用于获取请求参数。这种方法的优点是它不依赖于 Servlet API,因此更适合跨平台使用[^2]。 ### 注意事项 1. **参数类型匹配**:`@ExceptionHandler` 方法的参数类型需要与请求处理时的参数类型一致,否则可能导致参数解析失败。 2. **异常处理的范围**:如果 `@ExceptionHandler` 方法定义在控制器类中,则仅处理该控制器中抛出的异常。如果需要全局处理异常,可以结合 `@ControllerAdvice` 使用[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值