zoukankan      html  css  js  c++  java
  • 你可以使用 play framework 做5件很爽的事情http://www.anool.net/?p=629

    1.绑定HTTP参数到JAVA方法里的参数。

    使用PLAY可以很简单的从JAVA代码中检索HTTP参数。只要把方法参数申明成和HTTP参数相同既可。

    比如,这个request:

    Http代码
    1. /articles/archive?date=08/01/08&page=2  

    只要把date,page声明成JAVA方法的参数,你就可以检索它们:

    Java代码
    1. public static void archive(Date date, Integer page) {   
    2.     List<Article> articles = Articles.fromArchive(date, page);   
    3.     render(articles);   
    4. }  

    PLAY将使用该方法的参数的静态类型,来把HTTP值翻译成JAVA对象。

    智能绑定对任何的类都有效。

    Java代码
    1. public class Person {   
    2.     public String name;   
    3.     public Integer age;   
    4. }  

    一个简单的控制器,比如向Person添加一个实例可能会像这样:

    Java代码
    1. public static void add(Person p) {   
    2.     p.save();   
    3. }  

    HTML表单名称定义的字段:

    Html代码
    1. <form action="/Directory/add" method="POST">  
    2.     Name: <input type="text" name="p.name" />  
    3.     Age: <input type="text" name="p.age" />  
    4. </form>  

    2.重定向到一个action调用相应的Java方法。

    Play框架的forward并不等同Servlet中的forward,它有自己的forward,并且重定向到另一个ACTION非常的简单。只需要调用相应

    的JAVA方法,PLAY框架就会生成正确的HTTP “Redirect” response。

    Java代码
    1. public static void show(Long id) {   
    2.     Article article = Article.findById(id);   
    3.     render(article);   
    4. }   
    5.     
    6. public static void edit(Long id, String title) {   
    7.     Article article = Article.findById(id);   
    8.     article.title = title;   
    9.     article.save();   
    10.     show(id);   
    11. }  

    注意:在 edit action 结束时,我们如何重定向到 show action。

    在任何模板中,你可以使用类似这样的方法来生成连接。

    Html代码
    1. <a href="@{Article.show(article.id)}">${article.title}</a>  
    2. That will generate the following HTML:   
    3.   
    4. <a href="/articles/15">My new article</a>  

    3.当传递JAVA对象到模板时,你不需要重复去做类似以下的事情。

    在许多框架中,为了传递JAVA对象到模板中,你需要写如下的代码:

    Java代码
    1. Article article = Article.findById(id);   
    2. User user = User.getConnected();   
    3. Map<String, Object> model = new HashMap<String,Object>();   
    4. model.put("article", article);   
    5. model.put("user", user);   
    6. render(model);  

    但在PLAY框架中,你只需要这样写就搞定了:

    Java代码
    1. Article article = Article.findById(id);   
    2. User user = User.getConnected();   
    3. render(article, user);  

    在模板中JAVA本地名字中检索对象,这样可以少写不少代码。

    4. 更高效的JPA

    在PLAY框架中使用JPA是非常简单的,无需要任何配置,当代码加载时,PLAY框架会使用HIBERNATE自动开启JPA Entity Manager并且神奇的使它同步。

    此外,如果你使用play.db.jpa.Model超类,将有助于使你的代码更漂亮。如下:

    Java代码
    1. public void messages(int page) {   
    2.     User connectedUser = User.find("byEmail", connected());   
    3.     List<Message> messages = Message.find(   
    4.         "user = ? and read = false order by date desc",   
    5.         connectedUser   
    6.     ).from(page * 10).fetch(10);   
    7.     render(connectedUser, messages);   
    8. }  

    5. 简单的文件上传管理

    文件上传管理在PLAY框架中非常简单。

    下面这个HTML form:

    Html代码
    1. <form action="@{Article.uploadPhoto()}" method="POST" enctype="multipart/form-data">  
    2.     <input type="text" name="title" />  
    3.     <input type="file" id="photo" name="photo" />  
    4.     <input type="submit" value="Send it..." />  
    5. </form>  

    对应的JAVA方法:

    Java代码
    1. public static void uploadPhoto(String title, File photo) {   
    2.    ...   
    3. }  

    还能更简单么?

    via:http://blog.sina.com.cn/s/blog_60fcb5a10100gt1w.html

    playframework获取当前会话的所有session,获取请求的所有参数

    2014年01月15日 play 暂无评论
        //获取当前会话的所有session
              Map<String, String> sessions=session.current().all();
            for (Map.Entry<String, String> ses : sessions.entrySet()) {
                System.out.println("key:"+ses.getKey()+",value:"+ses.getValue());
            }
            //获取请求的所有参数
            Map<String, String[]> pms=params.all();
            for (Map.Entry<String, String[]> pm : pms.entrySet()) {
                System.out.println("key:"+pm.getKey()+",value:"+pm.getValue()[0]);

            }

  • 相关阅读:
    13.kubernetes之pv,pvc,configmap(带补充实例)
    1.docker 数据卷的备份和恢复(非大数据量)
    mysql基础 事务的认识和使用
    jdbc基础 (四) 批处理
    jdbc基础 (三) 大文本、二进制数据处理
    mysql使用基础 sql语句(一)
    linux下安装openssh-server
    jdbc基础 (二) 通过properties配置文件连接数据库
    jdbc基础 (一) MySQL的简单使用
    windows API 开发飞机订票系统 图形化界面 (四)
  • 原文地址:https://www.cnblogs.com/zhiji6/p/4444740.html
Copyright © 2011-2022 走看看