首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring独立前端和后端

Spring独立前端和后端
EN

Stack Overflow用户
提问于 2016-08-24 10:45:21
回答 3查看 2.4K关注 0票数 1

我有一个相当大的Spring + AngularJS应用程序。Spring主要作为REST工作,但在我开始开发时(安全性、一些路由、Wro4j资源打包)并没有在Web项目中有太多的经验。

App部署在AmazonElasticbean秸秆上。

前端的家伙和我在一起,我们必须分离开发过程。

的问题是:

  1. 我要做哪些基本步骤来将它们分割成两个应用程序?
  2. 部署过程是什么?前端/后端是否必须作为单独的应用程序部署?
  3. 对一般的最佳做法有什么建议吗?
EN

回答 3

Stack Overflow用户

发布于 2016-08-30 13:32:13

我认为,如果您的应用程序非常大,并且后端构建需要大量时间( angularJS mins),或者您不希望每次都基于任何好的理由重新构建所有应用程序,那么分离angularJS应用程序和单独部署的唯一原因就是。将angularJS应用置于spring下,即使只是主页,也给您带来了许多优势:可以使用spring生态系统、集中式安全、登录和访问控制、SSO、大量集成、spring社交等。不确定你真的需要把它们分成两个应用程序。但不管怎样。

1)如果您想分离angularJS应用程序,您需要将任何有关路由的逻辑从控制器或jsp文件转移到angularjs应用程序。实现令牌基auth/登录。然后,您可以在角的常量块中定义REST_BASE_URL常数,并使用everywhere($http,$resource)生成请求url。如果您基本上在角部分上工作,您可以在远程服务器上安装后端,并且只能使用nginx或任何小型服务器在本地运行角应用程序,并在Google上运行(请确保您使用此工具运行chrome:--args -禁用-web-安全-用户-数据-dir ~/)。不幸的是,您不能禁用Firefox中的CSRF检查。

2)您可以分别构建和部署两个应用程序,这将是一个不错的选择。

3)您还需要创建自己的AuthenticationEntryPoint并返回SC_UNAUTHORIZED(401),而不是spring中的登录页面。如果角度方面,您可以添加全局拦截器捕获401,并显示登录页面或对话框如下:

代码语言:javascript
运行
复制
.factory('authHttpResponseInterceptor',['$q','$location',function($q,$location){
        return {
            response: function(response){
                if (response.status === 401) {
                    console.log("Response 401");
                }
                return response || $q.when(response);
            },
            responseError: function(rejection) {
                if (rejection.status === 401) {
                    window.location.reload();
                }
                return $q.reject(rejection);
            }
        }
    }])

票数 2
EN

Stack Overflow用户

发布于 2016-08-25 13:00:59

您可以在节点、lite服务器或apache上部署前端项目,从运行Spring的tomcat获取/发布数据,您可能存在跨域问题,可以使用

<mvc:cors> <mvc:mapping path="/**" /> </mvc:cors>

来解决跨域问题。

票数 0
EN

Stack Overflow用户

发布于 2016-08-24 16:00:09

" MVC“是Spring,代表。" view“可以是html或jsp (您可以在servlet中指定视图细节)。您不需要单独部署它们。你是如何建立你的项目的?Maven是个好主意。它将将所有前端和后端代码打包到war/jar文件中,然后jus必须将其部署到服务器上。

您的AngularJS代码将包含在春季的“视图”中,其JS部分将位于您的app.js中。所以没有必要把它们分开。您的前端人员可以编写前端代码,在构建和部署之前,您只需将其集成到项目中即可。

但是,如果你一定要把它们分开,我只能想到一个选择。将您的所有UI代码(HTML、CSS、JS)与war文件一起放在Tomcat中的"webapp“文件夹中(让我们将其称为”project“)(让我们将其命名为war文件)。部署时,您只需确保您的URL映射正确。例如,如果app.js(驻留在项目/js/app.js中)想要为/controller/action调用/controller/action服务,则该URL必须是../../../project-war/controller/action

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39121156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档