【问题标题】:Spring mvc configuration JSONSpring mvc 配置 JSON
【发布时间】:2011-09-27 17:37:36
【问题描述】:

我会知道返回 JSON 的 Spring MVC 休息服务的配置是如何工作的。

我已经以这种方式配置了applicationContenxt.xml:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
        </list>
    </property>
</bean>
<bean id="contentNegotiatingViewResolver" class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="mediaTypes">
        <map>
            <entry key="json" value="application/json"/>
        </map>
    </property>
    <property name="defaultViews">
        <list>
            <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
        </list>
    </property>
</bean>
<bean class="com.MyController"></bean>

这是我的控制器的代码:

@Controller(value="MyController")
public class MyController {
    @RequestMapping(value="/getValue", method=RequestMethod.GET)
    public ModelAndView getValue() {
        Map model = new HashMap();
        model.put("asasa", "bbbbb");
        model.put("cccc", "ddddd");
        return new ModelAndView("jsonView",model);
    }
}

我缺少有关 xml 配置或 Java 代码的内容?尝试调用此资源时总是出现错误 404:http://localhost:8080/fss/MyController/getValue

【问题讨论】:

    标签: json model-view-controller spring spring-mvc


    【解决方案1】:

    并且不要忘记将杰克逊转换器添加到 Spring 上下文文件中。

    <mvc:annotation-driven>
      <mvc:message-converters>
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
      </mvc:message-converters>
    </mvc:annotation-driven>
    

    顺便说一句 - 如果你的方法接受 JSON,那么使用带有传入数据类型的 @RequestBody 注释:

    @RequestMapping
    public @ResponseBody OutgoingClass getJsonByJson(@RequestBody IncomingClass data) {...}
    

    您可以找到 JSON 和 Spring MVC 的不错示例以及更多 https://sites.google.com/site/upida4j/example

    【讨论】:

      【解决方案2】:

      只要做:

      @Controller
      public class HelloController {
      
        @RequestMapping(value="/hello", method=RequestMethod.GET)
        public @ResponseBody String hello(@RequestParam String name) {
          return "Hi " + name;
        }
      }
      

      将返回类型更改为对象,并将 jackson 包含在对象响应的类路径中。

      请求需要有一个application/json header,控制器才能返回json。

      查看http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-08
        • 2011-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多