Play Framework1.4 学习笔记 Route和Controller

路由 Route

  • route文件中的先后顺序代表了路由生效的先后顺序
  • /user 匹配 /user 但不匹配 /user/
  • 可以用404做路由 GET /ignore 404
根据某些参数更具体的路由
public static void page(String id) {
    Page page = Page.findById(id);
    render(page);
}

 想为id为home的页面定义URL别名,可以这样设置
GET /home Application.page(id:‘home’)
 GET /pages/{id} Application.page

 当id为home时,这两个路由同时生效,但第一个在前面,所以优先级更高

设置内容类型

  GET /index.xml Application.index(format:‘xml’)
 其他类型同理

控制器Controller

创建

 命名:模型名+s,如Users,继承 Controller

检索Http参数
  1. 使用params String id = params.get(“id”)
  2. 直接从方法中取
    /clients?id=1
    public static void show(String id)
    public static void show(Long id)

    这两个都可以取到值,play会尝试类型转换
  3. 可以使用 @As 注释来指定日期格式
    fun(@As(“dd/MM/yyyy”) Date from)
  4. 上传文件
public static void create(String comment, File attachment) {
    String s3Key = S3.post(attachment);
    Document doc = new Document(comment, s3Key);
    doc.save();
    show(doc.id);
}
  1. POJO 对象绑定
    方法使用pojo对象来接收 **fun(User user) **
    页面的传参为 user.sex, user.age
结果类型
  • render(…) 方法发出一个 Result 对象并停止方法的执行
  • renderText(…) 将结果直接显示在页面上
  • renderJSON(…) 返回JSON字符串
  • renderXml(…) 返回Xml字符串
  • renderBinary(…) 返回二进制内容,例如生成验证码,下载文件
  • 重定向 redirect(…)
拦截
  • @Before 在该 Controller 方法执行之前,执行带有 @Before 注解的方法
  • @Before(unless=“login”) 表示 login 方法不拦截
  • @Before(only={“login”,“logout”}) 表示只拦截 login 和 logout
  • @After 表示在 Controller 每次调用之后执行
  • @Catch 表示发生异常时执行,可以有多个,然后用 value 属性来指定不同异常时的处理
  • @Finally 表示每次调用后都会执行,无论成功与否
  • 在Controller上添加 @With(xx.class) 来集成xx的拦截规则
会话和Flash作用域
  • session

参考官方文档 https://www.playframework.com/documentation/1.4.x/home

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值