文档章节

play1.x 第二弹 :HTTP路由(routes)

星闪
 星闪
发布于 2017/08/07 14:20
字数 895
阅读 5
收藏 0

谨以此系列文章进行学习、记录、分享。

注:参考了play官方文档    https://www.playframework.com/documentation/1.2.x/home

前言:

    上一弹我们搭建了一个项目,并导入了eclipse。从一个请求的生命周期,来看当我们接收到一个请求,首先会到我们的路由来分配我们需要哪个action来处理请求。这里就说一下我们的路由文件。

    我们的路由文件目录地址conf/routes,他用于配置路由规则。这个文件包含了应用的所有路径映射。每一个路由配置项由HTTP方法,URI模式和对应的Java调用组成。

路由文件的语法

        

我们看看,一个路由配置项是这样子的:    

GET    /clients/{id}             Clients.show           

每一个路由配置项以一个HTTP方法开始,后面跟着URI模式,最后是Java调用的声明。

HTTP方法

你可以给路由文件增加注释,以 # 开头。

# Display a client
GET    /clients/{id}             Clients.show           

如果使用 * 作为方法,则这个路由项将和任何HTTP请求方法相匹配。

*   /clients/{id}             Clients.show           

URI

动态URI

/clients/{id}

将同时匹配以下两者:

/clients/12121
/clients/toto

一个URI模式可以包含一个以上的动态部分:

/clients/{id}/accounts/{accountId}

动态部分的默认匹配策略是由正则表达式 /[^/]+/ 来定义的,你也可以为动态部分定义你自己的匹配正则表达式。

下面这个正则表达式只能接受id为数字的URI请求:

/clients/{<[0-9]+>id}

 Java调用

    路由配置项的最后一部分是Java调用的声明,这部分是由一个action方法的全称来定义的,并且这个action方法必须是一个控制器Controller类中的 public static void 的方法,Controller类必须定义在 controllers 包下,而且必须作为 play.mvc.Controller 的子类。

    他的格式是:以controllers包下的相对路径.方法     例如:controllers下的admin包下的Dashboard类的index方法(action)

GET    /admin             admin.Dashboard.index           

     指定参数的路径配置:

    例如我想page方法的参数id为home的时候进入:

GET    /home              Application.page(id:'home')
GET    /pages/{id}        Application.page

    当page id为‘home’时,上面的两个路由项是等价的。但是,由于第一个路由项的优先级比第二个路由项高,所以当page ID为‘home’时,请求将匹配到第一个路由项。

    变量和脚本

    你可以在 routes 文件中用 ${ … } 的语法来使用变量,也可以用 %{ … } 的语法来使用脚本,就像在模板templates文件里使用一样。例如:

%{ context = play.configuration.getProperty('context', '') }%
 
# Home page
GET    ${context}         Secure.login
GET    ${context}/        Secure.login

    另一个例子可以看CRUD模块的 routes 文件,它使用 crud.types 标签循环遍历所有model类型,为每一个model类型生成一个controller的路由项。

    处理静态资源

    使用 staticDir 作为特殊的action方法,可以将指定的文件目录公开为静态资源文件的容器。

    例如:

GET    /public/           staticDir:public

    当请求路径与 /public/* 匹配时,Play会从 /pubic 文件夹目录中取得静态资源文件。

 

© 著作权归作者所有

共有 人打赏支持
星闪
粉丝 0
博文 5
码字总数 5173
作品 0
高级程序员
私信 提问
Play源码深入之七:Play的MVC实现

整体来说,Play1.x是一个较完善的框架,各种功能都一应俱全,有点像句老话“麻雀虽小五脏俱全”哈。虽没有Struts、SpringMVC的大名气,但是使用起来,相当顺手。本文将深入Play1.x的MVC,也整...

刀狂剑痴
2015/08/27
700
0
Ruby On Rails 路由配置简述

1、认识Rails路由配置文件:routes.rb 在Rails应用程序中,routes.rb 文件管理着所有用户从客户端向服务器发送的请求,该如何转化?routes.rb通过分析URL,来确定要调用哪个控制器的哪个Actio...

VincentJiang
2013/10/22
0
1
Linux服务器双网卡双IP和单网卡双IP配置方法(Debian/Ubuntu)

一、双网卡双IP。 eth0为电信,eth1为联通。 # cd /etc/network/ #vi interfaces # This file describes the network interfaces available on your system # and how to activate them. Fo......

iuez1899
2015/12/14
0
0
MVC中路由器的使用

特性路由的学习。 创建一个ASP.NET MVC应用程序项目,浏览一下Global.asax.cs文件中的代码,注意到ApplicationStart方法中调用了一个名为RegisterRoutes的方法,这个方法集中控制路由的地方,...

浪漫程序人生
2016/04/21
80
0
sails 特色路由 blueprints 的支持及自定义路由

blueprints 是 sails 框架特色功能 Sails中的路由,blueprint 功不可没,网上翻译成 “蓝图” , Sails的blueprint是负责指挥每一条客户端请求应该分配到服务器端的哪个Action去 ,你可以理解成...

一介布衣
2016/08/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
5
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
5
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
33
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部