Tiny快速入门之控制层开发


下面是一些经常使用的连接,供你们使用: java

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

官方网站:http://www.tinygroup.org 程序员

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

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

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

Tiny框架中控制层的写法能够有许多种: 网站

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

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

1、经过代码编写控制层逻辑

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.put("result", String.format("Hello, %s", name));
	}

}

解释 spa

@Controller()表示这个类是个控制层的类。
implements  WebContextAware表示,这个要类要注入Web 上下文对象。
@RequestMapping(value={"/helloByMvc.do"})表示响应/helloByMvc.do请求,注意,这个能够有多个值。

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

固然,对于上面这么简单的类子,其实不用实现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对象,本身进行组装

2、经过页面流编写控制层

1.控制层完成全部功能

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

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

因此,上面的作法是错误的,也是不推荐的。

2.业务流和页面流分离

因此正确的是编写一个业务流:


上面编写了流程处理,而后就能够编写写页面流了:

固然,它也不必定都是一条线的,也能够是复杂的,好比:

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

3.小结 

经过页面流的方式,有很是清晰的页面处理逻辑展现,更容易理解业务的处理过程。因为不用写程序,没必要担忧程序员在里面添加一些危险代码(在某些特殊行业这个是要严格防止的),流程即文档,能够快速生成文档。 

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

4.文档生成

第一步:选择向导


第二步选择要生成的文档

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

技术经理彻底能够经过看文档就知道程序的执行结果及程序员完成的状况。

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

总结

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

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

Tiny快速入门之服务开发

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

Tiny快速入门之控制层开发 

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

相关文章
相关标签/搜索