2014-04-20 60 views
0

我已经建立了一个基于Spring MVC的Web应用程序,它已经在工作。我计划为移动用户提供一个与服务器进行通信的应用程序,以便他们能够更轻松地与其进行交互。我有模型,视图和控制器工作正常,但一切都是从网络的角度设计的。移动应用程序+ Spring MVC - JSP?

因此,我正在为移动应用程序构建一些新的控制器,这里提出了一个问题:由于View的最终责任将成为有问题的移动应用程序,我应该在哪里委托所有内容应用程序,在控制器(为每个响应准备一个JSON)?或者我应该有一个JSON taglib启用的JSP,以便Controller将这些部分提供给JSP,然后在JSP中构建JSON响应?

我不清楚这种情况下的MVC体系结构。

在此先感谢。

回答

1

当你正在做的是创造一个REST API,其手机(或其他客户)将使用,视图不起作用。主管人员有责任为客户准备适当的回应。

幸运的是,由于返回JSON是一种常见的场景,因此Spring MVC将JSON序列化(使用Jackson库)非常简单,因此您不必这样做。

由于JB Nizet显示,您可以使用@ResponseBody注解告诉Spring MVC,响应应返回原样(序列化JSON,因为produces = MediaType.APPLICATION_JSON_VALUE的),或者如果你正在使用Spring 4,你可以完全沟@ResponseBody注释并用@RestController注释您的控制器(使Spring的行为好像@ResponeBody已添加到每个方法映射中)而不是@Controller

1

控制器方法应该简单地返回obejcts(或对象的集合),将被序列化到JSON自动多亏了注释@ResponseBody:

@RequestMapping(value = "/api/users", 
       method = RequestMethod.GET, 
       produces = MediaType.APPLICATION_JSON_VALUE) 
@ResponseBody 
public List<User> listUsers() { 
    ... 
} 
+0

感谢您的回答。我一直在使用'@ ResponseBody'来处理通过网络应用程序的AJAX调用,所以我认为这会成功。我将其他答案标记为“答案”,仅仅是因为它更多地说明了我对MVC和移动应用程序开发的怀疑。 – Azurlake