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快速入门之流程开发,敬请期待

相关文章
|
9月前
|
机器学习/深度学习 人工智能 测试技术
11种开源即插即用模块汇总 !!(附论文和代码)
11种开源即插即用模块汇总 !!(附论文和代码)
460 1
|
9天前
|
机器学习/深度学习 资源调度 计算机视觉
RT-DETR改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例
RT-DETR改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例
35 2
RT-DETR改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例
|
9天前
|
机器学习/深度学习 计算机视觉 网络架构
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
95 63
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
|
9天前
|
机器学习/深度学习 编解码 测试技术
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 2024轻量化网络MoblieNetV4:移动生态系统的通用模型
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 2024轻量化网络MoblieNetV4:移动生态系统的通用模型
40 4
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 2024轻量化网络MoblieNetV4:移动生态系统的通用模型
|
13天前
|
机器学习/深度学习 计算机视觉 网络架构
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
56 19
|
3月前
|
并行计算 监控 搜索推荐
使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程
当处理大规模图数据时,复杂性难以避免。PyTorch-BigGraph (PBG) 是一款专为此设计的工具,能够高效处理数十亿节点和边的图数据。PBG通过多GPU或节点无缝扩展,利用高效的分区技术,生成准确的嵌入表示,适用于社交网络、推荐系统和知识图谱等领域。本文详细介绍PBG的设置、训练和优化方法,涵盖环境配置、数据准备、模型训练、性能优化和实际应用案例,帮助读者高效处理大规模图数据。
82 5
|
4月前
|
机器学习/深度学习 人工智能 文字识别
ultralytics YOLO11 全新发布!(原理介绍+代码详见+结构框图)
本文详细介绍YOLO11,包括其全新特性、代码实现及结构框图,并提供如何使用NEU-DET数据集进行训练的指南。YOLO11在前代基础上引入了新功能和改进,如C3k2、C2PSA模块和更轻量级的分类检测头,显著提升了模型的性能和灵活性。文中还对比了YOLO11与YOLOv8的区别,并展示了训练过程和结果的可视化
4288 0
|
9月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch中的自定义层与模块开发
【4月更文挑战第18天】PyTorch教程:通过继承`nn.Module`创建自定义层和模块。自定义层需实现`__init__`(初始化参数)和`forward`(前向传播逻辑)方法。示例代码展示了一个简单的`CustomLinear`层和包含该层及ReLU激活的`CustomModule`。自定义模块可组合多个层,如`SimpleNet`模型中使用两个`CustomModule`。这使得构建满足特定需求的复杂神经网络成为可能。
|
9月前
|
机器学习/深度学习 存储 算法
【一起撸个DL框架】2 节点与计算图的搭建
2 节点与计算图的搭建 🍒 2.1 简介 上一篇:【一起撸个DL框架】1 绪论 这一节将动手搭建一个简单的“计算图”,并在其上进行计算。
106 0
|
NoSQL 定位技术 数据库
ArcGIS Pro中的模型构建器演示
ArcGIS Pro的模型构建器在功能上相较于大致没有什么改动,主要是界面上变得相对漂亮,流程中使用了一些半透明的效果,相较于arcmap中的模型构建器,可以说是颜值进化很大了。 接下来我会以教程案例一中的案例来构建模型,没看过的同学可以去看看教程案例一
245 0

热门文章

最新文章