如何在不指定URL中的.html,.json的情况下配置web.xml以提供任何请求

时间:2016-03-29 17:24:29

标签: javascript json xml spring

我的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文件导入错误

ex: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>

1 个答案:

答案 0 :(得分:0)

关于使用

的假设
<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应用程序上下文中标记静态资源的所有路径。