`

【playframework2笔记整理】1、routes和基础内容

 
阅读更多

本文来自:http://fair-jm.iteye.com/ 

转截请注明出处

 

play的请求处理:

请求==>选择Route==>绑定(进行类型转换) ==>调用Action

 

routers文件基本:

GET /      controllers.Application.home()
GET /products    controllers.Products.list(page: Int ?= 1)
GET /product/:ean   controllers.Products.details(ean: Long)
GET /product/:ean/edit  controllers.Products.edit(ean: Long)
PUT /product/:ean   controllers.Products.update(ean: Long)

 

:参数的写法是不能包括/的
用*包括/

GET /photo/*file controllers.Media.photo(file: String)

这样

/photo/5010255079763.jpg
/photo/customer-submissions/5010255079763/42.jpg
/photo/customer-submissions/5010255079763/43.jpg

都可以匹配上
routes可以包含其他的routes文件
例如有个其他的routes文件叫做barcode.routes可以在routes里写上: 加一个前缀

->   /barcode      barcode.Routes

 


增加静态文件映射
Play中用Assets增加其他的映射路径 例如增加一个html/file的:

GET     /html/:file                 controllers.Assets.at(path="/public/html", file)
GET     /assets/*file               controllers.Assets.at(path="/public", file)

 

这样main.scala.html中如果写:
@routes.Assets.at("stylesheets/main.css") 就会报错
这是因为生成的反转Assets中已经有两个path的可能是 要写成@routes.Assets.at("/public","stylesheets/main.css")
原因:

class ReverseAssets {
// @LINE:11
// @LINE:9
def at(path:String, file:String): Call = {
   (path: @unchecked, file: @unchecked) match {
// @LINE:9
case (path, file) if path == "/public/html" => Call("GET", _prefix + { _defaultPrefix } + "html/" + implicitly[PathBindable[String]].unbind("file", dynamicString(file)))                                                       
// @LINE:11
case (path, file) if path == "/public" => Call("GET", _prefix + { _defaultPrefix } + "assets/" + implicitly[PathBindable[String]].unbind("file", file))                                                      
   }
}   
}

 


匹配正则:

GET /product/:ean controllers.Products.details(ean: Long)
GET /product/:alias controllers.Products.alias(alias: String)

这样的写法是错误的 第二个不可达 总是会到达第一个如果是String类型的就会匹配出现转型异常
可以使用正则:

GET /product/$ean<\d{13}> controllers.Products.details(ean: Long)
GET /product/:alias controllers.Products.alias(alias: String)

 


绑定的环节可以自己定义

REDIRECT-AFTER-POST
HTTP/1.1 302 Found
Location: http://localhost:9000/products


routing反转(原来是URL->Action 代码中可以由Action->URL):
Redirect(routes.Products.list()) 这里就用到了routing反转
routes.Products.list()-->controllers.ReverseProducts-->Call("GET","/products")
别忘了一个Action可是会被多个URL对应的 在反转时匹配第一个出现的URL
play会自动生成反转的类 controllers.routes.类名.方法名
例如:

val call = controllers.routes.Products.list()

这只对controllers包里的有效 不在controllers包内的Controller 写完整的包.类名
 


Action返回二进制数据
用Ok(Byte数组).as(MIME类型)就行了


状态行 头部 内容
状态红用Status()返回 用withHeaders带上头部 比如:
Redirect(url)是由:Status(FOUND).withHeaders(LOCATION -> url) 实现的
Ok(json).withHeaders(CONTENT_TYPE -> "application/json")更简单的写法是:
Ok("""{ "status": "success" }""").as("application/json")

 

使用session data保存内容:

Ok(results).withSession(
request.session + ("search.previous" -> query)
)

session是Map[String,String]的形式
session是通过HTTP session cookie实现的 大小有限不要存放太大的数据(只有4KB)

 


使用Flash Scope为redirect传递数据:
Redirect(routes.Products.flash()).flashing(
"info" -> "Product deleted!"
)
获取用:
val message = request.flash("info")


 

 

静态资源:
获取还是使用反转routing比较方便

<link href="@routes.Assets.at("images/favicon.png")"
rel="shortcut icon" type="image/png">

Assets是个默认就有的控制器 在routes文件中可以看到
静态资源的压缩:
在request中 客服端在请求头上写明支持gzip 例如:Accept-Encoding:
gzip
服务器如果支持就会发送压缩的数据 并在回复头上写着:Content-Encoding: gzip
Play返回有几个条件:
1、在生产模式下(开发模式不开启)
2、请求资源是Assets控制器管理的
3、客服端允许(Accept-Encoding)Gzip
4、在静态文件目录下有和请求的资源相同名但后缀是.gz的文件

 

 

 

本笔记是个人整理所得 陆续部分会整理好之后放出

如要转截 请注明作者:fair_jm 

笔记如有错误欢迎指正^_^

0
0
分享到:
评论

相关推荐

    playFramework1.2.3

    2. **无XML配置**:Play Framework倾向于使用Java注解和纯代码配置,避免了XML配置文件的繁琐,降低了学习曲线,同时也减少了出错的可能性。 3. **简单的路由系统**:通过简单的 routes 文件,你可以定义URL与控制...

    Play framework 2.0 -第一个应用程序

    Play Framework 2.0 是一个开源的Web应用框架,它基于Scala和Java语言,遵循“模式-动作”(Action)架构,提供了一种轻量级、敏捷开发的方式。本篇文章将引导你通过创建一个简单的待办事项(Todo List)应用来了解...

    Play framework 2.0入门教程(三)的源代码,Play留言板

    Play Framework 2.0 是一个基于Java和Scala的开源Web应用程序框架,以其“写后即运行”的特性而闻名。这个入门教程的第三部分是关于如何使用Play Framework构建一个简单的留言板应用。在这里,我们将深入探讨Play ...

    playframework框架项目部署文档

    Play Framework是一个强大的、基于Java和Scala的开源Web应用程序框架,它采用模型-视图-控制器(MVC)架构模式,以简洁的API和直观的开发体验受到开发者喜爱。本篇文章将详述如何在Windows环境下安装配置Play环境...

    play framework 框架手册 word 版

    《Play Framework 框架手册》是一份深入介绍Play框架的文档,主要涵盖了从基础概念到高级特性的全面内容,适合初学者和经验丰富的开发者参考。以下是对手册中部分核心知识点的详细阐述: 1. **MVC应用程序模型**:...

    PlayFramework框架安全模块.pdf

    Play Framework 是一个基于Java和Scala的高性能Web应用框架,它提供了快速开发、可测试和敏捷迭代的能力。在Play Framework中,安全模块是一个重要的组件,它帮助开发者实现基本的认证(Authentication)和授权...

    Play framework的简单示例(MAC上示例)

    通过简单的代码和思路写了play framework的简单的小例子,包括添加页面进行的routes配置,页面跳转,页面之间的数据传递等方面。暂时未使用h2内置数据库及ArrayList、HashMap在页面之间的数据传递。

    play framework 学生信息管理系统

    Play Framework 是一个基于Java和Scala的开源Web应用框架,它以简洁、快速和类型安全而闻名。在"学生信息管理系统"这个项目中,我们可以看到它被用来构建一个用于管理学生数据的应用。JavaEE(Java Platform, ...

    playframework做的demo

    1. **路由(Routes)**:在Play Framework中,路由文件定义了URL模式到控制器方法的映射。在这个博客示例中,我们可能可以看到类似`GET /blog POST /blog/new GET /blog/:id`这样的路由规则,分别对应于查看博客列表...

    Play Framework Cookbook 代码

    《Play Framework Cookbook 代码》是针对使用Play Framework开发Web应用的开发者的一份宝贵资源,它包含了一系列实践示例和解决方案,旨在帮助开发者更好地理解和运用这个强大的框架。Play Framework是一款基于Java...

    Play Framework应用程序框架 v2.9.1.zip

    Play Framework是一款基于Java和Scala的开源Web应用框架,它遵循模型-视图-控制器(MVC)架构模式,旨在提供高效、简洁且快乐的开发体验。在“Play Framework应用程序框架 v2.9.1.zip”这个压缩包中,包含的是Play ...

    play framework框架教程

    #### 十二、Play Framework生成的war包内容 Play框架支持生成WAR文件,这使得应用可以直接部署到传统的Java应用服务器上。WAR文件包含了所有必要的库和配置文件,使得部署过程变得简单。 总之,Play框架提供了一种...

    Playframework 1.2.7 sdk zip包 play1.2.7.zip

    Playframework 1.2.7 是一个开源的Java和Scala Web应用框架,它采用模型-视图-控制器(MVC)架构模式,并且是基于事件驱动的,这使得开发过程更加高效和简洁。这个zip包"play1.2.7.zip"包含了Playframework的SDK,...

    Play framework 2.0入门教程(四)的源代码,Play留言板(数据库版)

    Play框架是Java和Scala开发Web应用的一个强大工具,它提供了模型-视图-控制器(MVC)架构模式,使得开发者能够快速、高效地构建现代Web应用。在这个“Play框架2.0入门教程(四)的源代码”中,我们主要探讨的是如何在...

    playframework部分介绍及部分功能简介,小实例一个

    Play Framework 是一个基于Java和Scala的开源Web应用框架,它采用了模型-视图-控制器(MVC)架构模式。在本文中,我们将深入探讨Play Framework的一些核心特点、优势以及一个简单的小实例,帮助你理解其工作原理和...

    PlayBasics:我的有关Play Framework 2.x的系列教程的示例代码

    在当今的Web开发领域,Play Framework 2.x以其高效、灵活和易用性,成为Scala和Java开发者青睐的框架之一。本教程系列——"PlayBasics",旨在帮助初学者及有一定经验的开发者深入理解并熟练运用Play Framework 2.x...

    PlayFramework的请求处理流程

    所有的HTTP请求都遵循下面的处理流程:  Playframework是一个无状态的面向请求/回应的框架,所有的HTTP请求都遵循下面的处理流程:  框架接收到一个HTTPRequest  Router组件试图从conf/routes文件中找出对应的...

    PlayFramework框架验证[参考].pdf

    Play Framework的验证机制允许开发者在多个层次上对数据进行验证,确保应用程序的数据质量和安全性。它可以轻松地集成到控制器和模型中,提供了丰富的验证规则和自定义验证的能力,使得开发更加高效且可控。通过这些...

    play框架jar包

    Play框架是一款基于Java和Scala的开源Web应用...总之,这个“Play框架jar包”资源为开发者提供了搭建Play应用所需的基础组件,通过理解和熟练运用这些jar包,开发者可以快速、高效地构建出高性能、可扩展的Web应用。

Global site tag (gtag.js) - Google Analytics