Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 从Glassfish到Tomcat的移动弹簧应用_Ajax_Spring_Jsp_Tomcat_Glassfish - Fatal编程技术网

Ajax 从Glassfish到Tomcat的移动弹簧应用

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/

我一直在使用Netbeans和Glassfish服务器开发Spring3.0Web应用程序。我现在已经到了应该部署应用程序供公众使用的地步,但是在尝试从Glassfish迁移到Tomcat时,我遇到了一个错误。我的应用程序使用AJAX从应用程序内的URL获取信息,但当我请求URL时,我得到以下信息:

此请求标识的资源只能根据请求“accept”头()生成具有不可接受特征的响应

我的控制器请求的信息如下所示:

@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内容类型。