SpringMVC获取请求参数的方法

本文详细介绍了在HTTP请求中使用@PathVariable、@ModelAttribute、HttpServletRequest和@RequestParam注解获取路径参数、表单数据、请求参数的方法,并提供了示例代码。

1、通过@PathVariabl注解获取路径中传递参数

@RequestMapping(value = "/{name}")

public ModelAndView getPerson(@PathVariable String name){

    System.out.println(name);

    return new ModelAndView("/page"); 

}

 

 

2、用@ModelAttribute注解获取POST请求的FORM表单数据

(1) FORM表单

<form name="loginForm" action="/login" method="post">

    <input type="text" name="name" /><br/><br/>

    <input type="password" name="password" /><br/><br/>

    <input type="submit" value="提交" />

</form>

 

(2) 定义JAVA POJO

public class Person() {

    

    private String name;

 

    private String password;

 

    public String getName() {

        return name;

    }

 

    public void setName(String name) {

        this.name = name;

    }

 

    public String getPassword() {

        return password;

    }

 

    public void setPassword(String password) {

        this.password = password;

    }

 

}

 

(3) 后台代码

@RequestMapping(value="/login", method = RequestMethod.POST)

public ModelAndView toMainPage(@ModelAttribute("person") Person person){

    String name = person.getName();

    System.out.println(name);

    String password = person.getPassword();

    System.out.println(password );

    return new ModelAndView("/loginSuccess");

}

 

注意, 其中表单中的name字段需要和POJO的属性字段一致

 

 

3、直接通过HttpServletRequest获取

@RequestMapping(value="/addPerson", method = RequestMethod.POST)

public ModelAndView addPerson(HttpServletRequest request, HttpServletResponse response){

    String name = request.getParameter("name");

    return new ModelAndView("/addSuccess");

}

 

4、用注解@RequestParam绑定请求参数

当请求参数不存在时会有异常发生,可以通过设置属性required=false解决

@RequestMapping(value="/getPerson", method = RequestMethod.GET)

public ModelAndView getPerson(@RequestParam("name") String name){

    System.out.println(name);

    return new ModelAndView("/addSuccess");

}

### 在 Spring MVC 中获取 HttpServletRequest 参数 Map 示例 在 Spring MVC 中,可以通过 `HttpServletRequest` 对象直接获取请求参数的 `Map`。以下是具体实现方式: ```java @RestController public class TestController { @GetMapping("/getParamMap") public Map<String, String[]> getParamMap(HttpServletRequest request) { // 获取请求参数的Map Map<String, String[]> parameterMap = request.getParameterMap(); return parameterMap; } } ``` 上述代码展示了如何通过 `HttpServletRequest` 的 `getParameterMap()` 方法获取请求参数的 `Map`[^1]。该方法返回一个 `Map<String, String[]>` 类型的对象,其中键是参数名,值是一个字符串数组,表示对应参数的所有值。 如果需要将参数转换为更友好的格式(如 `Map<String, Object>`),可以进一步处理: ```java @RestController public class TestController { @GetMapping("/getParamsAsMap") public Map<String, Object> getParamsAsMap(HttpServletRequest request) { Map<String, Object> resultMap = new HashMap<>(); Map<String, String[]> parameterMap = request.getParameterMap(); for (String key : parameterMap.keySet()) { String[] values = parameterMap.get(key); if (values.length == 1) { resultMap.put(key, values[0]); } else { resultMap.put(key, Arrays.asList(values)); } } return resultMap; } } ``` 上述代码将 `Map<String, String[]>` 转换为 `Map<String, Object>`,对于单值参数存储为字符串,对于多值参数存储为列表[^2]。 --- ### 注意事项 1. **GET 请求与 POST 请求**:无论是 GET 请求还是 POST 请求,都可以通过 `getParameterMap()` 方法获取参数。 2. **参数来源**:`getParameterMap()` 方法不仅包含 URL 中的查询参数,还包含 POST 请求体中的参数[^3]。 3. **空参数处理**:如果某个参数没有值,则对应的数组长度为 0。 --- ### 示例测试 使用 Postman 或其他工具发送以下请求进行测试: #### 请求示例 1(GET 请求) ``` GET http://localhost:8080/getParamMap?key1=value1&key2=value2 ``` #### 请求示例 2(POST 请求) ``` POST http://localhost:8080/getParamMap Content-Type: application/x-www-form-urlencoded key1=value1&key2=value2 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值