【问题标题】:Tomcat, Grunt buildTomcat,Grunt 构建
【发布时间】:2015-03-02 17:38:22
【问题描述】:

我在我的 Angular js 应用程序中使用 grunt,在我的服务器端使用 tomcat。

每当需要时,在开发环境中,我运行 Grunt build,获取 dist 文件夹并将其放入 tomcat webapp 文件夹中。

但是,我有一个奇怪的问题。应用程序中的 URL 仅在我从 HTML 页面单击它们时才有效。

例如如果我输入 http://localhost:8080/upload - 我会得到 404 page not found error,但是如果从索引页面 - http://localhost:8080 ,我点击页面中的链接可以正常上传。

可能是什么问题?

如果我在 node.js 上运行应用程序,链接会完美运行!只是在 Tomcat 上它不能按预期工作。

已编辑

我在angular js中定义这样的url

angular.module('angularjsApp')
  .config(function ($stateProvider) {
    $stateProvider
      .state('upload', {
        url: '/upload',
        templateUrl: 'app/upload/upload.html',
        controller: 'UploadCtrl'
      });
  });

【问题讨论】:

  • 您在web.xml 中是否正确配置可能是我无法找到路径的原因
  • 这是一个标准的 web.xml,我在所有应用程序中都在使用它,还有什么需要配置的?
  • is /upload 这个url是在后端定义的吗??
  • 不!仅在客户端。我在哪里定义它?
  • 然后尝试http://localhost:8080/#/upload 然后它将通过角度代码提供服务

标签: java angularjs node.js tomcat gruntjs


【解决方案1】:

您使用历史推送状态进行导航的角度设置方式,更改浏览器的 URL 而不会实际导致浏览器从后端重新获取其内容。

因此,在浏览器 Angular 中使用推送状态可以很好地导航,但是当请求实际发送到服务器时,它会响应 404,因为您没有任何东西可以提供 HTML。

有两种解决方案:

  1. 切换到使用#! urls,以便您始终从服务器获得相同的 URL(请参阅其他答案)。
  2. 更新您的服务器,为所有路径提供相同的静态 HTML(此答案)。

您需要发送回您的初始 HTML 内容的 servlet 来为所有路由执行此操作 - 因此映射到 /* 而不仅仅是 /,因此它给出的任何路径总是返回相同的 HTML。

所以你的 web.xml 有一个看起来像这样的 servlet 正在返回:

<servlet>
    <servlet-name>StaticHtmlServlet</servlet-name>
    <servlet-class>com.example.StaticHtmlServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>StaticHtmlServlet</servlet-name>
    <url-pattern>/</url-pattern>
    <url-pattern>/*</url-pattern> <!-- so this is what's added -->
</servlet-mapping>

【讨论】:

【解决方案2】:

为了通过 AngularJs 进行服务器,然后在域之后添加 /#/ 并确保默认启用的 html5 模式为 false($locationProvider.html5mode)。以下示例为您的应用提供内容来自客户端(angular-js)

http://localhost:8080/#/upload

【讨论】:

  • 搜索引擎将如何操作?如果它导致 /upload 我会得到 404。如果我写重写规则它将是无限的..
【解决方案3】:

这些链接是实际的标准 HTML 链接吗?如果 Tomcat 没有响应 http://localhost:8080/upload,那么它可能不是 GET 请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 2016-12-16
    • 2020-02-16
    • 2014-10-26
    • 2014-05-27
    相关资源
    最近更新 更多