Rai*_*ung 10 java spring spring-mvc
我@Controller在一个spring-mvc环境中很简单.这是控制器:
@Controller
public class MessageController {
private static Logger LOG = LoggerFactory
.getLogger(MessageController.class);
@RequestMapping(value = "/messages/{userId}/{messageId}", method = RequestMethod.GET)
public Message getMessage(@PathVariable("userId") String uid,
@PathVariable("messageId") String msgid) {
LOG.trace("GET /message/{}/{}", uid, msgid);
return new Message();
}
}
Run Code Online (Sandbox Code Playgroud)
这是servlet-mapping web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Messaging Service</display-name>
<servlet>
<servlet-name>messaging</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>messaging</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
当我通过jetty启动应用程序并运行请求时/messages/abc/def,我得到以下日志:
INFO: Mapped "{[/messages/{userId}/{messageId}],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public ....Message ....MessageController.getMessage(java.lang.String,java.lang.String)
WARNING: No mapping found for HTTP request with URI [/messages/abc/messages/abc/def] in DispatcherServlet with name 'messaging'
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?请求肯定只包含/messages/abc/def,为什么内部翻译为/messages/abc/messages/abc/def?
axt*_*avt 18
我想这与默认视图名称解析有关.
如果您希望将处理程序方法返回的值编码为响应主体(在JSON,XML等中),则需要@ResponseBody使用@RestController(在Spring 4.x中)使用或注释整个控制器来声明该方法.
否则,Spring会尝试使用return作为模型属性呈现视图.由于您没有提供要呈现的视图的名称,因此Spring会尝试从请求URL中推断出它.
| 归档时间: |
|
| 查看次数: |
2509 次 |
| 最近记录: |