欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Play(一):搭建项目

程序员文章站 2022-04-18 11:57:51
...

1. 项目结构

app/
   <main Scala sources>
conf/
   配置文件
   routes(路由文件)
project/
    build.properties
    plugins.sbt (配置plugin)
    Dependencies(object) (配置公用库)
    Resolvers(object) (配置资源库)
sbt.build

2. build.sbt文件

sbt首先会读取该文件,创建模块,添加依赖..

  • 创建项目
方式一:如果没有指定project的ID,则使用val的参数名当作project的ID
 lazy val root = (project in file("."))
方式二:指定project ID
lazy val server = Project("server",file("server"))
  • 设置公共的配置
lazy val commonSettings = Seq(
    organization := "com.test",
    version := "0.1.0",
    scalaVersion := "2.12.8"
)
  • enable PlayScala plugin, 引入MVC包
    java MVC相关类在play包下;Scala MVC相关包在play.api包下
lazy val server = Project("server",file("server"))
    .enablePlugins(PlayScala)
    .settings(
        resolvers ++= resolvers,
        commonSettings,
        basicSettings
    )

3. plugins.sbt文件

在这个文件里,指定要添加的plugin

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.5")

这个plugin会帮助sbt找到项目的入口(NettyServer)

4. routes 路由文件

  • route可以将HttpRequest转换成Action.
  • play可以根据routes文件和定义的controller生成ReverseRoutes文件
class ReverseHelloController(_prefix: => String) {
    def _defaultPrefix: String = {
      if (_prefix.endsWith("/")) "" else "/"
    }
    // @LINE:1
    def hello(): Call = { 
      Call("GET", _prefix)
    }
  }

reverseController返回的Call,提供类HTTP 方法和URI。通过reverseController,我们可以在代码里面直接访问(Redirect)路由。

  • play同时还会生成Routes类,该类继承了GeneratedRouter,并可以通过反射的方式执行controller里面的方法。
5. 错误处理
  • GZIP format 问题
    sbt clean,清除target文件
  • RuntimeException: No application loader is configured
    添加guice依赖

转载于:https://www.jianshu.com/p/9e870472df29