Tiny快速入门之控制层开发

下面是一些常用的链接,供大家使用:

GIT地址(必须是OSC家的):https://git.oschina.net/tinyframework/tiny
问题报告:https://git.oschina.net/tinyframework/tiny/issues

官方网站:http://www.tinygroup.org

更多内容,请看本人博客。不一样的内容,一样的精彩!

前面讲了Tiny快速入门之服务开发Tiny快速入门之Web界面快速开发实践,也就是说开发服务和界面都没有问题了,很明显要做一个完整的系统还是不够的,因此肯定有控制层,才可以把整个过程打通。

控制层充当着界面和服务之间协作的角色。控制器从界面层接收用户输入的信息,然后调用服务来执行特定的处理,并把最终的结果回传给界面层进行渲染。

Tiny框架中控制层的写法可以有许多种:

  • 集成Struts或其它方案来完成
  • 按Tiny框架的要求代码来完成
  • 通过Tiny页面流来完成

集成Struts等方案,这里不再叙述,仅介绍通过Tiny框架来实现的方式:

一、通过代码编写控制层逻辑

1.代码示例

@Controller()
public class HelloAction implements WebContextAware{

	private WebContext webContext;

	public void setContext(WebContext webContext) {
		this.webContext = webContext;
	}

	@RequestMapping(value={"/helloByMvc.do"})
	@View(value="/helloworld/helloresult.page")
	public void sayHelloMethod(String name) {
		if (name == null) {
			name = "world";
		}
		webContext.getRequest().setAttribute("result", String.format("Hello, %s", name));
	}

}

解释

@Controller()表示这个类是个控制层的类。

implements 
WebContextAware表示,这个要类要注入Web
上下文对象。

@RequestMapping(value={"/helloByMvc.do"})表示响应/helloByMvc.do请求,注意,这个可以有多个值。

@View(value="/helloworld/helloresult.page")表示执行完毕之后转到/helloworld/helloresult.page页面进行渲染。
WebContext,也就是Web上下文,是Tiny Web框架中的一个重要类,用于在上面放置各种数据。
你可以把它理解成像Map一样的东西,可以不断的往里面塞东西,塞进去的,在展现层就是可见的。

当然,对于上面这么简单的类子,其实不用实现WebContextAware接口,这个时候的写法如下:

@Controller()
public class HelloAction {
       @ResultKey(value = "result")
 @RequestMapping(value={"/helloByMvc.do"})
 @View(value="/helloworld/helloresult.page")
 public String sayHelloMethod(String name) {
 if (name == null) {
 name = "world";
 }
 return String.format("Hello, %s", name);
 }
}

相对来说,比上面一种写法更简单,但是唯一的限制就是只能传回一个对象了。

@ResultKey(value= "users")
@RequestMapping(value={"/crud/service/tinydb/list.page"})
public List<Bean> queryUsers(@ServiceParameter(name = "TUser") Bean TUser)throws Exception  {
	Bean[] beans = operator.getBeans(TUser);
	if (beans != null) {
		return Arrays.asList(beans);
	}
	return null;
}

当然,入参也不一定必须是简单类型,对象也是允许的。

2.小结

通过注解方式,可以方便的在普通的Java类中定义控制层的处理逻辑,步骤:

  • 在类上增加@Controller注解
  • 在方法上增加@RequestMapping注解
  • 如果有返回值,可以通过注入WebContext对象来返回,也可以通过@ResultKey注解完成,但是@ResultKey只能把方法的返回值用指定Key放入上下文。

问题:如果控制层处理方法需要的是一个对象,如果办呢?

  • 如果符合Tiny框架之命名规范,所以有的一切由框架帮你自动搞定
  • 如果不符合Tiny框架之命名规范,请注入WebContext对象,自己进行组装

二、通过页面流编写控制层

1.控制层完成所有功能

当然,HelloWorld的功能太简单了,它甚至可以直接在控制层就完成了。

虽然这么做从计算机逻辑上来说是没有问题的,也会给出正确的结果,但是实际应用当中,这么做就是有问题的,因为业务逻辑是不应该在控制层完成的。

所以,上面的做法是错误的,也是不推荐的。

2.业务流和页面流分离

所以正确的是编写一个业务流:

上面编写了流程处理,然后就可以编写写页面流了:

当然,它也不一定都是一条线的,也可以是复杂的,比如:

页面流这里只要调用一个服务就可以,由于调用完服务,服务的结果会自动放在上下文当中,因此默认是不需要进行任何附加处理的。

3.小结

通过页面流的方式,有非常清晰的页面处理逻辑展示,更容易理解业务的处理过程。由于不用写程序,不必担心程序员在里面添加一些危险代码(在某些特殊行业这个是要严格防止的),流程即文档,可以快速生成文档。

Tiny框架中已经原生有了许多页面流组件,当然也支持激情四射的你自定义添加组件,这个会涉及到流程组件开发方面的问题,不在这一节当中详细说明了。

4.文档生成

第一步:选择向导

第二步选择要生成的文档

然后,就是看生成的文档了

技术经理完全可以通过看文档就知道程序的执行结果及程序员完成的情况。

