大家可能觉得奇怪,没有了上下文,在模板中如何获取当前的请求呢?答案很简单:通过参数传递喽!利用Scala的隐式参数的特性,在调用模板函数时不需要显示传入,编译器会自动传入。...._ import play.api.data.validation.Constraints._ 数据绑定 数据绑定是指将用户输入的表单数据绑定到 Form 对象的过程,例如下面定义一个用于接收用户登录邮箱和密码的...nonEmptyText: 映射为非空的 scala.String 类型, 可以使用 minLength 和 maxLength 参数限定长度。...number: 映射为 scala.Int 类型,可选参数: min, max, 和 strict。...longNumber: 映射为 scala.Long 类型, 可选参数: min, max, 和 strict。
本文并不会手把手教你如何创建一个Play应用,而是通过核心的代码片段传递Play的一些设计理念,为不熟悉Play框架的同学提供一个快速了解的途径。...不熟悉Scala的同学看上面的代码会感觉比较奇怪,Action{...}和Ok(...)是什么鬼?...另外Scala不建议使用return语句,默认最后一条语句的值作为函数的返回值。...Play的模板层采用Scala语言编写,借助Scala语言,在Play的模板层你会感觉自己像是一只脱了缰的野马。其实在模板层只需要了解Scala的if和for语法即可。...Scala虽然入门门槛较高,但是带来的收益是巨大的,随着你对Play了解的深入一定可以慢慢的体会到这点。
Grails开箱即用的内容包括: GORM :一个易于使用的对象映射库,支持SQL,MongoDB,Neo4j等。 可以查看呈现HTML和JSON的技术。...JSON Views 用于在服务器端呈现 JSON 的视图技术 Groovy Server Pages 用于在服务器上呈现 HTML 和其他标记的视图技术 Async Framework 异步编程抽象...作为一个全栈框架,Play 包含构建 Web 应用程序和 REST 服务所需的所有组件,例如集成的 HTTP 服务器、表单处理、跨站点请求伪造 (CSRF) 保护、强大的路由机制、I18n 支持等的。...Play 可以直接支持日常任务和热重载来节省宝贵的开发时间。 Play 结合了生产力和性能,可以轻松使用 Java 和 Scala 构建可扩展的 Web 应用程序。...具有以下特点: 简单的开发周期,该框架可自动编译和重新装载已改变的源文件。
科学合理地操作Scala中的集合可以使我们的代码变得更加简洁和高效。 Mutable 和 Immutable 集合 Scala 集合类系统地区分了可变的和不可变的集合。...映射 Map Map 中的元素呈现 key -> value 的形式,其中第一个参数是映射的键,第二个参数是映射的值。且Map中每一个元素的键是唯一的。...仅仅是将嵌套结构扁平化了,并没有改变原来集合内层列表中元素的值。...flatMap 不仅将嵌套结构扁平化了,而且改变了原来集合内层列表中元素的值,其实 flatMap 就是在 flatten 之后再做一个 map 操作。...,我们对集合中常用方法的操作结果有了一个大致的认识,接下来我们看看在不同场景下如何科学地选择相应的集合操作。
简单来说,"函数式编程"是一种编程范式(programming paradigm),也就是如何编写程序的方法论。它属于结构化编程的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。...除此之外也要关注嵌套函数、函数字面量、传名参数这些知识点。 11 方法和函数的区别?...List列表:以线性方式存储,集合中可以存放重复对象; Set集合:集合中的对象不按特定的方式排序,并且没有重复对象; Map映射:是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象...Time对象应该以new Time(hrs, min)方式构建,其中hrs小时数以军用时间格式呈现(介于0和23之间)。...,以及一个字符串到整型值的映射,返回整型集合, 其值为能和集合中某个字符串相对应的映射的值。
Scala中的控制结构实质上与其他编程语言并无太大差别,需要注意的是Scala中的控制结构大多具有返回值,而其他编程语言中的控制结构一般就仅仅是用于流程控制。...,甚至有人将其称作是最能体现Scala特色和优势的特性之一。...在模式匹配中另外值得关注的一个细节是,在各匹配分支后,用映射符号"=>"连接条件和执行逻辑,这与Scala中函数的标志性符号是一致的,都表示映射的含义,一定程度上也暗示着模式匹配其实可理解为根据条件逻辑执行一个个的子函数...对于嵌套循环,除了类似其他编程语言中的书写两重for循环外,还可直接将两层循环变量写到一个for循环中,功能一致但逻辑更为清晰: // 嵌套for循环常规写法 scala> for(i <- 1 to...,对于常用的分支结构、循环结构在Scala中都有所体现,且均具有一定特色,灵活掌握还是比较方便的。
Play框架可以为桌面和移动接口构建轻量级的、web友好的Java和Scala应用程序。...您可以将Struts与其他Java框架集成在一起,以执行不构建到平台中的任务。例如,可以使用Spring插件进行依赖注入,或者使用Hibernate插件进行对象关系映射。...Struts还允许您使用不同的客户端技术来构建应用程序的前端,例如javascript页面或具有角度的HTML。 但是,如果您希望创建可以在前端呈现的服务器端组件,那么Struts可能不是最好的选择。...由于Wicket是一个基于组件的框架,所以Wicket应用程序由可重用的页面和组件(如图像、按钮、链接、表单等)组成。...Wicket应用程序的编程以pojo为中心,因此组件也是具有封装和继承等面向对象特性的普通Java对象。组件被打包成可重用的包,因此您可以向它们添加自定义的CSS和JavaScript。
表单状态甚至可以具有嵌套信息,例如用户的地址信息,它具有子字段,例如address.addressLine1,address.addressLine2等。...useState中的更新函数可以基于prev参数计算新状态 另外,如何更新嵌套状态如address.addressLine1,address.pinCode。...2:对象具有_path和_value属性 - 当使用具有这两个属性的对象作为参数,调用更新回调函数时。我们将此视为一种特殊情况,其中_path表示嵌套的字段路径。...在字符串形式中,例如:'address.pinCode'或表示路径['address','pinCode']的数组。 我们如何使用此类路径表示来更新对象中的嵌套字段?...PS:在enhancedReducer中可以处理更多边缘情况,动态字段映射也可以缩短一些代码,减少代码重复和其他一些事情。
sbt-reactjs - 使用npmReactSBT插件 scalajs-react - Scala.js和Facebook的React之间的内疚 react-xtags - 使用React实现xtags...valuelink - 具有扩展React链接的全功能双向数据绑定 wingspan-forms - Facebook React的动态表单库 newforms - React的同构形式处理 formjs...组件 List View Select - 具有本机组件的React Native的Toggleable选择框 Final Form formland - 一个简单,超灵活,可扩展的基于配置的表单生成器...React - React形式 - React中的角状React形式 unform - ReactJS表单库,用于创建不受控制的表单结构,包含嵌套字段,验证等等!...- 一个简单的redux中间件,用于使用JSON Schema验证redux状态值和对象类型 redux-persist - 坚持并补充redux商店 Redux教程 在ES6中使用React和Redux
数据库是整个站点的数据储藏室。用户提交的数据可以存储在数据库中,以便未来使用。Play可以通过JDBC和数据库通信。我讲介绍Play和mysql数据库的连接。 Play 2....实体有两个场,整数的id和字符串的name,用来保存数据。 @id注解下,id将不为空,不重复,并自动增加。 Person还有一个静态的场find。...find是Play提供的Finder类型,用于数据库查询。而Person类中得findAll()和findByName()的静态方法中,就调用了find,从而在数据库中查询条目。...练习 根据表单一讲的内容,增加一个向数据库添加条目的表单。...类型的表,传递给模板views/personList.scala.html: @(personList: List[models.Person]) <!
Play框架的主要功能是提供动态响应的内容。但一个网络项目中必然有大量的静态内容,比如图片、Javascript文件、CSS文件等。我下面介绍如何在Play项目中加入静态文件。...默认路径 Play项目的静态文件一般存储在根目录下的public文件夹。...我可以通过一个表单来让客户上传。...表单的模板app/views/upload.scala.html为: @helper.form(action = routes.Application.upload, 'enctype -> "multipart...CoffeeScript和LESS Play中可以用CoffeeScript编写前端JavaScript。建立app/assets/javascripts文件夹。
1 基本的 API 概念 Flink程序是实现分布式集合转换的常规程序(例如,过滤,映射,更新状态,加入,分组,定义窗口,聚合)。...注意:在显示如何使用API的实际示例时,我们将使用StreamingExecutionEnvironment和DataStream API。...大数据的处理流程 2 DataSet & DataStream Flink具有特殊类DataSet和DataStream来表示程序中的数据。 可以将它们视为可以包含重复项的不可变数据集合。...版本 Scala case类(和Scala元组是case类的特例)是包含固定数量的具有各种类型的字段的复合类型。...与Scala的Either类似,它代表两种可能类型的值,左或右。 两者都可用于错误处理或需要输出两种不同类型记录的运算符。
概览 在本文中将介绍 Scala 的 Play Web 开发框架。...我们将会学习如何创建一个 Play 项目,使用开发工具生成我们的第一个项目以及实现自定义的功能,另外还将体验一下 Play 框架的测试能力。...组织的名称将会作为项目中包的名称,Scala 的包名的命名规则和 Java 的包名命名规则一样,因此我可以可以给包命名为 baeldung.com 现在,我们可以进入到 baeldung-play-framework...controllers 目录用来保存 Scala 代码 views 目录用来保存 HTML 模板 conf 保存着路由配置既请求的 URL 地址和类以及函数的映射关系 public 目录保存着 Play...现在,让我们看看 Play 框架项目的内部结构,了解它是如何工作的,以及我们还可以做什么。
,具有简洁且直观的语法结构。...这个映射过程是自动进行的,ASP.NET Core框架根据请求中的数据类型、名称和模型对象的属性进行匹配。...了解如何有效地使用模型绑定可以简化控制器的代码,并使数据传递更为方便和可靠。...以下是一些常见的技巧: 模型绑定前缀 在处理复杂的数据结构(例如嵌套的对象或集合)时,可以使用模型绑定前缀来指定数据应该绑定到模型的哪个属性。这在处理表单数组或嵌套对象时非常有用。...、查询字符串和路由数据中获取数据 } 默认值 在模型的属性上设置默认值,可以确保即使没有提供相应的数据,模型属性也有一个合理的初始值。
它遵循MVC体系结构,并提供了一些有用的功能,如模型视图控制器、前端控制器、活动记录、数据映射和配置约定。...此外,没有数据库抽象层、表单验证或外部源依赖。 它是一个简单、高度灵活、高性能的web框架。作为一个轻量级的框架或微框架,它很容易学习和理解。此外,作为一个Python框架,它非常用户友好。...最佳Python后端框架 10.Scala开发人员的Play框架 PLAY是用Scala和Java编写的,是最强大的后端web框架之一。...如果你想学习Scala并开始使用Play Framework进行web开发,并且需要一个资源来开始在线学习,那么我建议你加入Scala&Functional Programming for初学者|在Udemy...这是一门在线学习Scala的好课程,是Play框架所必需的,已经有超过3万名学生加入了这门课程。 用于web开发的最佳Scala后端框架 这就是程序员在2022年能学到的最好的后端框架。
用户验证(User Authentification)复合的使用Play框架的数个功能,包括前面已经了解的表单和数据库,以及这篇文章里要提到的加密和会话。...输入用户名和密码,可以看到数据库中增加的记录: ? 用户验证 将用户验证的主要逻辑放入到模型User中。...正如postLogin()中所示,表单的hasErrors()方法将自动检查validate()方法的返回值。如果validate()方法返回为null,则说明表单无误。...在会话有效期内,服务器可以识别相应客户的访问。Play实现会话相当方便。 提交登录表格时,如果登录合法,我将让服务器开启和该客户的会话,记录客户的信息。...在会话中,可放入键值对(key-value pair)形式的信息。这里的键名为"email",对应值为登录用户的邮箱地址。登录成功后将重新定向到/。 增加index()动作,对应/这一URL。
1 基本的 API 概念 Flink程序是实现分布式集合转换的常规程序(例如,过滤,映射,更新状态,加入,分组,定义窗口,聚合)。...注意:在显示如何使用API的实际示例时,我们将使用StreamingExecutionEnvironment和DataStream API。...,size_16,color_FFFFFF,t_70]2 DataSet & DataStream Flink具有特殊类DataSet和DataStream来表示程序中的数据。...版本 Scala case类(和Scala元组是case类的特例)是包含固定数量的具有各种类型的字段的复合类型。...与Scala的Either类似,它代表两种可能类型的值,左或右。 两者都可用于错误处理或需要输出两种不同类型记录的运算符。
伴随着Scala语言逐渐形成的Scala社区,已经开始慢慢形成相对完整的Scala技术栈。无论是企业开发、自动化测试或者大数据领域,这些框架或工具已经非常完整地呈现了Scala开发的生态系统。...Squeryl支持按惯例映射对象与关系表,相当于定义一个POSO(Plain Old Scala Object),从而减少框架的侵入。...若映射违背了惯例,则可以利用框架定义的annotation如@Column定义映射。框架提供了org.squeryl.Table[T]来完成这种映射关系。...若硬要使用专有的Web框架,在Scala技术栈下,最为流行的就是Play Framework,这是一个标准的MVC框架。另外一个相对小众的Web框架是Lift。...由于Spark具有先进的DAG执行引擎,支持cyclic data flow和内存计算。因此相比较Hadoop而言,性能更优。
2.2 Scala变量声明 和java类似,Scala中的变量需要在创建时进行声明,有var和val两种声明方式,其中val类型变量定义后不可以重新赋值,而var类型变量声明之后可以自由赋新值,下面在...[String,Int] = Map(Scala -> 1, Python -> 2, R -> 3) 2.Map映射的索引 直接通过调用键来获取对应的值: scala> DemoMap("Python...6.为可变映射更新或新增键值对 //更新已有的可变Map映射中指定键的值,若不存在此键则创造新键值对 scala> DemoMap("Julia") = 100 scala> DemoMap res1... 在Scala中,和Python类似,也可以通过多层列表的嵌套来制造多维列表: //声明一个二维列表 scala> var list1 = List(List(1,1),List(2,3)) list1...Set集合 和Python中的集合类似,Scala中的集合只允许不重复的若干元素存放在其中,因此可以用来去重,且Set集合分为不可改变的和可变的,即其本身能否被重新赋值或更改,默认情况下Scala
中经常会涉及到变量值的输入和输出,输入是指通过键盘将数据信息传送到Scala环境的内存中,输出则是指将内存中的数据返回到指定的地方(如电脑屏幕、本地文件或数据库等)。...两种输入方法 通过等号赋值的方法,向变量中传递值 调用scala.io.StdIn包中的read类函数,在屏幕中完成数据的输入 举例 import scala.io.StdIn._ // 下划线代表StdIn...Scala中的控制流 在Scala编程中,会经常使用到控制流技术,基于该技术,可以轻松地解决很多重复性的工作。本文主要分享有关控制流中的if分支、for循环和while循环。...该如何利用嵌套的if分支来完成呢?...循环在某个迭代对象已知的情况下,执行的的重复性操作。
领取专属 10元无门槛券
手把手带您无忧上云