文档章节

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......

90xa
2015/12/14
487
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

没有更多内容

加载失败,请刷新页面

加载更多

w, vmstat, top, sar, nload命令查看系统状态信息

w/uptime 查看系统负载 cat /proc/cpuinfo 查看cpu核数 vmstat 监控系统状态,用法 vmstat 1,关键的几列: r, b, swpd, si, so, bi, bo, us, wa top 查看进程使用资源情况 top -c 显示详细的...

野雪球
今天
1
0
小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
今天
2
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
2
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
3
0
大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部