Play框架(二) 响应

我上一章总结了Play框架的基本使用。这一章里,我将修改和增加响应。

HTTP协议是按照“请求-响应”的方式工作。Play框架的核心是用动作(Action)来完成“请求-响应”。一个动作负责处理一种请求。一个项目可能要定义许多动作。复杂的网站,可能要定义上百个动作。所以,Play使用控制器(Controller)和URL路由(URL routing)来组织管理动作。控制器用于给动作分类。URL路由(routes)记录了URL和动作的对应关系。

IDE

在开发代码之前,先简单介绍如何使用Eclipse,开发Play项目。

在项目的根目录下,使用命令:

play eclipse

成功后,打开Eclipse,在File->Import中,选择General->Existing Projects into Workspace。在Select root directory中,选择项目的根目录。随后,项目被引入Eclipse。

Java是静态语言,可以在编译时就决定对象的类型,因此能方便的实现代码自动提示补齐、自动寻找类所在的包并import。在写程序的过程中,也能有很多友好提示。

后面的代码中,如果没有写明import的包,可以在Eclipse环境下自动寻找。

理解响应

我先来介绍控制器和URL路由。我以Play默认生成的动作为例讲解。你可以在Play项目中找到下面文件。

一个请求进入服务器后,由URL路由引导到正确的动作来处理。URL路由根据请求的方法和URL来识别这一请求,再寻找对应动作。

URL路由是一个文件,即项目根目录下的conf/routes。文件的每一行是一条记录,规定了某个URL的对应动作。比如:

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

#开始的行是注释

记录分为三个部分。第一部分为请求的方法,第二个部分为请求的URL,第三个是请求的对应动作。这里Application是一个控制器,位于app/controllers/Application.java中。一个控制器也是一个Java类。而动作index()是类的一个方法。

我对默认生成的Application.java略作修改。新的app/controllers/Application.java为:

package controllers;   

import play.*;
import play.mvc.*;   

import views.html.*;   

public class Application extends Controller {   

