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 = User.find.findList();
return ok(Json.toJson(user));
}
routers里添加声明
GET /users controllers.HomeController.getUser()
浏览器输入 http://localhost:9000/users尝试,返回结果
2、angular2前端项目调用
编写service.ts
创建 services的目录在目录下创建app.services.ts
将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
在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