【问题标题】:how can i deploy AngularJS on Tomcat 8.5我如何在 Tomcat 8.5 上部署 AngularJS
【发布时间】:2019-09-06 16:00:40
【问题描述】:

我应该如何在 tomcat 8.5 上部署我的 Angularjs 代码

我尝试将我的项目文件夹复制到 tomcat 中的 webapps 文件夹

我的项目结构

webapps
   myprojectname
      controllers
      css
      views
      route.js
      index.html
      config.js

route.js 文件

angular.module("testroutes",["ngRoute"]).config(['$routeProvider',  function($routeProvider) {
$routeProvider.
when('/', {templateUrl: 'views/home.html'}).
when('/home', {templateUrl: 'views/home.html',controller: 'homecontroller'}). otherwise({redirectTo: '/'});
}]);

tomcat 已开始运行我所有的控制器,正在加载 html 但路由不起作用。

localhost:8080/myprojectname/home --> 给我 404

只有 localhost:8080/myprojectname/ --> 这有效。正在加载 index.html

我的路由不工作。有人可以帮忙吗

【问题讨论】:

    标签: angularjs tomcat8.5


    【解决方案1】:

    我假设您的意思是直接点击路由不起作用,没有点击应用程序中的内部链接并完全刷新页面,这是另一个问题,意味着您没有正确设置链接.如果您的意思是直接访问路由,那么解决此问题的最简单和最简单的方法是在所有路由前加上一个共同的根,例如 /ng/* 或 /ajs/*,例如 /ng/home。然后你有 2 个选项,它们都非常相似......

    1. 使用反向代理,如 apache Web 服务器来处理内容,并将 /ng/* 重写为 index.html。如果您正在构建一个重要的应用程序,这还会为您提供此设置带来的许多其他好处。

    2. 创建一个 servlet 或控制器或您在 Java 应用程序中使用的任何东西来处理 /ng/* 路径,并返回 index.html。您还可以使用 tomcat 的重写阀执行类似于 apache mod_rewrite 的操作,这可能具有类似的目的...https://tomcat.apache.org/tomcat-8.0-doc/rewrite.html

    问题是您的请求正在寻找一个文件,在根应用程序的情况下,它会找到一个默认文件 index.html。当你请求 /home 时,没有 /home 文件或 /home/ 文件夹带有 index.html,所以你自然会得到 404。你必须有办法告诉服务器某些类型的请求(以 /ng 开头/ 例如)应该总是返回 index.html。

    【讨论】:

    • 你能给我一个例子吗(链接到通过以下选项1解决这个问题的jsfiddle
    • 如果您不熟悉 Web 和应用程序服务器设置,并且无法在 jsfiddle 中表示,那么它并不是那么简单。您可以谷歌 apache 反向代理 tomcat 以获取设置选项,然后使用 mod_rewrite 示例。如果您正在寻找更快的解决方案,tomcat rewrite Valve 链接可能是您最好的选择。我假设问题是直接命中路由,而不是来自内部链接,对吗?
    • 我假设问题是直接到达路由,而不是来自内部链接,对吗?是的,当我直接击中路线时
    • 那么是的,我会查看上面的 tomcat 重写链接,因为如果您以前没有这样做过,这可能比设置 Web 代理更容易。一个示例规则是:RewriteRule ^/ng/?(.*) /index.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2019-03-21
    • 2016-02-20
    • 1970-01-01
    • 2019-01-17
    • 2020-10-16
    • 2017-07-20
    相关资源
    最近更新 更多