简单易懂的现代魔法——Play Framework攻略2

接前文:http://www.cnblogs.com/Kassadin/p/4335908.html

上次讲到Play Framework开发环境的配置,以及第一个Hello World程序;本次主要介绍Play Framework的几个核心概念。

1. Web应用程序的请求响应模型


每一个web开发者对于HTTP request和HTTP response都可以说是耳熟能详。实际上他们对应了Web开发的基本模型:请求-响应模型。请求响应模型的过程如下:

(1)Web浏览器通过HTTP协议向服务器端发送request请求

(2)Web服务器接收并解析HTTP request请求

(3)Web服务器将请求分发给相应的逻辑处理程序进行处理

(4)Web服务器将处理结果形成HTML格式的响应体

(5)Web服务器通过HTTP协议向浏览器端发送response响应

(6)Web浏览器显示HTML响应体

请求响应模型本质上讲是HTTP协议在Web开发中的应用,由于本文的重点不是这里,如需详细学习该模型,请查阅HTTP协议相关书籍和文档。

2. MVC模式


为什么要提到请求-响应模型呢,因为它是大名鼎鼎的MVC模式的基础。什么是MVC设计模式?

M-Model,模型;V-Views,视图;C-Controller,控制器;MVC模式也就是模型-视图-控制器模式;许多著名框架如SSH,Ruby on Rails本质上讲都是基于MVC设计模式的产物。同样的,MVC模式也是Play framework的核心。MVC设计模式之所以取得成功,是因为它和HTTP协议的请求-响应模型具有一致性。

(1)Controller,控制器

负责解析HTTP request并分发处理HTTP请求,控制器实现了对Web服务器程序流程的控制,它决定了由哪个模块处理HTTP请求,将请求分发给哪个View显示,请求哪一个Model以获取数据。它是MVC中业务逻辑的核心。

(2)View,视图

负责Web应用的显示逻辑,它主要定义了Web的展现层。

(3)Model,模型

负责Web应用的数据模型,与低层数据库进行映射,它主要定义了数据逻辑。

MVC设计模式实现了业务逻辑和显示逻辑的分离,进而实现了Web应用的高内聚性和低耦合性,因而取得了空前的成功。

3. Play Framework基本结构(实例研究)


本部分我将通过实际编写程序来展示Play Framework的几个核心概念。

【1】Java or Scala?

Play 2.0框架库已经由Scala编写,采用Scala编写Web应用相比于Java更加简洁现代,与框架的吻合度也更好,因此本系列尽量采用基于Scala的模版进行讲解;当然了,框架的思想与语言无关,其实无论是Java还是Scala可以说都大同小异(针对Play框架来说的,不是说的语言本身),因此,本系列以后可能会附带介绍Scala的相关内容。

【2】新建项目

【3】项目结构

输入cd hello进入项目

项目结构如上图1所示,主要包括了5个主要的文件夹;其中最重要的是app文件夹和conf文件夹。app文件夹主要存放项目代码,conf文件夹主要存放项目配置文件,public文件夹存放项目公有资源,test文件夹存放测试代码。

至于其他文件,现在还用不到,等到之后再慢慢研究好了。

现在对我们最为重要的是app文件夹和conf文件。上图2展示了app文件夹和conf文件夹的内部结构。在app文件夹中包含控制器和视图两个子文件夹,这和之前的MVC模式相对应,而conf文件夹下的routes文件是非常重要的配置文件,直接决定了http request的处理方式。

【4】routes

routes文件的每一行由3部分组成:

(1)第一部分,定义了HTTP请求的类型,如GET,POST等

(2)第二部分,相对路径

(3)第三部分,对应的处理方法(Action)

举个例子,当浏览器以GET方式请求URL:http://localhost:9000/ 时,其请求方式为GET,相对路径为:/,那么此时就应该将请求转交给controllers.Application.index方法处理。因此,我们来看一下index方法。

【5】app/controllers/Application.scala

该程序是控制器的核心程序,在scala中定义了一个单例对象Application类,该单例对象包含一个index方法,该方法调用Action函数,Action函数的功能是:执行函数体,并将函数体相应数据作为response头和response体返回给浏览器。

[1]Ok. 返回值信息

如图所示,OK相当于response code = 200,作为response头返回给浏览器

