如何在URL中不指定.html、.json的情况下配置web.xml来服务任何请求

How to configure web.xml to serve any request without specifying .html, .json in the URL

本文关键字:web 配置 情况下 xml 请求 任何 服务 json URL html      更新时间:2023-09-26

我的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>

您关于使用的假设

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