JavaTomcat,Grunt构建
我在angular js应用程序中使用grunt,在服务器端使用tomcat
只要需要,在dev env中,我就运行Grunt build,获取dist文件夹并将其放在TomcatWebApp文件夹中
然而,我有一个奇怪的问题。应用程序中的URL只有在我从HTML页面单击它们时才起作用
例如,如果我键入http://localhost:8080/upload
,我将得到404 page not found error
,但是如果从索引页-http://localhost:8080
,我单击页面中的链接,可以上传它
有什么问题吗
如果我在节点上运行应用程序。js,链接工作完美!只是在Tomcat上,它没有按预期工作
已编辑
我在angular js中这样定义URL
angular.module('angularjsApp')
.config(function ($stateProvider) {
$stateProvider
.state('upload', {
url: '/upload',
templateUrl: 'app/upload/upload.html',
controller: 'UploadCtrl'
});
});
# 1 楼答案
这些链接是实际的标准HTML链接吗?如果Tomcat不响应
http://localhost:8080/upload
,那么它可能不是一个GET
请求# 2 楼答案
您使用历史推送状态导航的角度设置方式,更改浏览器的URL,而不会实际导致浏览器从后端重新获取其内容
因此,在浏览器中使用推送状态可以很好地导航,但是当请求实际发送到服务器时,它会响应404,因为您没有任何东西可以提供HTML
有两种解决方案:
您需要一个servlet,它将返回您的初始HTML内容,以便对所有路由执行此操作-因此映射到
/*
,而不仅仅是/
,因此它给出的任何路径都会返回相同的HTML所以你的网站。xml有一个servlet,看起来如下所示,返回:
# 3 楼答案
为了通过AngularJs服务器,然后在域后添加
/#/
,并确保html5模式默认启用为false
($locationProvider.html5mode
)。下面是您的应用程序从客户端站点提供内容的示例(angular js)