在基于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文档了解@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扩展为支持@RequestBody并HttpMessageConverter默认注册以下s:...
但我的困惑是他们在文档中写的句子
@RequestBody方法参数注释指示应将方法参数绑定到HTTP请求正文的值.
那是什么意思?任何人都可以举个例子吗?
@RequestParamspring doc中的定义是
注释,指示应将方法参数绑定到Web请求参数.支持带注释的处理程序方法
Servlet和Portlet环境.
我在他们之间感到困惑.请帮助我举一个关于它们彼此不同的例子.
spring spring-mvc servlet-3.0 http-request-parameters spring-boot
我有一个简单的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注释不起作用?我错过了重要的一块吗?
spring ×3
annotations ×1
java ×1
servlet-3.0 ×1
servlets ×1
spring-boot ×1
spring-mvc ×1
spring-web ×1