Tiny快速入门之控制层开发

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

1.代码示例

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

@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.put("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接口,这个时候的写法如下:

?


1

2

3

4

5

6

7

8

9

10

11

12

@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);

 }

}

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

?


1

2

3

4

5

6

7

8

9

@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-12-13 05:38:01

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

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

本来想改改OSChina的界面,但是研究了一下,OSChina界面实在是高大上呀,不是做不出来,只是工作量比较大,因此还是做个简单的网站来展示一下用Tiny开发界面的过程,同时在展示过程的同时,会把相关的知识做一个充分的介绍 . 一.寻找网站模板 要做网站,不能没有模板,自己不会做网页设计,咋办?问谷歌找百度呗,找了一阵,看到下面这个模板不错,就它了. http://www.tooplate.com/zip_files/2042_the_block.zip 相仔细了解这篇文章的同学,建议把原板的

Tiny快速入门之服务开发

一.服务的定义 Tiny中的服务与Spring中的Service的概念是不一样的,这里的服务是有确定的输入和输出,有唯一标识,并且在处理上具有原子性的一种处理逻辑.它与Java中的一个方法是有对应关系的,与类或接口无关.另外,这里的服务是无状态的,也就是说它是没有会话保持等相关性的,你不能期望第一次调用的时候传入一个用户ID,以后的访问就是针对这个用户的处理了,而是应该每次都传入要处理用户的ID及其它数据. Tiny中的服务具有跨域特性,也就是说一旦你把一个方法发布成一个服务,当用服务的方式调用

06Vue.js快速入门-Vue组件化开发

组件其实就是一个拥有样式.动画.js逻辑.HTML结构的综合块.前端组件化确实让大的前端团队更高效的开发前端项目.而作为前端比较流行的框架之一,Vue的组件和也做的非常彻底,而且有自己的特色.尤其是她单文件组件开发的方式更是非常方便,而且第三方工具支持也非常丰富,社区也非常活跃,第三方组件也呈井喷之势.当然学习和使用Vue的组件也是我们的最重要的目标. 6.1. 全局扩展方法Vue.extend Vue提供了一个全局的API,Vue.extend可以帮助我们对Vue实例进行扩展,扩展完了之后,就

Mybatis 开发注解快速入门_java

快速普及 1.mybatis是什么       mybatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.       MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. Mybatis实现了接口绑定,使用更加方便. 对象关系映射的改进,效率更高 MyBatis采用功能强大

Spring MVC 开发快速入门

快速入门 这篇文章将教你快速地上手使用 Spring 框架,如果你手上有一本<Spring in Action>, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求

《Python 3程序开发指南(第2版•修订版)》——第1章 过程型程序设计快速入门 1.1 创建并运行Python程序

第1章 过程型程序设计快速入门 本章提供了足以开始编写Python程序的信息.如果此时尚未安装Python,强烈建议读者先行安装Python,以便随时进行编程实践,获取实际经验,巩固所学的内容. 本章第1节展示了如何创建并执行Python程序.你可以使用自己最喜欢的普通文本编辑器来编写Python代码,但本节中讨论的IDLE程序设计环境提供的不仅是一个代码编辑器,还提供了很多附加的功能,包括一些有助于测试Python代码.调试Python程序的工具. 第2节介绍了Python的8个关键要素,通过

《R语言游戏数据分析与挖掘》一2.1 开发环境准备和快速入门

2.1 开发环境准备和快速入门 2.1.1 R语言简介 R语言的前身是S语言,S语言是由AT &T Bell实验室的Rick Becker.John Chambers和Allan Wilks开发的一种用来进行数据探索.统计分析.作图的解释型语言.最初S语言的实现版本主要是S-PLUS.S-PLUS是一个商业软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善.而R语言最初由来自新西兰大学的Ross Ihaka和Robert Gentleman开发(由于他们的名字都以R开头,所以该软

《iOS9开发快速入门》——第1章,第1.1节iOS 9新特性

1.1 iOS 9新特性 iOS9开发快速入门 2015年6月,苹果公司发布了最新的iOS 9操作系统,该系统在上一版的基础上做了很多的改进.本节将讲解iOS 9带来的新特性以及改进. 1.1.1 Siri语音助手智能化 Siri语音助手的智能性能主要表现在强大的内容检索和管理方面,支持快速自动整理历史文档:根据使用场景的不同,为用户提供内容和服务:来电联系人匹配,相关内容推荐甚至是第三方应用的内容检索.具体到使用场景方面,Siri可以自动整理历史照片.联系人历史邮件往来.健身应用下接入电源开启

led-cc3200如何快速入门,比如说简单控制LED

问题描述 cc3200如何快速入门,比如说简单控制LED 用CC3200如何控制LED闪烁?把历程example的Timer.exe用CCS uniflash烧录进CC3200,打开串口助手,但是一点反应都没有