(三)play之快速演示篇


运行play

E:\technology-hqh\proj\play-framework>play

创建新项目

E:\technology-hqh\proj\play-framework>play new tasks

~ What is the application name? [tasks] Tasks 

启动play

E:\technology-hqh\proj\play-framework>play run tasks

转换为eclipse工程项目

E:\technology-hqh\proj\play-framework>play eclipsify tasks

 

引入到Eclipse中,开始开发

=============================================================================

示例一

修改tasks\app\views\Application\index.html

删除#{welcome /},改为"Hello World"

Html代码   收藏代码
  1. #{extends 'main.html' /}  
  2. #{set title:'Home' /}  
  3.   
  4. Hello World  

 刷新页面

 


============================================================================= 

示例二、

修改tasks\app\controllers\Application.java

Java代码   收藏代码
  1. package controllers;  
  2.   
  3. import play.*;  
  4. import play.mvc.*;  
  5.   
  6. import java.util.*;  
  7.   
  8. import models.*;  
  9.   
  10. public class Application extends Controller {  
  11.   
  12.     public static void index() {  
  13.         String name = "play! frame work";  
  14.         render(name);  
  15.     }  
  16.   
  17. }  

 

 修改tasks\app\views\Application\index.html

Html代码   收藏代码
  1. #{extends 'main.html' /}  
  2. #{set title:'Home' /}  
  3.   
  4. Hello ${name}  

 刷新页面



 

 =============================================================================

示例三、

创建model

Java代码   收藏代码
  1. package models;  
  2.   
  3. import javax.persistence.Entity;  
  4.   
  5. import play.db.jpa.Model;  
  6.   
  7. @Entity  
  8. public class Task extends Model {  
  9.     public String title;  
  10.     public boolean done;  
  11.       
  12.     public Task(String title) {  
  13.         this.title = title;  
  14.     }  
  15.       
  16.       
  17. }  

 修改tasks\app\views\Application\index.html

Html代码   收藏代码
  1. #{extends 'main.html' /}  
  2. #{set title:'Home' /}  
  3.   
  4. #{ifnot tasks}  
  5.     <p>  
  6.         No tasks.  
  7.     </p>  
  8. #{/ifnot}  
  9.   
  10. <ul>  
  11.     #{list items:tasks,as:'task'}  
  12.         <li>  
  13.             <input type="checkbox" id="${task.id}" ${task.done ? 'checked' : ''}>  
  14.             ${task.title}         
  15.         </li>  
  16.     #{/list}  
  17. </ul>  

 设置database

Html代码   收藏代码
  1. # Database configuration  
  2. # ~~~~~   
  3. # Enable a database engine if needed.  
  4. #  
  5. # To quickly set up a development database, use either:  
  6. #   - mem : for a transient in memory database (H2 in memory)  
  7. #   - fs  : for a simple file written database (H2 file stored)  
  8. db=mem  

 

刷新页面


 使用jQuery创建task

Html代码   收藏代码
  1. #{extends 'main.html' /}  
  2. #{set title:'Home' /}  
  3.   
  4. #{ifnot tasks}  
  5.     <p>  
  6.         No tasks.  
  7.     </p>  
  8. #{/ifnot}  
  9.   
  10. <ul>  
  11.     #{list items:tasks,as:'task'}  
  12.         <li>  
  13.             <input type="checkbox" id="${task.id}" ${task.done ? 'checked' : ''}>  
  14.             ${task.title}         
  15.         </li>  
  16.     #{/list}  
  17. </ul>  
  18.   
  19.   
  20. <p>  
  21.     <a id="createTask" href="#">Create a new task</a>  
  22. </p>  
  23.   
  24. <script type="text/javascript" charset="utf-8">  
  25.  //Create a task  
  26.  $("#createTask").click(function(){  
  27.     $.post("@{createTask()}", {title: prompt("Task title ?")});  
  28.  });  
  29. </script>  

 刷新页面



 创建action

 

Java代码   收藏代码
  1. package controllers;  
  2.   
  3. import play.*;  
  4. import play.mvc.*;  
  5.   
  6. import java.util.*;  
  7.   
  8. import models.*;  
  9.   
  10. public class Application extends Controller {  
  11.   
  12.     public static void index() {  
  13.         List tasks = Task.find("order by id desc").fetch();  
  14.         render(tasks);  
  15.     }  
  16.       
  17.     //创建新的任务  
  18.     public static void createTask(String title) {  
  19.         Task task = new Task(title).save();  
  20.         renderJSON(task);  
  21.     }  
  22.   
  23. }  

 刷新页面,点击链接创建任务



 刷新页面



 进一步优化,使用jQuery的callback回调功能,在添加task后自动显示添加的内容

