请教一下jfinal每层的作用问题。

chi_9 发布于 2014/09/24 12:27
阅读 1K+
收藏 4

虽然代码怎么写都能达到最终的目的,但是日后肯定是乱七八糟的,所以请教 @JFinal 一下,jfinal怎么分层的。

我先说说我的理解,

那用户注册举例:

1.是否是Validator 验证 用户名、密码等一系列是否为空,并且访问数据库验证的用户名是否重复也在Validator中验证

2.Controller 中是不是就是一个service  ,做一个逻辑处理,如 在表A插入新用户数据,在表B做权限分配,表C等等等

3.Model中 就只是具体的功能实现,如插入等等。。。。

感谢解答……

@JFinal

加载中
0
JFinal
JFinal

    JFinal 项目通常建议至少 MVC 三层,Controller 是控制层,只做这几件事:

1:使用 getPara 系列方法获取请求参数

2:使用得到的 para 做为参数(如果有需要的话),调用业务层

3:将业务层调用的结果利用 setAttr 存入 request

4:render

    Model 是业务层,除了封装业务以外主要注意如下几点:

1:sql 通常需要写在业务层,controller 中不要写 sql

2:可以根据引入单独的业务层

3:Model 中的业务方通常不要是 static 方法,业务通常是对当前对象而言的,而非全局。例如有个订单 model为 Order,那么判断该订单是否已经支付则为  order.isPaid(),而非 Order.isPaid(order)

    View 是视图层,主要注意如下问题:

1:只读取并展现数据,绝对不要有业务逻辑,也不要有复杂的逻辑控制

2:当展现逻辑很复杂时,可以建立相应的 Helper 类来辅助生成 String

3:对于通用的view层辅助类,可以创建通用的工具类,全局共享使用

4:界面布局一定要使用 layout,极大减少代码冗余提升开发效率,具体可见jfinal_demo项目

   Validator 可以当做是独立于 MVC 之外的一层,起安全保护作用。访问数据库时验证用户是否重复属于业务层的事。

    关于项目模块简单划分方式:

1:根据需求设计好数据库表

2:通常根据数据库表建好相应的包以及类,例如有 user、blog两张表,那么建好 com.xxx.user、com.xxx.blog两个包,然后在各自的包下建好UserController、User、BlogController、Blog等等类。

3:访问的路由正好是表名: "/user" 、"/blog",这正好是 restful 风格。

4:对于不存在表名但需要的功能,可以抽象出资源名,然后做 controller、model


0
龙影
龙影

首先Controller只是一个控制层,不是一个service。

jfinal提供自由的编码,一般数据及业务处理放置在Model中,当然你也可以自己独立出一个service类提供。

返回顶部
顶部