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

2022-08-31 11:41:27

在此期间,我正在学习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”)并将其放在我的 by Parameter 方法代码内的变量中?


答案 1

文档中所述,通过使用注释:@RequestParam

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

答案 2

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

断续器

<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)";
}

弹簧 URI 模板文档