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

87

我现在正在学习Spring MVC展示案例(可以从STS仪表板下载),并且有一些关于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)";
}

这个方法处理HTTP请求(仅限GET类型的请求),该请求具有名为“foo”的参数。

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

2个回答

185

正如文档中所解释的那样,通过使用@RequestParam注释:

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

3
当有10个参数时,我们是需要重复这个过程10次,还是有更好的方法可以处理? - Count
2
@计数:点击我提供的文档链接,然后向上滚动一点,直到找到“支持的方法参数类型”段落,并阅读关于“命令或表单对象”的部分。 - JB Nizet

43
你也可以使用URI模板。如果你将请求结构化成restful 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模板文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接