好像有点走题哦,下次再重点介绍流程编排相关的事情。

总结

Tiny框架的控制层,提供了对象自动组装、数据校验、代码方式编写控制层、流程编排方式编写控制层等灵活多样的编写方式。真正把程序员从繁杂的工作当中解脱出来,只做自己需要做的事情。

至此,Tiny快速入门的主要四节内容已经讲了三节,回顾一下就是:

Tiny快速入门之服务开发

Tiny快速入门之Web界面快速开发实践

Tiny快速入门之控制层开发

明天将编写Tiny快速入门之流程开发,敬请期待

时间: 2024-08-28 22:52:05

Tiny快速入门之控制层开发的相关文章

HealthKit开发快速入门教程之HealthKit开发概述HealthKit简介

?HealthKit开发快速入门教程之HealthKit开发概述简介? 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为"Healthkit".本章将主要讲解HealthKit的特点.经典应用以及在开发HealthKit时的准备工作. HealthKit简介 HealthKit就是可以收集和分析用户的健康数据移动应用平台.本节将主要讲解HealthKit的特点.经典应用. HealthKit特点 本小节将主要

HealthKit开发快速入门教程之HealthKit开发概述简介

HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为“Healthkit”.本章将主要讲解HealthKit的特点.经典应用以及在开发HealthKit时的准备工作. HealthKit简介 HealthKit就是可以收集和分析用户的健康数据移动应用平台.本节将主要讲解HealthKit的特点.经典应用. HealthKit特点 本小节将主要讲解Healt

Tiny快速入门之Web界面快速开发实践

目录[-]一.寻找网站模板二.开工制作 1.编写default.layout布局文件2.编写UI组件定义文件3.编写通用宏定义4.编写业务宏5.定义演示网站布局文件6.定义相关页面首页:关于:日志:画廊:三.运行关于日志画廊联系我们四.总结前面讲了基于Tiny做服务,这篇来讲讲用Tiny怎么做界面.f 下面是一些常用的链接,供大家使用: GIT地址(必须是OSC家的):https://git.oschina.net/tinyframework/tiny问题报告:https://git.oschi

spring IOC快速入门,属性注入,注解开发

我们使用spring框架也会使用到配置文件,我们需要在src下创建一个关于spring的配置文件,一般情况名称叫applicationContext.xml 基本约束: <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> IOC快速入门 inversion of Controller

GJM : Unity3D HIAR -【 快速入门 】 八、开发云识别应用

开发云识别应用 为了解决识别图片数量限制,以及上线应用不能动态修改识别图片和 AR 内容的问题,我们在 HiAR SDK for Unity 新版本(v1.1.x 及后续版本)中集成了云识别功能.本文主要向大家介绍如何通过 HiAR SDK for Unity 来制作支持云识别的 AR 应用. 本文将介绍如何在 Windows 系统下,使用 HiAR SDK 创建一个简单的支持云识别的 AR 应用.在开始之前,请先完成下列准备工作: 注册 HiAR 帐户 获取 AppKey 和 Secret 创

[国嵌攻略][174][CGI快速入门-网页控制LED]

CGI程序(Common Gate Way Interface) 在服务器外部供服务器调用的程序,CGI程序与服务器配合后能让服务器完成更强大的功能. 1.浏览器通过HTML表单或超链接请求指向一个CGI应用程序的URL. 2.服务器收发到请求. 3.服务器执行指定所CGI应用程序. 4.CGI应用程序执行所需要的操作,通常是基于浏览者输入的内容. 5.CGI应用程序把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页). 6.网络服务器把结果返回到浏览器中. 移植CGI库 1.解

C#游戏开发快速入门教程

C#游戏开发快速入门教程 C#游戏开发快速入门 试读文档下载地址:http://pan.baidu.com/s/1eQeSl0Y C#是微软发布的高级程序设计语言,这门语言和C语言一样,已经成为了大学计算机相关专业必学的一门语言.很多初学这门语言的同学,还以为C#只能开发Windows桌面应用程序了,写写ASP.NET网站.本书将为读者纠正这种观念,使用C#一样可以开发出精彩的游戏! 学习所需的系统和软件 安装Windows 7操作系统 安装Unity 4.5.1 目  录 第1章  使用C#编

MyBatis基本介绍&amp;快速入门

一.基本介绍MyBatis是一个支持普通SQL查询.存储过程和高级映射的持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和POJO(Plain Old Java Object,普通的Java对象)映射成数据库中的记录. 二.快速入门2.1 准备开发环境1.创建测试项目,普通Java项目或JavaWeb项目均可:2.添加mybatis的jar包及MySQL驱动包:<dependencie

Python3快速入门(十七)——Python扩展模块开发

Python3快速入门(十七)--Python扩展模块开发 一.Python扩展模块 1.Python扩展模块简介 Python与C/C++交互的方案有多种,如Python C API,SWIG,SIP,ctypes,cpython,cffi,boost.python等.Python只是一个语言规范,有很多具体实现,CPython是标准Python,由C编写,Python脚本被编译成CPython字节码,然后由虚拟机解释执行,垃圾回收使用引用计数,Python与C/C++混合编程本质是基于CPy