Ajax 从Glassfish到Tomcat的移动弹簧应用
我一直在使用Netbeans和Glassfish服务器开发Spring3.0Web应用程序。我现在已经到了应该部署应用程序供公众使用的地步,但是在尝试从Glassfish迁移到Tomcat时,我遇到了一个错误。我的应用程序使用AJAX从应用程序内的URL获取信息,但当我请求URL时,我得到以下信息: 此请求标识的资源只能根据请求“accept”头()生成具有不可接受特征的响应 我的控制器请求的信息如下所示:Ajax 从Glassfish到Tomcat的移动弹簧应用,ajax,spring,jsp,tomcat,glassfish,Ajax,Spring,Jsp,Tomcat,Glassfish,我一直在使用Netbeans和Glassfish服务器开发Spring3.0Web应用程序。我现在已经到了应该部署应用程序供公众使用的地步,但是在尝试从Glassfish迁移到Tomcat时,我遇到了一个错误。我的应用程序使用AJAX从应用程序内的URL获取信息,但当我请求URL时,我得到以下信息: 此请求标识的资源只能根据请求“accept”头()生成具有不可接受特征的响应 我的控制器请求的信息如下所示: @RequestMapping(value = "/electricity/usage/
@RequestMapping(value = "/electricity/usage/")
public @ResponseBody List<UsageData> getEUsage(HttpSession session) {
UsageDataDAO UsageDAO = new UsageDataDAO();
User u = (User) session.getAttribute("user");
List<UsageData> l = UsageDAO.getAllUsageData(u.getAccountNum(), 'e');
return l;
}
@RequestMapping(value=“/electronic/usage/”)
public@ResponseBody List getEUsage(HttpSession会话){
UsageDataDAO UsageDAO=新UsageDataDAO();
用户u=(用户)会话.getAttribute(“用户”);
List l=UsageDAO.getAllUsageData(u.getAccountNum(),'e');
返回l;
}
为什么在迁移到Tomcat时会发生这种情况?之所以会发生这种错误,是因为浏览器在“接受”标题中发送给服务器的内容与服务器可以从URL/Electrical/usage返回的内容不匹配/ 如果您正在使用类似jQuery的库(,而不执行跨域请求,这一点很重要),则浏览器将发送此accept标头: 接受:application/json 得到该错误意味着服务器认为URL/electricity/usage不能返回JSON响应。这是在您的webmvc config.xml文件中配置的。这就是我的JSON请求相关内容:
<!-- allows rendering responses in XML and JSON formats -->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="1">
<property name="mediaTypes">
<map>
<entry key="xml" value="application/xml"/>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<bean class="org.springframework.oxm.xstream.XStreamMarshaller" p:autodetectAnnotations="true"/>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
</list>
</property>
</bean>
有关在Spring MVC中实现JSON响应的信息,请参阅本教程:
为什么这段代码对Glassfish有效,但对Tomcat无效-这是一个好问题
如果您正在执行跨域请求,则本主题适用:是否有例外?应用程序启动了吗?是的,除了我请求拉入一些JSON数据的URL之外,应用程序可以正常工作。请看情况。这就是问题所在。没有证据表明我有任何设置错误。我正在使用@responsebody处理程序,就像在链接中一样。这段代码在glassfish上完美地工作,但在tomcat中抛出了一个错误。这篇文章有帮助吗?此外,我将在FF中使用Firebug来确保在发出此AJAX请求时浏览器具有Accept:application/json头。如果是这样,那么您可以确定问题出在应用程序配置上,它不知道您的URL/Electrical/usage/应该返回application/json内容类型。