0

我有一个以 '*.htm' 扩展名运行的 spring 项目,我们已将其绑定在 web.xml 文件中。

 <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
   <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.htm</url-pattern>
   </servlet-mapping>

现在我想为聊天应用程序集成 Spring WebSocket 和 stomp js,但这里的问题是 stomp.js 正在将请求发送到没有“.htm”扩展名的服务器。因此,我在每个请求(信息或其他 xhr)中都收到 404 错误。

有什么方法可以启用 Spring WebSocket 和 stomp js 扩展名为 '.htm' 吗?

我无法删除此扩展程序,它将拖累我当前的应用程序。

4

2 回答 2

1

在 websocket url 中添加前缀,效果很好。

js:

var socket = new SockJS("/websocket_demo/myapp/ws");

web.xml DispatchServlet 映射:

<servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/myapp/*</url-pattern>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>
于 2015-11-03T00:38:40.807 回答
0

您可以像这样添加多个 servlet 映射,并让 .htm 与“/url”一起工作以提供新功能

<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>/url</url-pattern>
</servlet-mapping>

如果您使用的是 Servlet 2.5,则可以直接使用

<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>*.htm</url-pattern>
  <url-pattern>/url</url-pattern>
</servlet-mapping>
于 2014-07-22T09:22:27.507 回答