play配置Ebean,cors配置和angular2前端设置

Play 2.6.x documentation

1、play的Ebean配置

application.conf配置,在下面添加块

ebean {

        default="models.*"

}

在根目录下的bulid.sbt添加PlayEbean

lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)

在project下的plungins.sbt里添加

addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "3.0.2")

这时候运行activator run

数据库建表user,添加提交数据,app下创建文件夹models,创建文件User.java添加set,get方法及finder方法


controller的HomeContorller.java添加方法

public    Result     getUser() {

           List user   =   User.find.findList();

            return  ok(Json.toJson(user));

}

routers里添加声明

GET    /users                      controllers.HomeController.getUser()

浏览器输入 http://localhost:9000/users尝试,返回结果


play配置Ebean,cors配置和angular2前端设置_第1张图片

2、angular2前端项目调用

     编写service.ts

    创建 services的目录在目录下创建app.services.ts


play配置Ebean,cors配置和angular2前端设置_第2张图片

将AppService添加到app.module.ts,注意引入放到providers里


这时候在ts里调用就可以了

ngOnInit() {

      this.appService.getUsers().then( i=>console.log(i));

}

这时候问题又来了,控制台查看请求数据时返回的,但是报了跨域问题。

确实服务是localhost:9000 前端是localhost:4200

3、跨域资源共享 CORS、

    CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。

    它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

   刚好在配置文件里有一块就是cors的配置,也就是跨域的配置 

   application.conf

play配置Ebean,cors配置和angular2前端设置_第3张图片


play配置Ebean,cors配置和angular2前端设置_第4张图片

   在build.sbt里添加filters

libraryDependencies ++= Seq(

    javaJdbc,

   cache,

   javaWs,

   filters

)

现在需要在filter下创建Filters.java,在这之前,先把建项目生成那一堆东西删点吧

routersli的接口声明都删掉,对应的java文件也都删掉吧

app根目录下的Filter.java   Modoule.java   删掉

views目录   删掉

controllers里的 AysncController.java  CountController.java 删掉

filter下文件改名为Filters.java

内容修改如下

packagefilters;

importjavax.inject.Inject;

importplay.filters.cors.CORSFilter;

importplay.http.DefaultHttpFilters;

publicclassFiltersextendsDefaultHttpFilters {

     @Inject

      publicFilters(CORSFiltercorsFilter) {

               super(corsFilter);

       }

}

这时候在访问下就可以了,没有跨域问题了,可以进行开发了

参考链接  cors-filter

你可能感兴趣的:(play配置Ebean,cors配置和angular2前端设置)