我使用SpringMVC创建了一个RESTful服务。有一堆教程,它工作正常。现在,应用程序应该在某些情况下使用application / json或RESTful进行响应,在其他情况下使用正常的ViewResolvers和text / html(.jsp)进行响应。
我认为ContentNegotiatingViewResolver在这种情况下应用得最好(是吗?)。
我现在的问题:我应该使用什么视图/ servlet / *来直接显示json(REST结果)?这是我的servlet.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.atrioom" />
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="html" value="text/html" />
</map>
</property>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</list>
</property>
</bean>
<!-- bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix"> <value>/WEB-INF/jsp/</value> </property> <property
name="suffix"> <value>.jsp</value> </property> </bean -->
现在,对于每个请求,servlet都会查找要显示的.jsp
文件。这适用于text/html
和application/json
。我希望它表现的方式是在调用text/html
时提供视图(jsp),在调用application/json
时提供直接json输出。
当我制作一个仅限REST的服务时,我有这个工作。不需要jsp文件,应用程序只是直接返回json格式的数据
我不知道如何告诉Negotiater在json案件中该怎么做。我需要一个特殊的REST解析器吗?请问有人可以解决一些问题吗?
亲切的问候,
亚历