【问题标题】:How to configure web.xml to serve any request without specifying .html, .json in the URL如何配置 web.xml 以服务任何请求而不在 URL 中指定 .html、.json
【发布时间】:2016-03-29 17:24:28
【问题描述】:

我的 Spring 应用程序中有一个 javaScript 函数,用于提供 REST GET 调用。

function populateCombo(){
$.ajax({
      url: "activities.json",
      type: "get",
      dataType: "html"
    }).done(function(data) {
      console.log("data from AJAX : "+data);
      //$('#activities').html(html);
    });
}

我已经配置了我的web.xml 来满足该请求。

<servlet-mapping>
    <servlet-name>fitTrackerServlet</servlet-name>
    <url-pattern>*.json</url-pattern>
</servlet-mapping>

但是有没有办法实现同样的结果而不必在 ajax 中调用 url 为 activities.json 即类似这样的东西,

function populateCombo(){
$.ajax({
      url: "activities",
      type: "get",
      dataType: "html"
    }).done(function(data) {
      console.log("data from AJAX : "+data);
      //$('#activities').html(html);
    });
}

我的 web.xml 是,

  <servlet>
<servlet-name>fitTrackerServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/config/servlet-config.xml</param-value>
</init-param>    
</servlet>

<servlet-mapping>
    <servlet-name>fitTrackerServlet</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>fitTrackerServlet</servlet-name>
    <url-pattern>/pdfs/**</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>fitTrackerServlet</servlet-name>
    <url-pattern>*.json</url-pattern>
</servlet-mapping>

注意:我试图通过删除所有并添加以下内容来实现这一点

<servlet-mapping>
    <servlet-name>fitTrackerServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

但它显示我的 javaScript 文件导入错误

例如:WARNING: No mapping found for HTTP request with URI [/FitnessTracker/resources/javaScript/jquery/jquery.js] in DispatcherServlet with name 'fitTrackerServlet'

在jsp文件中导入为,

<script type="text/javascript" src="/FitnessTracker/resources/javaScript/jquery/jquery.js"></script>

【问题讨论】:

    标签: javascript json xml spring


    【解决方案1】:

    您对使用 of 的假设

    <servlet-mapping>
      <servlet-name>fitTrackerServlet</servlet-name>
      <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    是正确的。但是 Spring 不知道 jquery.js 是一个静态资源,它会尝试为请求的 URL 找到合适的 RequestMapping。使用这个标签

    <mvc:resources mapping="/js/**" location="/js/"/>
    

    在您的 Spring 应用程序上下文中标记静态资源的所有路径。

    【讨论】:

      猜你喜欢
      • 2013-09-25
      • 2014-11-23
      • 1970-01-01
      • 2023-03-23
      • 2013-06-18
      • 1970-01-01
      • 2017-06-04
      • 2019-01-08
      • 2012-10-16
      相关资源
      最近更新 更多