美文网首页
Play(一):搭建项目

Play(一):搭建项目

作者: aix91 | 来源:发表于2019-02-13 19:01 被阅读0次

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

    相关文章

      网友评论

          本文标题:Play(一):搭建项目

          本文链接:https://www.haomeiwen.com/subject/pvhprqtx.html