`

Play framework 2.0 -第一个应用程序

 
阅读更多

所有章节的翻译到此结束,实现一个小应用作为结束!

 

按照play2.0官网的例子编写第一个play Application : todolist

 

步骤如下(详细的步骤及解释请查看原文):

 

先编写控制器如下:

 


aplication.java

package controllers;

import play.*;
import play.data.*;
import play.mvc.*;
import models.*;
import views.html.*;

public class Application extends Controller {

  static Form<Task> taskForm = form(Task.class);

  public static Result index() {
    //return ok(index.render("Your new application is ready."));
	return redirect(routes.Application.tasks());
  }
  
  public static Result tasks() {
    return ok(
    		views.html.index.render(Task.all(), taskForm)
	);
  }
  
  public static Result newTask() {
	  Form<Task> filledForm = taskForm.bindFromRequest();
	  if(filledForm.hasErrors()) {
	    return badRequest(
	      views.html.index.render(Task.all(), filledForm)
	    );
	  } else {
	    Task.create(filledForm.get());
	    return redirect(routes.Application.tasks());  
	  }
  }
  
  public static Result deleteTask(Long id) {
	  Task.delete(id);
	  return redirect(routes.Application.tasks());
  }
}
 

修改routes:

 


# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
GET     /                           controllers.Application.index()

# Tasks          
GET     /tasks                  controllers.Application.tasks()
POST    /tasks                  controllers.Application.newTask()
POST    /tasks/:id/delete       controllers.Application.deleteTask(id: Long)

# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)
 

编写一个model(用到了Ebean,需要在application.conf中配置):

 

Task.java
package models;

import java.util.*;

import play.db.ebean.*;
import play.data.validation.Constraints.*;

import javax.persistence.*;

@Entity
public class Task extends Model{
  
  @Id
  public Long id;
  
  @Required
  public String label;
  
  public static Finder<Long,Task> find = new Finder(
		    Long.class, Task.class
	);
  
  public static List<Task> all() {
	  return find.all();
	}

	public static void create(Task task) {
	  task.save();
	}

	public static void delete(Long id) {
	  find.ref(id).delete();
	}
    
}
 

 

编写views:

 

main.scala.html
@(title: String)(content: Html)

<!DOCTYPE html>

<html>
    <head>
        <title>@title</title>
        <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
        <script src="@routes.Assets.at("javascripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
    </head>
    <body>
        @content
    </body>
</html>
 

 

index.scala.html

 


@(tasks: List[Task], taskForm: Form[Task])

@import helper._

@main("Todo list") {
    
    <h1>@tasks.size() task(s)</h1>
    
    <ul>
        @for(task <- tasks) {
            <li>
                @task.label
                
                @form(routes.Application.deleteTask(task.id)) {
                    <input type="submit" value="Delete">
                }
            </li>
        }
    </ul>
    
    <h2>Add a new task</h2>
    
    @form(routes.Application.newTask()) {
        
        @inputText(taskForm("label")) 
        
        <input type="submit" value="Create">
        
    }
    
}

 

最后改一下配置:

 


# This is the main configuration file for the application.
# ~~~~~

# Secret key
# ~~~~~
# The secret key is used to secure cryptographics functions.
# If you deploy your application to several instances be sure to use the same key!
application.secret="@8DeN:VCjdHS7g2Y=L0et:x/e8DseMHvPLvEnYqRy@R[o2V[f547@wyV/o^K@56i"

# The application languages
# ~~~~~ 中文
application.langs="zh"

# Global object class
# ~~~~~
# Define the Global object class for this application.
# Default to Global in the root package.
# global=Global

# Database configuration
# ~~~~~ 
# You can declare as many datasources as you want.
# By convention, the default datasource is named `default`
#使用h2
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
# db.default.user=sa
# db.default.password=
#
# You can expose this datasource via JNDI if needed (Useful for JPA)
# db.default.jndiName=DefaultDS

# Evolutions
# ~~~~~
# You can disable evolutions if needed
# evolutionplugin=disabled

# Ebean configuration
# ~~~~~
# You can declare as many Ebean servers as you want.
# By convention, the default server is named `default`
# 使用Ebean
ebean.default="models.*"

# Logger
# ~~~~~
# You can also configure logback (http://logback.qos.ch/), by providing a logger.xml file in the conf directory .

# Root logger:
logger.root=ERROR

# Logger used by the framework:
logger.play=INFO

# Logger provided to your application:
logger.application=DEBUG
 

 

现在play run一下就可以看到效果了!

 

附件是程序源代码。

3
0
分享到:
评论

相关推荐

    Play framework 2.0入门教程(三)的源代码,Play留言板

    Play Framework 2.0 是一个基于Java和Scala的开源Web应用程序框架,以其“写后即运行”的特性而闻名。这个入门教程的第三部分是关于如何使用Play Framework构建一个简单的留言板应用。在这里,我们将深入探讨Play ...

    play2.0 for java developers.pdf

    ##### 第一个应用 - **HTTP编程** - 介绍了如何创建简单的控制器和动作。 - 展示了如何处理HTTP请求并返回结果。 通过以上介绍,我们可以看到Play2.0框架提供了丰富的功能和工具,非常适合构建现代化的Web应用...

    Play-2.0-Scala-MongoDb-Salat-exemple:这是一个来自官方网站的小型待办事项应用程序,但支持 mongodb 而不是 anorm

    更新播放 2.4.0添加测试规范Playframework 2.2.1 (Scala) 和 MongoDb (Salat) 的第一步使用 MongoDb 而不是 Anorm 的待办事项应用程序我们将为 MongoDb 使用 Salat 库( )。 Play 2 有一个替代的“mongo-jackson-...

    Play-2.0-Java-MongoDb-Jackson-exemple:来自官方 Play 框架手册的一个小 todo 应用程序,但支持 mongodb

    Playframework 2.3.1 (Java) 和 MongoDb (Jackson) 的第一步 不要忘记启动mongodb守护进程! 它应该使用默认主机 (localhost) 和默认端口。 运行应用程序: sbt run 如果运行本教程有任何问题,请报告,谢谢!

    用于运行Java应用程序的Cloud Foundry构建包 仅供学习参考用代码.zip

    Cloud Foundry是一个开源的平台即服务(PaaS)系统,主要设计用于托管和运行各种类型的应用程序,包括Java应用程序。这个压缩包包含了用于在Cloud Foundry上部署和运行Java应用的相关资源,主要用于学习和参考。 ...

    struts2.0第一讲

    Struts2.0 是一款基于MVC(Model-View-Controller)设计模式的Java Web框架,用于构建可扩展和维护性高的企业级应用程序。它的出现是由于Struts 1的局限性和性能问题,因此在Struts2中引入了WebWork的核心设计理念,...

    struts2.0配置

    Struts2.0 是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,由Apache软件基金会维护。Struts2 提供了一种结构化的、灵活的方式来组织和控制应用程序的业务逻辑,使开发者可以更专注于业务...

    spring2.0 hibernate 3.0 struts1.1 xfire1.2 整合

    Spring MVC是Spring框架的一部分,用于构建Web应用程序的模型-视图-控制器架构。 Hibernate 3.0是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,允许开发者用Java对象来处理数据,而无需直接编写SQL语句...

    java-play-voice.rar_play

    自JavaFX 2.0引入以来,它提供了一个强大的媒体处理库,支持音频和视频播放。如果你的应用场景涉及到JavaFX,可以使用`javafx.scene.media.MediaPlayer`类。只需创建一个`Media`对象,指定声音文件的URL,然后创建...

    Play框架入门教程

    Play Framework是一个开源的Web应用框架,使用Scala和Java语言混合编写。Play遵循传统的MVC(Model-View-Controller: 模型、视图和控制器)模式,这一点Lift与其有所不同。 本文主要对Play Framework最新第二版...

    scalaz-core_2.9.3-7.1.0-RC2.zip

    总结来说,"scalaz-core_2.9.3-7.1.0-RC2.zip"和"play-twenty-three.zip"代表了Scala生态系统中的两个关键部分:一个强大的函数式编程库和一个基于Play Framework的JSON处理项目。理解并熟练运用这些工具,可以帮助...

    vb.net 播放器源码

    在VB.NET编程环境中,开发一个多媒体播放器是一个常见的任务,特别是在需要为应用程序添加音频和视频播放功能时。VB.NET 2005是.NET Framework 2.0的一部分,提供了丰富的库和工具,使得开发这样的播放器成为可能。...

    android合规检测相关

    - **权限管理**:Android系统采用权限模型来控制应用程序对资源的访问。开发者需要明确声明应用所需的权限,并在安装时向用户解释为何需要这些权限,遵守GDPR(欧洲通用数据保护条例)等法规。 - **隐私保护**:...

    C# LoadFLASH(图像操作)

    在C#编程环境中,LoadFlash通常指的是加载SWF文件,这是一种Adobe Flash的文件格式,用于创建交互式的动画、游戏和应用程序。尽管“LoadFlash”在C#中并不是一个内置的方法,但开发者可以通过第三方库或者使用.NET ...

Global site tag (gtag.js) - Google Analytics