ajax - 将 Spring 应用程序从 Glassfish 迁移到 Tomcat

标签 ajax spring jsp tomcat glassfish

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

The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers ().

我的请求信息 Controller 如下所示:

@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;
}

当我迁移到 Tomcat 时,为什么会发生这种情况?

最佳答案

发生此错误是因为您的浏览器在“接受” header 中发送到服务器的内容与服务器从 URL/electricity/usage/返回的内容不匹配

如果您正在使用像 jQuery 这样的库(并且不进行跨域请求,这很重要)那么您的浏览器将发送此接受 header :

接受:应用程序/json

您收到该错误意味着服务器认为 URL/electicity/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 响应:http://rwehner.wordpress.com/2010/06/09/2-ways-to-create-json-response-for-ajax-request-in-spring3/

为什么这段代码适用于 Glassfish,但不适用于 Tomcat - 这是一个很好的问题......

如果您正在执行跨域请求,则此主题适用:JQuery's getJSON() not setting Accept header correctly?

关于ajax - 将 Spring 应用程序从 Glassfish 迁移到 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9840421/

相关文章:

java - 如何在tomcat服务器中部署Jsp项目

java - 如何通过 Struts 框架中的 Controller 页面将从数据库检索到的表显示到 jsp 页面

javascript - 添加ajax jQuery文件上传

javascript - PHP - 从完全加载的外部页面加载 HTML

javascript - jQuery.ajax成功回调函数未执行

spring - 寻找一种方法将@ControllerAdvice 分配给特定的 url 路径模式或 Controller

java - 在jsp中连接url

ajax - 网站抓取 : Waiting until site is completly loaded

spring - Hibernate 不创建 ElementCollection 表

java - 通过 Spring Integration 将多个文件从不同源复制到不同目的地