Html代码   收藏代码
  1. <script type="text/javascript" charset="utf-8">  
  2.     //Create a task  
  3.     $("#createTask").click(function(){  
  4.         $.post("@{createTask()}", {title: prompt("Task title ?")}, function(task){  
  5.             $("ul").prepend(  
  6.                 '<li><input type="checkbox" id="'+task.id+'"/>'+task.title+'</li>'  
  7.             );  
  8.         },"json");  
  9.     });  
  10. </script>  

 

不用刷新页面即可显示新的内容

 

点击任务就实现与数据库的同步更新操作

继续使用jQuery开发

Html代码   收藏代码
  1. <script type="text/javascript" charset="utf-8">  
  2.     //Create a task  
  3.     $("#createTask").click(function(){  
  4.         $.post("@{createTask()}", {title: prompt("Task title ?")}, function(task){  
  5.             $("ul").prepend(  
  6.                 '<li><input type="checkbox" id="'+task.id+'"/>'+task.title+'</li>'  
  7.             );  
  8.         },"json");  
  9.     });  
  10.       
  11.     //Change status  
  12.     $(":checkbox").live("click",function(){  
  13.         $.post("@{changeStatus()}", {id: $(this).attr("id"), done: $(this).val()})  
  14.     })  
  15. </script>  

 Controller中增加新的action:changeStatus()

Java代码   收藏代码
  1. package controllers;  
  2.   
  3. import play.*;  
  4. import play.mvc.*;  
  5.   
  6. import java.util.*;  
  7.   
  8. import models.*;  
  9.   
  10. public class Application extends Controller {  
  11.   
  12.     public static void index() {  
  13.         List tasks = Task.find("order by id desc").fetch();  
  14.         render(tasks);  
  15.     }  
  16.       
  17.     //创建新的任务  
  18.     public static void createTask(String title) {  
  19.         Task task = new Task(title).save();  
  20.         renderJSON(task);  
  21.     }  
  22.       
  23.    //页面点击checkbox框的动作,触发一个ajax请求  
  24.    public static void changeStatus(Long id, boolean done) {  
  25.        Task task = Task.findById(id);  
  26.        task.done = done;  
  27.        //后台更新数据库   
  28.        task.save();  
  29.        //以json数据格式返回新对象  
  30.        renderJSON(task);  
  31.    }  
  32. }  

 

=================================================================================

示例四、

允许CRUD模块

修改tasks\conf\dependencies.yml

为了能使用CRUD模块,需要在/conf/dependencies.yml文件的require后添加一行代码

Html代码   收藏代码
  1. # Application dependencies  
  2.   
  3. require:  
  4.     - play -> crud  

       接下来,在cmd命令行中切换到项目根目录下

E:\technology-hqh\proj\play-framework\tasks>play dependencies

重新构建eclipse项目,以便eclipse能够将新的模块导入到workspace中

E:\technology-hqh\proj\play-framework\tasks>play eclipsify

刷新eclipse工程中的项目

最后,修改tasks\conf\routes,增加路由

Html代码   收藏代码
  1. GET     /admin          Tasks.list  

 

编写CRUD的子类,目的在于继承CRUD中的众多方法,比如list()

Java代码   收藏代码
  1. package controllers;  
  2.   
  3. public class Tasks extends CRUD {  
  4.   
  5. }  

 访问http://localhost:9000/admin,将自动导航至Task对象的编辑页面



 

在Task中添加toString(),则可以定制页面显示Task对象的方式

Java代码   收藏代码
  1. package models;  
  2.   
  3. import javax.persistence.Entity;  
  4.   
  5. import play.db.jpa.Model;  
  6.   
  7. @Entity  
  8. public class Task extends Model {  
  9.     public String title;  
  10.     public boolean done;  
  11.       
  12.     public Task(String title) {  
  13.         this.title = title;  
  14.     }  
  15.   
  16.     @Override  
  17.     public String toString() {  
  18.         return title;  
  19.     }  
  20.           
  21. }  

 刷新页面

将按title显示Task对象



 

点击一个task进入编辑页面,可以对其进行更新操作



 

更新task对象



 

点击save,自动保存并返回首页



 

使用validation对更新时的数据进行校验

修改Task对象,使用@Required对属性进行标注

Java代码   收藏代码
  1. package models;  
  2.   
  3. import javax.persistence.Entity;  
  4. import play.data.validation.Required;  
  5. import play.db.jpa.Model;  
  6.   
  7. @Entity  
  8. public class Task extends Model {  
  9.       
  10.     //title不能为空  
  11.     @Required  
  12.     public String title;  
  13.     public boolean done;  
  14.       
  15.     public Task(String title) {  
  16.         this.title = title;  
  17.     }  
  18.   
  19.     @Override  
  20.     public String toString() {  
  21.         return title;  
  22.     }  
  23.           
  24. }  

 再次编辑Task 1 对象,删除title,点击save会以红色字体显示Required

填入title,则正常保存!

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值