    public static Result index() {
        return ok("Hello World!");
    }   

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索寻找源代码
, 控制器
, 路由
, application
, 项目
, play
, app框架java
, 动作
, 一个
动作控制器
play框架、响应式框架、响应式布局框架、前端响应式框架、google play框架,以便于您获取更多的相关知识。

时间: 2025-01-01 08:45:45

Play框架(二) 响应的相关文章

来玩Play框架02 响应

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!    我上一章总结了Play框架的基本使用.这一章里,我将修改和增加响应. HTTP协议是按照"请求-响应"的方式工作.Play框架的核心是用动作(Action)来完成"请求-响应".一个动作负责处理一种请求.一个项目可能要定义许多动作.复杂的网站,可能要定义上百个动作.所以,Play使用控制器(Controller)和URL路由(URL routi

Android Http请求框架二:xUtils 框架网络请求

一:对Http不了解的请看 Android Http请求框架一:Get 和 Post 请求   二.正文 1.xUtils 下载地址     github 下载地址  : https://github.com/wyouflf/xUtils   2.关于网络请求的方法 package com.jike.shanglv.NetAndJson; import java.io.File; import com.lidroid.xutils.HttpUtils; import com.lidroid.xu

构建插件式的应用程序框架(二)-订立契约

无论是用COM的方式,还是普通DLL,抑或.NET方式来实现插件框架,首先要面临的问题就是如何订立契约.如同我上一篇文章讲到的一样,契约是应用程序和插件之间进行交互的依据和凭证.应用程序必须声明我有什么样的功能可被插件使用,并且插件必须符合什么条件才能被我使用.反之,插件必须要知道应用程序提供什么样的功能,我才能将自己的功能融入到应用程序的体系中.本系列文章主要讲如何使用.NET实现插件式的应用程序框架,所以其它的方式我就不再提了. 如何使用.NET订立契约呢?首先想到的Interface,其次

CS 系统框架二[右下角提示信息以及用户自由申请帐号功能]

园子里面有位朋友对我这个小框架提出了一些建议,我觉得很适用(不管是圆友还是用户给我提出的意见,我都认真考虑了,该采纳的都采纳了,我相信这样一来我这个程序应该会更完整,在此感谢大家的指点),有两点建议我比较认同,第一点就是在用户没有登录ID的情况下可以自由申请帐号,然后等待管理员审核之后方可生效,这种功能还是比较人性化的,不是说你没有登录ID就完全没办法操作这个系统,至少可以申请一个登录ID,至于什么时候可以得到审核,那是另外一件事情了,我相信这样一来对用户的体验一定会好很多,所以我将这个功能完善

CS 系统框架二

自己一直想有一个完全属于自己的编程小框架,之前使用的方式是将每一个窗体文件都编译为一个DLL文件,在新建窗体的时候首先新建一个类,然后在这个类里面新建窗体,编译之后就是一个DLL文件,最后通过一个函数去读取这个DLL文件里面的信息,包括窗体名称,版本等,最后将设个窗体Show出来,Show出来的时候是使用的WeifenLuo.WinFormsUI.Docking.看上去貌似没什么问题,但是每次New一个窗体的时候就要New一个对应的类,那么有几百个窗体呢?那项目将会大的惊人,所以放弃了这种做法,

CS 系统框架二[增加默认启动以及代码打开窗体]

前几天有几个朋友要了我的框架源码,这几天也经常通过远程以及电话来帮他解决一些问题,后来他说马上要交项目了,但是有一个问题还没有搞出来,那就是在原有的框架里面如何设置一个窗体自动启动?本身我的框架是登录进去之后所有的菜单都是根据后台的权限进行分配,加载进来之后绑定在工具箱里面,当用户点击菜单之后才会加载窗体,看他现在的意思是想登录进去之后默认启动一个窗体,这个简单,因为加载窗体的动作是写的一个方法来调用的,那么只需要在Load里面调用一下就行了, 1 private void FrmMain_Lo

自己动手写ASP.NET ORM框架(二):AdoHelper支持多数据库操作的封装(2)

在上一篇文章中已经分析了AdoHelper的部分代码,接下来将继续分析剩余的部分代码,这里分析ExecuteNonQuery方法的实现,代码块1-1: // <summary>//通过提供的参数,执行无结果集的数据库操作命令// 并返回执行数据库操作所影响的行数.// </summary>// <param name="connectionString">数据库连接字符串</param>// <param name="co

用PHP制作静态网站的模板框架(二)

PHP代码全部保存到单独的文件中,这个文件也就是由页面URL实际调用的文件.Web服务器通过PHP引擎解析该文件,然后把结果返回给浏览器.一般地,PHP代码总是动态地生成页面内容,比如查询数据库或者执行某种计算等.下面是一个例子: <?php // example.php require('class.FastTemplate.php'); $tpl = new FastTemplate('.'); $tpl->define( array( 'main' => 'main.htm', '

CS系统框架二(数据库配置)

  在数据库配置方面暂时采用了将信息写入App.Config里面,大致分为Sql Server,Oracle,Access,MySql等,如果用户登录的时候系统发现连不上数据库那么就提示用户对数据库进行配置一下,但是总觉得将连接信息写入App.Config里面有点不安全,那个App.Config文件就在程序的安装目录里面,别人找到了还不是照样可以获取数据库密码么,不知道是否还有其他好点的办法,如果有朋友对这个问题比较有见解的话麻烦支个招,QQQ.    

CS 系统框架二[简单记录系统日志]

园子里面有几位朋友跟我说最好可以记录一些相关的日志,以便据此查找一些其它的信息或者是DeBug,我简单的处理了一下, 这里用到了一个枚举: 需要用的时候就传一个标志进来就行了,记录日志的函数就不说了,说白了就是记录一些数据,后台调用如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Allen.Tools.Common 7 {