如何使用HTTPServletRequest在spring中读取请求参数值

时间:2012-02-24 09:18:54

标签: java spring http url

我想使用HttpServletRequest从url读取requestParams数据

http://localhost:8080/api/type?name=xyz&age=20

我的控制器中的方法不会定义@RequestParam,它只是

@RequestMapping(value = "/**", method = RequestMethod.GET)
    public ResponseEntity<String> getResponse(
            final HttpServletRequest request) {}

我想阅读使用params而不是整个url。

4 个答案:

答案 0 :(得分:10)

首先,为什么要定义:

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

也许你应该使用:

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

并阅读参数:

request.getParameter("name");
request.getParameter("age"):

答案 1 :(得分:5)

xiang对你的确切问题是正确的:“我想阅读请求只使用params”

但是你为什么要这么难。 Spring支持您,因此您不需要自己处理请求对象以执行此类常见任务:

我建议使用

@RequestMapping(value = "/*", method = RequestMethod.GET)
public ResponseEntity<String> getResponse(
    @RequestParam("name") String name
    @RequestParam("age") int age){

    ...
}

代替。

@参见Spring Reference Chapter 15.3.2.4. Binding request parameters to method parameters with @RequestParam

答案 2 :(得分:1)

您可以使用

request.getParameter("parameter name") 

答案 3 :(得分:0)

这是你在找什么?

public java.lang.String getParameter(java.lang.String name)

来自API

  

的getParameter

     

String getParameter(String name)返回请求的值   参数为String,如果参数不存在,则为null。   请求参数是随请求一起发送的额外信息。对于   HTTP servlet,参数包含在查询字符串中或已发布   表格数据。你应该只在确定时才使用这种方法   参数只有一个值。如果参数可能超过   一个值,使用getParameterValues(java.lang.String)。

     

如果将此方法与多值参数一起使用,则为该值   返回等于返回的数组中的第一个值   getParameterValues。

     

如果参数数据是在请求体中发送的,例如发生   使用HTTP POST请求,然后通过直接读取正文   getInputStream()或getReader()可能会干扰执行   这种方法。

     

参数:name - 指定参数名称的String   返回:表示参数的单个值的String   另外:getParameterValues(java.lang.String)