Spring MVC如何在我的控制器方法中获取GET HTTP Request的参数值?

时间:2012-11-18 17:34:52

标签: java spring http parameters request

在此期间我正在研究Spring MVC展示示例(可从STS dasboard下载),我对Request Mapping示例有一些简单的问题:

1)在我的home.jsp页面中,我有以下链接:

        <li>
            <a id="byParameter" class="textLink" href="<c:url value="/mapping/parameter?foo=bar" />">By path, method, and presence of parameter</a>
        </li>

正如您在此链接中所看到的,我正在执行HTTP GET请求,其中包含“foo”参数,其中包含值:“bar”。

此HTTP请求由控制器类MappingController的以下方法处理:

@RequestMapping(value="/mapping/parameter", method=RequestMethod.GET, params="foo")
public @ResponseBody String byParameter() {
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

此方法管理具有名为“foo”的参数的HTTP请求(仅GET类型)

如何获取此参数的值(“bar”)并将其放入我的参数方法代码中的变量中?

2 个答案:

答案 0 :(得分:182)

正如the documentation中所述,使用@RequestParam注释:

public @ResponseBody String byParameter(@RequestParam("foo") String foo) {
    return "Mapped by path + method + presence of query parameter! (MappingController) - foo = "
           + foo;
}

答案 1 :(得分:41)

您还可以使用URI模板。如果您将请求构建为一个宁静的URL,Spring可以解析来自URL的提供值。

<强> HTML

<li>
    <a id="byParameter" 
       class="textLink" href="<c:url value="/mapping/parameter/bar />">By path, method,and
           presence of parameter</a>
</li>

<强>控制器

@RequestMapping(value="/mapping/parameter/{foo}", method=RequestMethod.GET)
public @ResponseBody String byParameter(@PathVariable String foo) {
    //Perform logic with foo
    return "Mapped by path + method + presence of query parameter! (MappingController)";
}

Spring URI Template Documentation