Play(一):搭建项目

1. 项目结构

app/
   
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依赖

你可能感兴趣的:(Play(一):搭建项目)