play_framework框架--教程(一)
安装sbt,可参考前一篇 文章
https://blog.csdn.net/huazi99/article/details/123392417?spm=1001.2014.3001.5502
一、创建helloworld项目
1、创建文件夹 playframe02,进入,
执行命令 playframe02>sbt new playframework/play-scala-seed.g8
(或之前有生成过项目文件夹play-scala-seed,直接copy也可)
2、弹出name等,默认回车即可
3、进入play-scala-seed文件夹,输入 sbt
4、输入 run
5、浏览器运行:http://localhost:9000/
二、项目目录介绍
项目创建完后,可用idea打开
官网介绍:
1、app/目录_
该app目录包含所有可执行工件:Java 和 Scala 源代码、模板和已编译资产的源代码。
目录中有三个包app,一个用于 MVC 架构模式的每个组件:
app/controllers
app/models
app/views
您可以添加自己的包,例如,一个app/services包。
注意:在 Play 中controllers和models包views名只是简单的约定,可以根据需要进行更改(例如在所有内容前加上com.yourcompany)。
还有一个可选目录app/assets,用于存放已编译的资产,例如LESS 源和CoffeeScript 源。
2、public/目录_
存储在public目录中的资源是由 Web 服务器直接提供的静态资产。
该目录分为图像、CSS 样式表和 JavaScript 文件的三个子目录。您应该像这样组织您的静态资产,以保持所有 Play 应用程序的一致性。
在新创建的应用程序中,/public目录映射到/assetsURL 路径,但您可以轻松更改它,甚至为静态资产使用多个目录。
3、conf/目录_
该conf目录包含应用程序的配置文件。有两个主要的配置文件:
application.conf是应用程序的主要配置文件
routes是路由器的定义文件。
如果您需要添加特定于您的应用程序的配置选项,最好在application.conf文件中添加更多选项。
如果库需要特定的配置文件,最好在conf目录下提供它。
4、lib/目录_
该lib目录是可选的,并且包含非托管库依赖项,即您想要在构建系统之外手动管理的所有 JAR 文件。只需将任何 JAR 文件拖放到此处,它们就会被添加到您的应用程序类路径中。
5、build.sbt文件_
您的项目的主要构建声明通常位于build.sbt项目的根目录中。
6、project/目录_
该project目录包含 sbt 构建定义:
plugins.sbt定义了这个项目使用的 sbt 插件。
build.properties包含用于构建您的应用程序的 sbt 版本。
7、target/目录_
该target目录包含构建系统生成的所有内容。了解此处生成的内容可能很有用:
classes/包含所有已编译的类(来自 Java 和 Scala 源)。
classes_managed/仅包含由框架管理的类(例如由路由器或模板系统生成的类)。将此类文件夹添加为 IDE 项目中的外部类文件夹会很有用。
resource_managed/包含生成的资源,通常是编译后的资源,例如 LESS CSS 和 CoffeeScript 编译结果。
src_managed/包含生成的源代码,例如模板系统生成的 Scala 源代码。
web/包含由sbt-web处理的资产,例如app/assets和public文件夹中的资产。
8、典型.gitignore文件
您的版本控制系统应忽略生成的文件夹。这是 Play 应用程序的典型.gitignore文件:
logs
project/project
project/target
target
tmp
dist
.cache
RUNNING_PID
9、默认 sbt 布局
您还可以选择使用sbt和Maven使用的默认布局。为了使用此布局,您必须禁用布局插件并为旋转模板设置显式监控:
lazy val root: Project = (project in file("."))
.enablePlugins(PlayScala)
// Use sbt default layout
.disablePlugins(PlayLayoutPlugin)
三、主要代码讲解
1、路由文件routes
—根路径及其指向,指向HomeController.scala中的index()方法
GET / controllers.HomeController.index()
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
2、HomeController.scala
class HomeController @Inject()(val controllerComponents: ControllerComponents) extends BaseController {def index() = Action { implicit request: Request[AnyContent] =>Ok(views.html.index())}
}
index()—函数名
Ok(views.html.index())–调取文件index.scala.html
3、index.scala.html
@main("Welcome to Play") {<h1>Welcome to Play!</h1>
}
@main(“Welcome to Play”) — main指调用main.scala.html,main(参数)
4、main.scala.html
@(title: String)(content: Html)<!DOCTYPE html>
<html lang="en"><head>。。。</head><body>@content @title </body>
</html>
@content **调用index.scala.html文件中的 <h1>Welcome to Play!</h1>**
@title **调用index.scala.html文件中的main里的参数,Welcome to Play**
后续教程,敬请期待。。。。
play_framework框架--教程(一)相关推荐
- 从零搭建React全家桶框架教程
从零搭建React全家桶框架教程 源码地址:https://github.com/brickspert/react-family 欢迎star 提问反馈:blog 原文地址:https://githu ...
- Asp.net Ajax框架教程
目录 (一).概述... (二).应用场景代码示例... 1).ScriptManager控件示例... 1. 在异步调用服务端注册客户端脚本新方法... 2. 捕获Ajax异步调用中 ...
- Konstrukt PHP REST框架 教程二
Konstrukt PHP REST框架 教程二 入门 - 第2部分 在本教程中,我们假设你已经完成了第一个教程,因为它的基础上产生的代码从该. 谈判的Content-Type 在大多数情况下会发出一 ...
- 【SSM面向CRUD编程专栏 3】关于黑马程序员最全SSM框架教程视频,P37集老师跳过的模块创建以及tomcat下载安装配置和运行等诸多问题
写在前面: 本人是在学习B站黑马程序员SSM框架教程视频的时候在P37集遇到了问题,如果不解决还没办法往下接着听,老师跳过的模块创建以及tomcat下载安装配置和运行等诸多问题,全在 ...
- Spring 框架教程
Spring 框架教程 Spring Framework是最流行的Java EE框架之一.本文面向希望学习Spring框架体系结构的Java开发人员,它的核心组件以及属于Spring框架伞的各种项目. ...
- Spring教程 - Spring核心框架教程
Spring教程 - Spring核心框架教程 Spring是最广泛使用的Java EE框架之一.我已经在Spring Tutorial上写了很多内容,这是一篇摘要文章,它将作为索引按顺序完成所有这些 ...
- API接口开发其实特简单,Python Flask Web 框架教程来了
大家好,日常工作中,无论你是数据工程师.数据挖掘工程师,甚至数据分析人员,都不可避免的与他人进行数据交互,API接口提供数据是最常见的形式. 今天我给大家分享 Python Flask Web 框架教 ...
- Asp.net Ajax框架教程[教程下载]
Asp.net Ajax 框架教程 目录 (一).概述... (二).应用场景代码示例... 1).ScriptManager控件示例... 1. 在异步调用服务端注册客户端脚本新方法... ...
- MyEclipse使用Maven创建web项目+搭建SSM框架教程
MyEclipse使用Maven创建web项目+搭建SSM框架教程 博文中的代码:链接:http://pan.baidu.com/s/1o8tqIMI 密码:m3si 安装maven和配置 1.下载m ...
最新文章
- SSH框架的简单搭建步骤
- web.config mysql_web.config配置mysql数据库连接
- 剑指企业级云原生,阿里云 CNFS 如何破局容器持久化存储困境
- MySQL 修改和删除触发器
- 闲说HeartBeat心跳包和TCP协议的KeepAlive机制
- 绕开“陷阱“,阿里专家带你深入理解C++对象模型的特殊之处
- 小米刷原生android系统下载地址,小米6刷原生安卓8.0下载|小米6刷原生安卓p 免费版_附教程_最火软件站...
- Java通过图片URL把图片上传到本地服务器
- 《工业设计史》第七章:艺术变革与现代设计
- 汽车级485通信电路
- Matlab plot3显示成平面图像
- 四、FFI和第三方模块
- python xmind_Python 使用Python操作xmind文件
- python调用固高GSN运动控制卡dll
- post_thumbnail_html,WordPress 文章特色图片(Post Thumbnail)详细介绍和使用
- Java计算两个时间的小时差
- TOUGH2系列建模方法及在CO2地质封存、水文地球化学、地热、地下水污染等领域中的实践技术
- 看完这篇文章,保你学会C语言while循环与 do while 循环
- 2018年最新人工智能书单,总有一本你爱的
- Python123测验4: 程序的控制结构 (第4周)