JFinal

登录 注册

service

关于service层不理解,如何正确使用,谢谢!

评论

  • 09-14 16:55
    谈一下我自己的理解吧,为了更简洁清晰的实现WEB程序的开发,实现WEB程序的智能分工,大伙就整合了一套通用的架构方式,即MVC。

    MVC提出三个概念,M-模型,数据的表示及载体,jfinal中就是各种Model类了;V-视图,数据的呈现,提供给用户的UI界面,这个根据实际需要决定如何展示;C-控制器,视图与模型连接的桥梁,纷发业务产生合适的数据(模型),传递数据给视图进行良好的展现,jfianl中就是Controller类了。

    但实际开发中,仅仅有这三者还是不够的,要开发一个完整的项目,我们还需要其他的很多模块,同时遵从MVC思想,即明确分工(分层),WEB项目中又会有数据访问层(dao层),jfianl中就是Model中的各种增删改查的方法了,同时为了处理不同的业务,还会有业务层,这就是你说的service了, jfianl的文档和demo中只是列举框架的应用,所以没给出service层,这个也不好给,每个人的业务逻辑都不同,所以jfinal鼓励根据自己的需求构建service层,有了service层后,Controller中则只负责接受request,以及返回response,什么业务都不需要处理,代码会干净很多,管理维护也更方便。

    我是这样处理的,构建一个类,用来存储通用的返回格式,controller中只负责接收参数,然后传递参数给service处理业务,service处理完返回一个通用的返回格式给controller,controller将此内容回传给客户端。如此,代码会精简很多,看起来也会更舒服,controller中类似:

    /**
    * 获取用户信息
    * url:http://localhost:8080/mate/user/getUserInfo
    */
    public void getUserInfo() {
    DefaultResponse response = UserService.service.getUserInfo(getLanguage(), getUid());
    renderJson(response);
    }

    service中类似:
    public DefaultResponse getUserInfo(int language, long uid) {
    if (uid == 0) {
    logger.error(getMsg(uid, "need_login"));
    return fail(language, ReturnCode.NEED_LOGIN, "need_login");
    }

    User user = User.dao.findById(uid);
    user.remove("password");//去除不需要回传的字段

    return success(user);
    }
    等等。
  • 09-18 10:30
    加入俱乐部,不仅可以拥有俱乐部的网站源码,学到很多姿势,更重要的,波总的直播讲义和俱乐部小伙伴们的热心,绝对的最高性价比!
  • 09-20 14:32
    @aloneJFinal 非常感谢您的指点哦!
  • 发送