[2]views.html.index("Your new application is ready.”)

将字符串作为参数传递给views.html.index视图模版,视图模版解析参数以后,生成HTML代码,作为response体返回给浏览器

【6】app/views/index.scala.html

视图文件,由HTML+参数组成,解析相关参数可变为纯静态HTML文件。

现将原视图文件修改如下:

@(message: String)
<html>
    <head>hello Play</head>
    <body>
        <h1>@message</h1>
    </body>
</html>

【7】打开服务器进行测试

输入activator run打开服务器

浏览器输入http://localhost:9000/,我们得到了预期结果。

4.后记


本次我们主要研究了Play Framework的基本结构和几个重要文件的作用,分析了Play Framework的工作过程。

下次我们的主要任务是实现有参数的请求与REST架构的讨论。

敬请期待:Play Framework之3: REST架构与Restful Web Service.

时间: 2024-10-07 13:28:12

简单易懂的现代魔法——Play Framework攻略2的相关文章

简单易懂的现代魔法——Play Framework攻略4

接前文:简单易懂的现代魔法——Play Framework攻略3 1. The Object 时隔2个多月,Play Framework系列又更新了,本次的主题是:利用Play Framework实现Rest风格的Web Service. [1]利用Play!实现Rest风格的Web服务,该Web服务的功能是登录验证. [2]在客户端调用该Web服务,判断Web服务是否可用.(测试) 2. Web Service 什么是Web Service!这又是一个很复杂的问题,这里我就不拿学术论文来探讨这

简单易懂的现代魔法&mdash;&mdash;Play Framework攻略1

哇哈哈,寒假结束啦,于是我又开新坑了....这次的主角可是大名鼎鼎的Play Framework!!那么闲话少说,开始攻略吧! 1.什么是Play Framework? 大名鼎鼎的play framework究竟是什么呢!? 当然是一个框架了(废话!),官方的定义请自行查阅官网:https://www.playframework.com/ 个人的理解是,play framework是一个基于scala的轻量级web开发框架.Play framework本身是采用scala编写的,在设计过程中深受

php连接微软MSSQL(sql server)完全攻略

http://www.jb51.net/article/98364.htm php连接微软MSSQL(sql server)完全攻略 作者:吵吵 字体:[增加 减小] 类型:转载 时间:2016-11-27我要评论 在研究ezSQL的时候就看到了mssql_connect()等一些php提供的连接MSSQL的函数,本以为php这个开源的风靡世界的编程语言对连接微软的数据应该是不在话下的,但是到真正执行的时候,才发现困难多多 在研究ezSQL的时候就看到了mssql_connect()等一些php

【2015/7/22】SqlServer卸载重装全攻略!

请大家大声地告诉我,哪个软件最恶心.装了之后跟在电脑里面糊了一层泥,甩都甩不干净.之前手贱,重装系统后装了sqlserver2014的试用版.可惜过了半年试用期就到了.然后重装2012,2014卸载得不干净.一直装不了.恶心!一般人是搞不定的.. 我不是一般人.. 预备工作,去控制面板里面的程序和功能里面看自己安装的sqlserver 后面的日期是多少,记下来,这很重要. 首先卸载sqlserver,如何卸载呢?分步走: 1.去下载一个srvinstw软件,这个软件可以移除服务.用管理员身份运行

iOS 使用Charts框架 折线,柱状,K线,饼状,雷达全攻略

我是前言: 大约几个月前我在某平台写了一篇文章, 文中简单地介绍了Charts两种图表的样式的使用, 不过有种意犹未尽的感觉, 利用周末的空闲时间再次看了看, 有了新的收获, 今天发出来,分享给大家, 来稍加详细的再次走进Charts的世界. 完全纯代码. 经过测试: 1.1使用cocoa pods集成(只能在9.3之后运行), 有知道原因的请在下方评论 1.2 这篇文章的例子我是使用手动加入的framework进行测试的. 如果你不清楚如何加入三方框架请点击看看这篇文章http://www.j

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 01 About Swift

import Foundation /* Listo Han 出品 Swift 编程攻略 攻略参考:<The Swift Programming Language> 攻略适用:本攻略适合 Swift零基础,但要有至少其他任何一门编程语言基础,熟悉程序语句的用户 攻略格式: 知识模块://***********************************************************************************************/ 模块细节://_

Moon.Orm3.8技术全攻略

Moon.ORM技术全攻略  一.绪论 本文主要是针对Moon.ORM的技术的讨论及其使用使用指导.如有其它疑问,请留言.本文主要针对Moon.ORM3.9版本,同时将会对4.0做一个技术预览.本文从实际出发解析Moon.ORM.(技术群:21696534)  二.Moon.ORM的特色及优势 ----但凡众多的智慧都是及其简单的,但不为人所知.这也是Moon.ORM的主要特色:大道至简. 1.高性能是Moon.ORM优势之一,也是我架构它的主要目的之一,如以前我说的那样,是为了弥补项目中遇到的

《终极空想13雷霆归来》全主线支线收集图文攻略

<最终理想13雷霆归来>全主线支线收集图文攻略 最终幻想13:雷霆归来专区 之前的<***13雷霆归来>攻略可能都是日文的,不方便浏览,下面为大家带来<最终空想13雷霆归来>完美全剧情图文攻略,包含全主线.支线及画布饰品收集图文攻略,针对PC中文版,便利懂得,一起来看看吧. 额定提示:开启STEAM云得以让游戏运行前言1.一周目倡议选择EASY难度,刷起来清新舒服,强力技能提前备足低等级的,方便合成低耗高阶技能. 2.游戏内各种主要名词以及主线.支线.祈祷画布.怪物名.

Linux下Hadoop 2.2.0 集群配置攻略

Hadoop 2.2.0 集群配置攻略 用户输入标识: chmod +x jdk-7u45-linux-x64.rpm  为黑色带底纹 系统输出标识: java version "1.7.0_51" 为绿色小字 2014年3月20-日 by lilihao Q 404536204 1. 安装sun jdk (1). 到Oracle的官方网站下载jdk,目前最新版本是7u51 安装包: http://www.oracle.com/technetwork/java/javase/downl