【问题标题】:how to configure ViewResolver for concrete controller如何为具体控制器配置 ViewResolver
【发布时间】:2013-11-08 18:10:18
【问题描述】:

我有 spring mvc 应用程序。我有 2 个控制器 -

首先使用标准视图解析器并渲染到jsp

第二次使用解析器创建 RestFull wev 服务

如何配置它?

更新

第一个控制器

@Controller
@RequestMapping("/controllerPath")
public class MyController {

    @RequestMapping("/sayHello")
    public String sayHello(Model model){
        model.addAttribute("name", "Vasya");
        return "hello";
    }

}

它使用

<bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/WEB-INF/views/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

我需要再添加一个控制器,它将作为restful webservice工作并将json返回给客户端

【问题讨论】:

  • 你能展示一些代码示例吗?您无需更改 ViewResolver 即可拥有 RESTful Web 服务。
  • 主题已更新

标签: java spring rest spring-mvc configuration


【解决方案1】:

您可以通过简单地将 Jackson 库放在类路径中并将要序列化的对象返回到 JSON 来执行 RESTful 处理程序,或者使用 @ResponseBody 注释来指示您返回的对象应用作“正文" 的 HTTP 响应。

使用杰克逊

@RequestMapping("/myRestful")
MyDomainObject myRestfulService() {
   // .. do some stuff... //
   return new MyDomainObject(); // <- Return some object
}

使用@ResponseBody

@RequestMapping("/myRestful")
@ResponseBody String myRestfulService() {
   // .. do some stuff... //
   return new "This is some string that will be returned, as-is, to the client"; // <- Return some data
}

希望有帮助

【讨论】:

  • 我看到了此请求标识的资源只能生成具有根据请求“接受”标头不可接受的特征的响应。在我的浏览器中
  • 我想看xml或json
  • 第一个例子确实输出了 JSON。它使用杰克逊库来做到这一点。第二个例子你可以输出任何你想要的东西,因为你只是告诉 Spring 把你输出的任何东西作为响应的主体。
  • 您看到的错误消息是因为您请求的 MIME 类型与服务器发送的 MIME 类型不同。您可以在 HttpServletResponse 上设置 MIME 类型,您可以将其作为处理程序方法的参数。
猜你喜欢
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 2015-04-05
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
相关资源
最近更新 更多