相关疑难解决方法(0)

Spring - 基于注释的控制器 - 基于查询字符串的RequestMapping

在基于Spring注释的控制器中,是否可以使用@RequestMapping不同的方法映射不同的查询字符串?

例如

@RequestMapping("/test.html?day=monday")
public void writeMonday() {
}


@RequestMapping("/test.html?day=tuesday")
public void writeTuesday() {
}
Run Code Online (Sandbox Code Playgroud)

spring annotations

54
推荐指数
2
解决办法
6万
查看次数

@RequestBody和@RequestParam之间有什么区别?

我已经通过Spring文档了解@RequestBody,并且他们给出了以下解释:

所述@RequestBody方法参数注释指示方法参数应绑定到HTTP请求正文的值.例如:

@RequestMapping(value = "/something", method = RequestMethod.PUT)
public void handle(@RequestBody String body, Writer writer) throws IOException {
  writer.write(body);
}
Run Code Online (Sandbox Code Playgroud)

您可以使用a将请求主体转换为方法参数HttpMessageConverter.HttpMessageConverter负责从HTTP请求消息转换为对象并从对象转换为HTTP响应主体.

DispatcherServlet支持使用DefaultAnnotationHandlerMapping和支持基于注释的处理AnnotationMethodHandlerAdapter.在Spring 3.0中,AnnotationMethodHandlerAdapter扩展为支持@RequestBodyHttpMessageConverter默认注册以下s:

...

但我的困惑是他们在文档中写的句子

@RequestBody方法参数注释指示应将方法参数绑定到HTTP请求正文的值.

那是什么意思?任何人都可以举个例子吗?

@RequestParamspring doc中的定义是

注释,指示应将方法参数绑定到Web请求参数.支持带注释的处理程序方法ServletPortlet环境.

我在他们之间感到困惑.请帮助我举一个关于它们彼此不同的例子.

spring spring-mvc servlet-3.0 http-request-parameters spring-boot

54
推荐指数
5
解决办法
8万
查看次数

如何使用@RequestBody调用@RestController?

我有一个简单的servlet,如下所示:

@RestController
public class TestServlet {
    @RequestMapping(value = "/test1")
    public String test1() {
        return "test1";
    }

    @RequestMapping(value = "/test2")
    public String test2(@RequestBody TestClass req) {
        return "test2";
    }

    public static class TestClass {
        private String value;

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,只有不接收参数的servlet才起作用:

作品: http://localhost:8080/test1

不起作用: http://localhost:8080/test2?value=1234

org.springframework.http.converter.HttpMessageNotReadableException:缺少必需的请求正文:public java.lang.String

为什么@RequestBody注释不起作用?我错过了重要的一块吗?

java spring servlets spring-web

1
推荐指数
1
解决办法
7567
查看次数